如何使用 Python 的 PyTorch 库进行数据训练?

如何使用 Python 的 PyTorch 库进行数据训练?

步骤:

  1. 导入必要的库
import torch
import torchvision
  1. 加载数据
# 加载训练数据
train_data = torchvision.datasets.MNIST(root='./data', train=True, download=True)

# 加载测试数据
test_data = torchvision.datasets.MNIST(root='./data', train=False, download=True)
  1. 创建模型
# 创建一个模型,使用 MNIST 数据集的线性层
model = torch.nn.Linear(784, 10)
  1. 定义训练函数
def train_model(model, train_data, test_data):
    # 训练模型
    model.train()

    # 循环遍历训练数据
    for batch_idx, (data, target) in enumerate(train_data):
        # 将数据和标签转换为 PyTorch tensor
        data = torch.tensor(data).float()
        target = torch.tensor(target).float()

        # 训练模型
        optimizer.zero_grad()
        loss = criterion(model(data), target)
        loss.backward()
        optimizer.step()

        # 每 100 个批次打印一次训练进度
        if batch_idx % 100 == 0:
            print(f'训练进度:{100 * (batch_idx + 1) / len(train_data)}%')
  1. 训练模型
# 设置训练参数
optimizer = torch.optim.Adam(model.parameters())

# 开始训练模型
train_model(model, train_data, test_data)
  1. 测试模型
# 加载测试数据
test_loader = torch.utils.data.DataLoader(test_data, batch_size=64, shuffle=False)

# 遍历测试数据
correct = 0
total = 0
for data, target in test_loader:
    # 将数据和标签转换为 PyTorch tensor
    data = torch.tensor(data).float()
    target = torch.tensor(target).float()

    # 预测标签
    prediction = model(data)

    # 计数正确预测的样本数量
    if prediction.item() == target.item():
        correct += 1

    # 统计总样本数量
    total += len(test_loader)

# 打印测试准确率
print(f'测试准确率:{correct / total * 100:.2f}%')

注意:

  • MNIST 是一个包含 784 个像素的 28x28 像素的图像数据集。
  • torch.nn.Linear 是一个线性层,用于将 784 个特征转换为 10 个输出的标签。
  • optimizer.zero_grad() 用于清空模型中的梯度,loss.backward() 用于计算梯度,optimizer.step() 用于更新模型中的参数。
  • train_loader 是一个数据加载器,用于将训练数据分发给多个线程。
  • test_loader 是一个数据加载器,用于将测试数据分发给多个线程。
相似内容
更多>