![](/img/trans.png)
[英]How to calculate the number of epochs based on the size of training dataset, batch_size and the number of training steps?
[英]Training MXNet with large batch size and small number of GPUs
在训练MXNet时,如果批处理量很大(比如说128),而GPU的数量很小(比如说2),则每个GPU每次迭代只能处理几个样本(比如说16)。 默认情况下,此配置的最大批处理大小为16 * 2 = 32。
从理论上讲,我们可以在更新权重之前运行4次迭代,以使有效批大小为128。使用MXNet可以做到这一点吗?
使用更简化的方法(在内存方面)编辑此答案。 您必须配置每个参数以累积梯度,运行4个正向传递,反向运行,然后手动将梯度归零。
根据https://discuss.mxnet.io/t/aggregate-gradients-manually-over-n-batches/504/2
“使用Gluon非常简单。您需要在网络Parameter实例中将grad_req设置为'add',并在每个Trainer.step()之后使用zero_grad()将梯度手动设置为零(请参见此处 )。 grad_req为“添加”:
for p in net.collect_params().values():
p.grad_req = 'add'
“并且类似地,在调用Trainer.step()之后,对每个参数调用zero_grad()。记住要相应地修改trainer.step()的batch_size参数。”
Vishaal
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.