使用pytorch写一段BP神经网络预测代码 输入是5维,输出1维
时间: 2024-09-17 09:05:04 浏览: 77
在PyTorch中,我们可以使用`nn.Module`类来创建一个简单的前馈神经网络(Feedforward Neural Network),用于5维输入预测1维输出。以下是一个基本的BP(反向传播)神经网络模型的示例:
```python
import torch
import torch.nn as nn
class SimpleNN(nn.Module):
def __init__(self, input_dim=5, hidden_dim=10, output_dim=1):
super(SimpleNN, self).__init__()
self.fc1 = nn.Linear(input_dim, hidden_dim) # 第一层全连接层
self.relu = nn.ReLU() # 激活函数
self.fc2 = nn.Linear(hidden_dim, output_dim) # 输出层
def forward(self, x):
out = self.fc1(x)
out = self.relu(out)
prediction = self.fc2(out)
return prediction
# 初始化模型
model = SimpleNN()
# 假设我们有一个大小为(批量大小, 5)的输入数据 tensor
input_data = torch.randn((batch_size, 5))
# 前向传播计算预测值
output = model(input_data)
# 对于回归任务,通常直接使用均方误差(MSE)作为损失函数
loss_fn = nn.MSELoss()
loss = loss_fn(output, target_tensor) # 将实际标签替换为 'target_tensor'
# 反向传播更新权重
optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)
optimizer.zero_grad()
loss.backward()
optimizer.step()
```
在这个例子中,`fc1` 和 `fc2` 分别代表输入到隐藏层和隐藏层到输出层的线性变换,ReLU激活函数用于引入非线性。在训练过程中,我们首先计算预测值,然后计算实际输出和预测之间的MSE,最后通过反向传播算法调整模型参数。
阅读全文