用pytorch写一个反向传播神经网络
时间: 2024-05-11 20:19:24 浏览: 14
好的,以下是一个简单的反向传播神经网络的实现,使用PyTorch:
```python
import torch
# 定义神经网络
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.nn.functional.relu(self.fc1(x))
x = self.fc2(x)
return x
# 创建模型和优化器
net = Net()
optimizer = torch.optim.SGD(net.parameters(), lr=0.01)
# 训练模型
for i in range(100):
# 前向传播
x = torch.randn(10)
y_pred = net(x)
# 计算损失并反向传播
y_true = torch.randn(1)
loss = torch.nn.functional.mse_loss(y_pred, y_true)
loss.backward()
# 更新权重
optimizer.step()
optimizer.zero_grad()
# 输出损失
print(loss.item())
```
这个神经网络包含一个输入层、一个隐藏层和一个输出层。每层都是全连接层。在训练过程中,我们使用随机生成的数据来计算损失并进行反向传播,最后更新权重。