pytorch 中的简单回归模型:这段代码有哪些潜在问题?

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

如果有的话,这段代码可能存在哪些问题?

训练时好像没有

optimizer.zero_grad()

import torch
import torch.nn as nn
import torch.optim as optim
import pdb


model = nn.Linear(10, 1)


criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)


x = torch.randn(100, 10)
y = torch.randn(100, 1)


for i in range(100):
    outputs = model(x)
    loss = criterion(outputs, y)
    loss.backward()
    optimizer.step()
deep-learning pytorch
1个回答
0
投票

是的,你没看错。这是一个重要的步骤;否则,梯度会在反向传播时从一次迭代累积到另一次迭代,从而显示错误的结果。要解决这个问题,您只需在反向传播之前将梯度设为零即可。见下图:

for i in range(100):
    outputs = model(x)
    loss = criterion(outputs, y)
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
© www.soinside.com 2019 - 2024. All rights reserved.