sgd torch
时间: 2023-07-03 21:20:11 浏览: 158
SGD(Stochastic Gradient Descent)是深度学习中常用的一种优化算法,用于更新神经网络中的参数。在 PyTorch 中,可以使用 torch.optim.SGD 类来实现 SGD 算法。下面是一个使用 SGD 在 PyTorch 中训练神经网络的示例代码:
```python
import torch
import torch.nn as nn
import torch.optim as optim
# 定义神经网络模型
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.fc1 = nn.Linear(10, 5)
self.fc2 = nn.Linear(5, 1)
self.relu = nn.ReLU()
def forward(self, x):
x = self.relu(self.fc1(x))
x = self.fc2(x)
return x
# 定义训练数据和标签
inputs = torch.randn(100, 10)
labels = torch.randn(100, 1)
# 初始化神经网络模型和优化器
net = Net()
optimizer = optim.SGD(net.parameters(), lr=0.1)
# 训练神经网络
for epoch in range(100):
optimizer.zero_grad()
outputs = net(inputs)
loss = nn.functional.mse_loss(outputs, labels)
loss.backward()
optimizer.step()
print('Epoch %d, Loss: %.4f' % (epoch+1, loss.item()))
```
在上面的代码中,Net 类定义了一个简单的神经网络模型,输入维度为 10,输出维度为 1。训练数据 inputs 和标签 labels 都是随机生成的。optim.SGD 类的参数是神经网络模型的参数,lr 表示学习率。在每个 epoch 中,先将优化器的梯度清零,然后计算模型输出和标签之间的均方误差损失,通过反向传播更新模型参数。最后输出当前 epoch 的损失。
阅读全文