首先需要导入必要的库:

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 维输入进行预测,并输出预测结果。

PyTorch 前馈神经网络设计:构建三层网络并训练自定义数据

原文地址: https://www.cveoy.top/t/topic/oNEg 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录