行业资讯
15.初识Pytorch反向传播(Backward)与优化器(optimizer)SGD
以下是一个简单的PyTorch反向传播的例子:
```python
import torch
# 定义输入和输出
x=torch.tensor([1.0, 2.0, 3.0, 4.0], requires_grad=True)
y=torch.tensor([2.0, 4.0, 6.0, 8.0], requires_grad=True)
# 定义模型
w=torch.tensor([0.0, 0.0, 0.0, 0.0], requires_grad=True)
b=torch.tensor(0.0, requires_grad=True)
# 定义损失函数
loss_fn=torch.nn.MSELoss()
# 定义优化器
optimizer=torch.optim.SGD([w, b], lr=0.01)
# 训练模型
for epoch in range(100):
# 前向传播
y_pred=torch.dot(w, x) + b
loss=loss_fn(y_pred, y)
# 反向传播
loss.backward()
# 更新参数
optimizer.step()
# 清空梯度
optimizer.zero_grad()
# 输出最终结果
print("w=", w)
print("b=", b)
```
该例子中,我们定义了一个简单的线性模型,使用均方误差作为损失函数,使用随机梯度下降作为优化器。在训练过程中,我们首先进行前向传播计算出预测值,然后计算损失并进行反向传播,最后更新模型参数。最终输出训练得到的参数w和b。