Python torch 单输入 单输出 BP神经网络
时间: 2023-07-12 11:35:22 浏览: 93
下面是一个使用 PyTorch 实现单输入单输出 BP 神经网络的示例:
```python
import torch
import torch.nn as nn
import torch.optim as optim
# 定义单输入单输出的神经网络
class Net(nn.Module):
def __init__(self, input_size, hidden_size, output_size):
super(Net, self).__init__()
self.fc1 = nn.Linear(input_size, hidden_size)
self.relu = nn.ReLU()
self.fc2 = nn.Linear(hidden_size, output_size)
def forward(self, x):
out = self.fc1(x)
out = self.relu(out)
out = self.fc2(out)
return out
# 定义网络参数
input_size = 10
hidden_size = 20
output_size = 1
# 实例化网络
net = Net(input_size, hidden_size, output_size)
# 定义输入数据和输出数据
input_data = torch.randn(1, input_size)
output_data = torch.randn(1, output_size)
# 定义损失函数和优化器
criterion = nn.MSELoss()
optimizer = optim.SGD(net.parameters(), lr=0.01)
# 训练网络
for epoch in range(100):
# 前向传播
output = net(input_data)
# 计算损失
loss = criterion(output, output_data)
# 反向传播
optimizer.zero_grad()
loss.backward()
optimizer.step()
# 打印损失
print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, 100, loss.item()))
# 测试网络
test_input = torch.randn(1, input_size)
test_output = net(test_input)
print('Test Input: {}\nTest Output: {}'.format(test_input, test_output))
```
在这个示例中,我们使用了 PyTorch 自带的优化器 SGD 和损失函数 `nn.MSELoss`。在训练过程中,我们通过反向传播更新网络的权重和偏置,直到网络的损失函数收敛到一个较小的值。在训练完成后,我们使用测试数据测试网络的性能。
阅读全文