pytorch环境cnn序列回归代码,并画出回归图
时间: 2024-05-16 21:13:18 浏览: 16
以下是一个使用PyTorch环境实现的CNN序列回归代码示例:
```python
import torch
import torch.nn as nn
import torch.optim as optim
import matplotlib.pyplot as plt
# 构建数据集
x = torch.randn(100, 1, 10)
y = torch.randn(100, 1)
# 构建模型
class CNN(nn.Module):
def __init__(self):
super(CNN, self).__init__()
self.conv1 = nn.Conv1d(1, 16, 3)
self.pool1 = nn.MaxPool1d(2)
self.conv2 = nn.Conv1d(16, 32, 3)
self.pool2 = nn.MaxPool1d(2)
self.fc1 = nn.Linear(32 * 2, 64)
self.fc2 = nn.Linear(64, 1)
def forward(self, x):
x = self.pool1(torch.relu(self.conv1(x)))
x = self.pool2(torch.relu(self.conv2(x)))
x = x.view(-1, 32 * 2)
x = torch.relu(self.fc1(x))
x = self.fc2(x)
return x
model = CNN()
# 定义损失函数和优化器
criterion = nn.MSELoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)
# 训练模型
num_epochs = 1000
losses = []
for epoch in range(num_epochs):
# 前向传播
y_pred = model(x)
# 计算损失
loss = criterion(y_pred, y)
losses.append(loss.item())
# 反向传播和优化
optimizer.zero_grad()
loss.backward()
optimizer.step()
# 绘制回归图
y_pred = model(x).detach().numpy()
plt.scatter(y.detach().numpy(), y_pred)
plt.xlabel('True Values')
plt.ylabel('Predictions')
plt.show()
```
上述代码中,我们首先构建了一个简单的CNN模型,然后定义了MSELoss损失函数和Adam优化器,接着进行了1000轮的训练,并记录了训练过程中的损失值。最后,我们使用训练好的模型进行预测,并绘制了回归图,其中x轴表示真实值,y轴表示预测值。