pytorch之trainer.zero_grad()

  • 在下面的代码中,在每次l.backward()前都要trainer.zero_grad(),否则梯度会累加。
num_epochs = 3
for epoch in range(num_epochs):
    for X, y in data_iter:
        l = loss(net(X), y)
        trainer.zero_grad()
        l.backward()
        trainer.step()
    l = loss(net(features), labels)
    print(f'epoch {epoch + 1}, loss {l:f}')
  • trainer.step()在参数迭代的时候是如何知道batch_size的?
    因为loss = nn.MSELoss(),均方误差是对样本总量平均过得到的,所以trainer.step()使用的是平均过的grad。
    参考资料:
  1. https://zh-v2.d2l.ai/chapter_linear-networks/linear-regression-concise.html

你可能感兴趣的:(深度学习算法)