Python基于pytorch编写三层全连接神经网络, 三层的维度分别是64,128,64,激活函数sigmoid,学习率 0.001,生成规模10000的数据集,每个样本包含10个特征,实现回归问题
时间: 2024-05-02 10:21:53 浏览: 6
以下是代码实现:
```python
import torch
import torch.nn as nn
import torch.optim as optim
import numpy as np
# 设置随机种子
torch.manual_seed(2021)
np.random.seed(2021)
# 定义神经网络模型类
class Net(nn.Module):
def __init__(self):
super(Net, self).__init__()
self.fc1 = nn.Linear(10, 64)
self.fc2 = nn.Linear(64, 128)
self.fc3 = nn.Linear(128, 64)
self.fc4 = nn.Linear(64, 1)
self.sigmoid = nn.Sigmoid()
def forward(self, x):
x = self.sigmoid(self.fc1(x))
x = self.sigmoid(self.fc2(x))
x = self.sigmoid(self.fc3(x))
x = self.fc4(x)
return x
# 生成数据集
X = np.random.randn(10000, 10)
y = np.random.randn(10000, 1)
# 转换为tensor
X = torch.from_numpy(X).float()
y = torch.from_numpy(y).float()
# 定义模型、优化器、损失函数
net = Net()
optimizer = optim.Adam(net.parameters(), lr=0.001)
criterion = nn.MSELoss()
# 开始训练
for epoch in range(100):
optimizer.zero_grad()
outputs = net(X)
loss = criterion(outputs, y)
loss.backward()
optimizer.step()
print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, 100, loss.item()))
# 测试模型
test_X = np.random.randn(10, 10)
test_X = torch.from_numpy(test_X).float()
with torch.no_grad():
test_y = net(test_X)
print('预测结果:', test_y)
```
这里使用了均方误差(MSE)作为损失函数,Adam作为优化器。训练过程中,每个epoch都会输出当前的loss值。最后,我们使用模型对生成的10个样本进行了预测,并输出了预测结果。
注意:实际问题中,数据集应该根据实际情况进行选择,这里仅是为了演示。