PyTorch 前馈神经网络设计:构建三层网络并训练自定义数据
首先需要导入必要的库:
import torch
import torch.nn as nn
import torch.optim as optim
接下来,可以定义一个前馈神经网络模型,例如:
class FeedforwardNet(nn.Module):
def __init__(self, input_size, hidden_size, output_size):
super(FeedforwardNet, self).__init__()
self.fc1 = nn.Linear(input_size, hidden_size)
self.relu = nn.ReLU()
self.fc2 = nn.Linear(hidden_size, output_size)
def forward(self, x):
out = self.fc1(x)
out = self.relu(out)
out = self.fc2(out)
return out
这是一个三层神经网络,其中包括一个输入层,一个隐藏层和一个输出层。输入层和隐藏层都是全连接层,激活函数为 ReLU,输出层为线性层。
接下来,可以定义一个模型实例:
input_size = 10
hidden_size = 20
output_size = 2
net = FeedforwardNet(input_size, hidden_size, output_size)
其中,输入大小为 10,输出大小为 2,隐藏层大小为 20。
接下来,可以定义一个损失函数和优化器:
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=0.1)
在这个例子中,使用交叉熵损失函数和随机梯度下降优化器。
接下来,可以准备数据并进行训练:
# 准备数据
x = torch.randn(100, 10)
y = torch.randint(0, 2, (100,))
# 训练模型
for epoch in range(100):
optimizer.zero_grad()
output = net(x)
loss = criterion(output, y)
loss.backward()
optimizer.step()
print('Epoch [{}/{}], Loss: {:.4f}'.format(epoch+1, 100, loss.item()))
在这个例子中,使用随机生成的 100 个 10 维输入和 100 个随机生成的 0 或 1 标签进行训练。每个 epoch 都会计算损失并更新参数,最终输出每个 epoch 的损失。
当训练完成后,可以使用模型进行预测:
# 使用模型进行预测
with torch.no_grad():
x_test = torch.randn(10, 10)
output = net(x_test)
_, predicted = torch.max(output.data, 1)
print('Predicted:', predicted)
在这个例子中,使用随机生成的 10 个 10 维输入进行预测,并输出预测结果。
原文地址: https://www.cveoy.top/t/topic/oNEg 著作权归作者所有。请勿转载和采集!