溫馨提示×

Ubuntu上PyTorch模型怎么訓練

小樊
47
2025-09-13 01:37:21
欄目: 智能運維

在Ubuntu上訓練PyTorch模型的步驟如下:

1. 安裝Python和PyTorch

首先,確保你的Ubuntu系統已經安裝了Python。推薦使用Python 3.6或更高版本。

安裝Python

sudo apt update
sudo apt install python3 python3-pip

安裝PyTorch

訪問PyTorch官網,根據你的CUDA版本選擇合適的安裝命令。以下是使用pip安裝的示例:

  • CPU版本

    pip3 install torch torchvision torchaudio
    
  • GPU版本(CUDA 11.7)

    pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
    

2. 準備數據集

你需要準備用于訓練的數據集。常見的做法是將數據集放在一個目錄中,并使用torchvision.transforms進行預處理。

示例:使用CIFAR-10數據集

import torchvision.transforms as transforms
import torchvision.datasets as datasets

transform = transforms.Compose([
    transforms.RandomHorizontalFlip(),
    transforms.RandomCrop(32, padding=4),
    transforms.ToTensor(),
    transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
])

trainset = datasets.CIFAR10(root='./data', train=True, download=True, transform=transform)
trainloader = torch.utils.data.DataLoader(trainset, batch_size=64, shuffle=True, num_workers=2)

testset = datasets.CIFAR10(root='./data', train=False, download=True, transform=transform)
testloader = torch.utils.data.DataLoader(testset, batch_size=64, shuffle=False, num_workers=2)

3. 定義模型

你可以使用PyTorch提供的預定義模型,或者自己定義一個模型。

示例:使用ResNet18

import torch.nn as nn
import torchvision.models as models

model = models.resnet18(pretrained=False)
num_ftrs = model.fc.in_features
model.fc = nn.Linear(num_ftrs, 10)  # CIFAR-10有10個類別

4. 定義損失函數和優化器

import torch.optim as optim

criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(model.parameters(), lr=0.001, momentum=0.9)

5. 訓練模型

for epoch in range(10):  # 多個epoch
    running_loss = 0.0
    for i, data in enumerate(trainloader, 0):
        inputs, labels = data

        optimizer.zero_grad()

        outputs = model(inputs)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()

        running_loss += loss.item()
        if i % 200 == 199:  # 每200個batch打印一次
            print(f'[{epoch + 1}, {i + 1:5d}] loss: {running_loss / 200:.3f}')
            running_loss = 0.0

print('Finished Training')

6. 測試模型

correct = 0
total = 0
with torch.no_grad():
    for data in testloader:
        images, labels = data
        outputs = model(images)
        _, predicted = torch.max(outputs.data, 1)
        total += labels.size(0)
        correct += (predicted == labels).sum().item()

print(f'Accuracy of the network on the 10000 test images: {100 * correct / total:.2f}%')

7. 保存模型

PATH = './cifar_net.pth'
torch.save(model.state_dict(), PATH)

8. 加載模型

model = models.resnet18(pretrained=False)
model.fc = nn.Linear(num_ftrs, 10)
model.load_state_dict(torch.load(PATH))

通過以上步驟,你可以在Ubuntu上訓練一個PyTorch模型。根據具體需求,你可以調整數據預處理、模型結構、損失函數和優化器等參數。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女