用神经网络回归模型并划分训练集和测试集的代码
时间: 2023-10-08 18:10:27 浏览: 142
下面是使用PyTorch实现神经网络回归模型并划分训练集和测试集的代码:
```python
import torch
import torch.nn as nn
import numpy as np
from sklearn.model_selection import train_test_split
# 构造数据集
X = np.random.rand(100, 1)
y = 3 * X + 2 + 0.2 * np.random.rand(100, 1)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 转换为张量
X_train = torch.from_numpy(X_train).float()
y_train = torch.from_numpy(y_train).float()
X_test = torch.from_numpy(X_test).float()
y_test = torch.from_numpy(y_test).float()
# 定义神经网络模型
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.fc1 = nn.Linear(1, 10)
self.fc2 = nn.Linear(10, 1)
def forward(self, x):
x = torch.relu(self.fc1(x))
x = self.fc2(x)
return x
# 实例化神经网络模型
net = Net()
# 定义损失函数和优化器
criterion = nn.MSELoss()
optimizer = torch.optim.SGD(net.parameters(), lr=0.01)
# 训练神经网络模型
for epoch in range(1000):
optimizer.zero_grad()
outputs = net(X_train)
loss = criterion(outputs, y_train)
loss.backward()
optimizer.step()
# 在测试集上评估神经网络模型
with torch.no_grad():
y_pred = net(X_test)
test_loss = criterion(y_pred, y_test)
print('Test loss:', test_loss.item())
```
以上代码中,首先构造了一个简单的数据集,然后使用`train_test_split`函数将数据集划分为训练集和测试集。接着将数据集转换为PyTorch张量,并定义了一个包含一个隐藏层的神经网络模型。然后定义了损失函数和优化器,使用训练集训练神经网络模型。最后使用测试集评估神经网络模型的性能。
阅读全文