使用pytorch构建bp神经网络代码
时间: 2024-10-10 22:07:30 浏览: 34
在PyTorch中,构建BP(Backpropagation)神经网络也非常直观,下面是一个基本的例子,用于全连接网络的二分类任务:
```python
import torch
import torch.nn as nn
import torch.optim as optim
# 假设输入数据x和目标标签y已经准备好
x = ... # 输入数据
y = ... # 目标数据 (1-hot编码)
# 定义神经网络模型
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.fc1 = nn.Linear(x.size()[1], 16) # 第一层全连接
self.relu = nn.ReLU() # 激活函数
self.fc2 = nn.Linear(16, 8) # 第二层全连接
self.out = nn.Linear(8, 2) # 输出层
def forward(self, x):
x = self.fc1(x)
x = self.relu(x)
x = self.fc2(x)
x = self.relu(x)
x = self.out(x)
return x
net = Net()
# 设置损失函数和优化器
criterion = nn.CrossEntropyLoss() # 对于多分类问题
optimizer = optim.SGD(net.parameters(), lr=0.001) # 使用随机梯度下降
# 假设训练过程是循环的,每一步都有一个forward pass, backward pass 和 optimize step
for epoch in range(num_epochs):
optimizer.zero_grad() # 清零梯度
outputs = net(x) # 前向传播
loss = criterion(outputs, y) # 计算损失
loss.backward() # 反向传播
optimizer.step() # 更新权重
# 测试模型
outputs = net(x_test)
_, predicted = torch.max(outputs.data, 1)
total = y_test.size(0)
correct = (predicted == y_test).sum().item()
accuracy = correct / total
阅读全文