- 导入必要的库
import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader, Dataset # 如果使用自定义数据集
2.定义模型结构。使用nn.Module创建一个类来定义神经网络结构
class MyModel(nn.Module):
def __init__(self, input_size, hidden_size, output_size):
super(MyModel, self).__init__()
self.layer1 = nn.Linear(input_size, hidden_size)
self.relu = nn.ReLU()
self.layer2 = nn.Linear(hidden_size, output_size)
def forward(self, x):
out = self.layer1(x)
out = self.relu(out)
out = self.layer2(out)
return out
3.准备数据
- 加载数据,可以使用预处理过的数据集,如torchvision.datasets中的MNIST、CIFAR10等,或者自定义数据集通过继承Dataset类实现。
- 数据预处理,并将数据封装到DataLoader中以供训练和验证时批量读取。
4.实例化模型和优化器
model = MyModel(input_size=..., hidden_size=..., output_size=...)
criterion = nn.CrossEntropyLoss() # 对于分类任务
optimizer = optim.Adam(model.parameters(), lr=0.001) # 或者其他优化器
5.训练循环
num_epochs = 100
for epoch in range(num_epochs):
for inputs, labels in train_loader:
optimizer.zero_grad() # 清零梯度
outputs = model(inputs)
loss = criterion(outputs, labels)
loss.backward() # 反向传播计算梯度
optimizer.step() # 更新权重参数
print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item():.4f}')
6.评估模型 。在验证集或测试集上进行模型性能评估。
7.保存和加载模型
torch.save(model.state_dict(), 'model.pth') # 保存模型参数
model.load_state_dict(torch.load('model.pth')) # 加载模型参数
这是一个基础的分类任务示例,实际应用中可能需要根据具体任务(例如:图像分类、文本生成、序列标注等)调整模型结构、损失函数以及优化器选择。同时,还需考虑添加学习率调整策略、早停机制、模型正则化等方法来改进模型训练过程。