用pytorch写一个BP神经网络的代码
时间: 2024-05-09 22:15:43 浏览: 115
好的,以下是一个使用PyTorch实现的简单BP神经网络的代码示例:
```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(2, 5)
self.fc2 = nn.Linear(5, 1)
def forward(self, x):
x = torch.sigmoid(self.fc1(x))
x = torch.sigmoid(self.fc2(x))
return x
# 定义数据和标签
X = torch.tensor([[0, 0], [0, 1], [1, 0], [1, 1]], dtype=torch.float)
y = torch.tensor([[0], [1], [1], [0]], dtype=torch.float)
# 实例化模型和损失函数
net = Net()
criterion = nn.MSELoss()
optimizer = optim.SGD(net.parameters(), lr=0.1)
# 训练模型
for epoch in range(10000):
optimizer.zero_grad()
outputs = net(X)
loss = criterion(outputs, y)
loss.backward()
optimizer.step()
if epoch % 1000 == 0:
print('Epoch {}, Loss: {:.4f}'.format(epoch, loss.item()))
# 测试模型
with torch.no_grad():
test_input = torch.tensor([[0, 0], [0, 1], [1, 0], [1, 1]], dtype=torch.float)
test_output = net(test_input)
print('Test Output:', test_output)
```
这个代码实现了一个简单的2层神经网络,输入层有2个节点,隐藏层有5个节点,输出层有1个节点。使用均方误差作为损失函数,使用随机梯度下降算法进行优化。通过训练,模型可以学习到异或运算的规律。最后,使用训练好的模型对测试数据进行预测,输出预测结果。
阅读全文