使用更简化的方法(内存方式)编辑此答案。您必须配置每个参数以累积渐变,运行4个前向传递,向后运行,然后手动将渐变归零。
按照 https://discuss.mxnet.io/t/aggregate-gradients-manually-over-n-batches/504/2
“这对Gluon非常简单。您需要将网络参数实例中的grad_req设置为'add',并在每个Trainer.step()之后使用zero_grad()手动将渐变设置为零(请参阅 这里 )。要将grad_req设置为'add':
for p in net.collect_params().values(): p.grad_req = 'add'
“并且在调用Trainer.step()之后,同样在每个参数上调用zero_grad()。记得相应地修改trainer.step()的batch_size参数。”
Vishaal