Adam优化方法中的恒定损失值

问题描述 投票:0回答:1

我有用 pytorch 编写的 NN 代码。在损失值计算中,当代码使用 Adam 优化方法时,损失值在循环期间不会改变,而 LBGFS 优化方法则一切正常,损失值以正常方式减少。我怎样才能摆脱这个问题?

    for epo in range(epo_adam):
model.train()
optimizer_adam.zero_grad()
loss , momentum_loss , loss_data , loss_BC , continuity_loss = adop_loss_Weight(model, x, y, z, u_exact, v_exact , w_exact , p_exact ,
           x_b, y_b, z_b, u_b, v_b, w_b ,p_b)
loss.backward()
if epo %500 == 0:
  print(f'Epoch Adam {epo}, Total Loss: {loss.item():.10f}')
if loss.item() <=0.15 :
  print("Optimzation Method is swtiching to LBGF-S . . . ")
  break


for epochs in range(epochs):
model.train()
loss = optimizer.step(closure)

if epochs % 20 == 0:
    print(f'Epoch LBGF-s {epochs}, Total Loss: {loss.item():.5f}')
    #print(f'The highest Loss is:  {max(momentum_loss.item() , continuity_loss.item() , loss_data.item() , loss_bc.item()):.6f}')
    #print(time.time())

我进行了很多搜索,但找不到任何解决方案。我认为 Adam 优化中的恒定损失值是不合理的!

python pytorch neural-network
1个回答
0
投票

这里的问题是缺少对

optimizer_adam.step()
的调用,因此计算梯度后权重没有更新。

© www.soinside.com 2019 - 2024. All rights reserved.