【发布时间】:2020-05-05 10:02:07
【问题描述】:
我试图更改我的优化器,但首先,我想检查以下两个代码是否给出相同的结果:
optimizer = optim.Adam(params, lr)
for epoch in range(500):
....
optimizer.zero_grad()
loss.backward()
optimizer.step()
for epoch in range(500):
....
optimizer.zero_grad()
loss.backward()
optimizer.step()
如果我在“for 循环”之间插入相同的优化器,
optimizer = optim.Adam(params, lr)
for epoch in range(500):
....
optimizer.zero_grad()
loss.backward()
optimizer.step()
optimizer = optim.Adam(params, lr)
for epoch in range(500):
....
optimizer.zero_grad()
loss.backward()
optimizer.step()
结果变坏了。为什么会发生这种情况?优化器不只是从损失中接收梯度并像步骤一样操作梯度下降吗?
【问题讨论】:
标签: python optimization pytorch