Python基于pytorch编写三层全连接神经网络, 三层的维度分别是64,128,64,激活函数sigmoid,学习率 0.001,生成规模10000的数据集,每个样本包含10个特征,实现回归问题
时间: 2024-05-13 18:21:04 浏览: 196
python分别实现基于神经网络、线性回归、SVM方法预测学生成绩源码+数据集.zip
5星 · 资源好评率100%
以下是基于PyTorch编写的三层全连接神经网络,用于回归问题的实现:
```python
import torch
import torch.nn as nn
import torch.optim as optim
import numpy as np
# 生成数据集
data = np.random.rand(10000, 10)
target = data.sum(axis=1, keepdims=True)
# 转换为Tensor
data = torch.from_numpy(data).float()
target = torch.from_numpy(target).float()
# 定义神经网络
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
net = Net()
# 定义损失函数和优化器
criterion = nn.MSELoss()
optimizer = optim.SGD(net.parameters(), lr=0.001)
# 训练神经网络
for epoch in range(100):
running_loss = 0.0
for i in range(data.size(0)):
optimizer.zero_grad()
outputs = net(data[i])
loss = criterion(outputs, target[i])
loss.backward()
optimizer.step()
running_loss += loss.item()
print('Epoch %d loss: %.3f' % (epoch + 1, running_loss / data.size(0)))
# 测试神经网络
test_data = torch.from_numpy(np.random.rand(10, 10)).float()
test_outputs = net(test_data)
print('Test outputs:', test_outputs)
```
在上面的代码中,我们首先生成了10000个样本,每个样本包含10个特征,并将它们的和作为目标值。然后我们定义一个三层全连接神经网络,每层分别包含64、128和64个神经元。我们使用sigmoid激活函数,并将输出层的神经元数设置为1,因为这是回归问题。我们使用均方误差作为损失函数,使用随机梯度下降作为优化器,并将学习率设置为0.001。我们训练神经网络100次,每次训练使用一个样本,并在每个epoch结束时打印训练损失。最后,我们使用神经网络进行了一个简单的测试,生成了10个随机样本,并输出了它们的预测值。
阅读全文