optim.SGD怎么使用
时间: 2024-01-15 13:14:26 浏览: 29
optim.SGD是PyTorch提供的一个随机梯度下降(Stochastic Gradient Descent,SGD)优化器,可以用来更新神经网络的权重。使用步骤如下:
1.导入相关的库
```python
import torch
import torch.optim as optim
```
2.定义网络结构和损失函数
```python
# 定义网络结构
class Net(torch.nn.Module):
def __init__(self):
super(Net, self).__init__()
self.fc1 = torch.nn.Linear(10, 5)
self.fc2 = torch.nn.Linear(5, 1)
def forward(self, x):
x = torch.sigmoid(self.fc1(x))
x = self.fc2(x)
return x
# 定义损失函数
criterion = torch.nn.MSELoss()
```
3.定义训练数据和目标值
```python
# 定义训练数据和目标值
x_train = torch.randn(100, 10)
y_train = torch.randn(100, 1)
```
4.初始化优化器
```python
# 初始化优化器
optimizer = optim.SGD(net.parameters(), lr=0.01)
```
5.训练模型
```python
# 训练模型
for epoch in range(100):
# 前向传播
y_pred = net(x_train)
# 计算损失
loss = criterion(y_pred, y_train)
# 反向传播
optimizer.zero_grad()
loss.backward()
optimizer.step()
# 打印损失
print('Epoch {}: Loss = {}'.format(epoch, loss.item()))
```
在训练过程中,每个epoch需要执行以下步骤:
1.将输入数据传入网络进行前向传播,得到输出结果。
2.计算输出结果和目标值之间的损失。
3.使用backward()函数进行反向传播,计算梯度。
4.使用优化器的step()函数更新权重。
5.打印损失。
注意,在使用SGD优化器时,需要传入网络的参数(net.parameters())和学习率(lr)两个参数。可以根据需要调整学习率和其他超参数。