承接上文,我们使用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