承接上文,我们使用Sequential改造了神经网络结构,但是更新权重参数依然很麻烦,其实Pytorch中也有更新权重参数的类,而且还会使用一些策略,加快模型收敛,在前面文章《深度学习中的优化算法Optimizer比较和总结》总体介绍过,本文结合这些算法,再次优化代码。
代码示例
import torch
import torch.nn as nn
N, D_in, H, D_out = 64, 1000, 100, 10
x = torch.randn(N, D_in)
y = torch.randn(N, D_out)
model = nn.Sequential(
nn.Linear(D_in, H),
nn.ReLU(H),
nn.Linear(H, D_out),
)
lr = 1e-4
loss_fn = torch.nn.MSELoss(reduction='sum')
# 定义优化器
optimizer = torch.optim.Adam(model.parameters(), lr=lr)
for i in range(500):
y_hat = model(x)
loss = loss_fn(y_hat, y)
print(i, loss.item())
loss.backward()
optimizer.step()
# 更新权重参数
optimizer.zero_grad()
本文为 陈华 原创,欢迎转载,但请注明出处:http://ichenhua.cn/read/310