在Ubuntu上使用PyTorch训练模型的步骤如下:
确保你的系统上已经安装了Python和pip。Ubuntu通常自带Python,但可能需要更新到最新版本。
sudo apt update
sudo apt install python3 python3-pip
为了隔离项目依赖,建议创建一个虚拟环境。
sudo apt install python3-venv
python3 -m venv myenv
source myenv/bin/activate
根据你的CUDA版本选择合适的PyTorch安装命令。可以在PyTorch官网找到最新的安装命令。
例如,如果你使用CUDA 11.7:
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu117
如果不使用CUDA:
pip install torch torchvision torchaudio
根据你的项目需求,安装其他必要的库。例如,如果你使用OpenCV:
pip install opencv-python
将你的数据集准备好,并放在一个合适的位置。你可以使用torchvision.datasets
中的数据集,或者自己编写数据加载器。
创建一个Python脚本(例如train.py
),并在其中编写训练代码。以下是一个简单的示例:
import torch
import torch.nn as nn
import torch.optim as optim
from torchvision import datasets, transforms
from torch.utils.data import DataLoader
# 定义模型
class SimpleCNN(nn.Module):
def __init__(self):
super(SimpleCNN, self).__init__()
self.conv1 = nn.Conv2d(1, 32, kernel_size=3, stride=1, padding=1)
self.relu = nn.ReLU()
self.pool = nn.MaxPool2d(kernel_size=2, stride=2, padding=0)
self.fc = nn.Linear(32 * 14 * 14, 10)
def forward(self, x):
x = self.pool(self.relu(self.conv1(x)))
x = x.view(-1, 32 * 14 * 14)
x = self.fc(x)
return x
# 数据预处理
transform = transforms.Compose([
transforms.ToTensor(),
transforms.Normalize((0.1307,), (0.3081,))
])
# 加载数据集
train_dataset = datasets.MNIST(root='./data', train=True, download=True, transform=transform)
train_loader = DataLoader(train_dataset, batch_size=64, shuffle=True)
# 初始化模型、损失函数和优化器
model = SimpleCNN()
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)
# 训练模型
for epoch in range(5):
running_loss = 0.0
for i, data in enumerate(train_loader, 0):
inputs, labels = data
optimizer.zero_grad()
outputs = model(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
running_loss += loss.item()
print(f'Epoch {epoch + 1}, Loss: {running_loss / (i + 1)}')
print('Finished Training')
在终端中运行你的训练脚本:
python train.py
你可以使用TensorBoard来监控训练过程。首先安装TensorBoard:
pip install tensorboard
然后在训练脚本中添加TensorBoard的代码:
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter('runs/simple_cnn_experiment')
for epoch in range(5):
running_loss = 0.0
for i, data in enumerate(train_loader, 0):
inputs, labels = data
optimizer.zero_grad()
outputs = model(inputs)
loss = criterion(outputs, labels)
loss.backward()
optimizer.step()
running_loss += loss.item()
writer.add_scalar('training loss', running_loss / (i + 1), epoch)
print(f'Epoch {epoch + 1}, Loss: {running_loss / (i + 1)}')
writer.close()
最后,在终端中启动TensorBoard:
tensorboard --logdir=runs
然后在浏览器中打开http://localhost:6006
查看训练过程。
训练完成后,你可以保存模型以便以后使用:
torch.save(model.state_dict(), 'model.pth')
加载模型:
model = SimpleCNN()
model.load_state_dict(torch.load('model.pth'))
model.eval()
以上就是在Ubuntu上使用PyTorch训练模型的基本步骤。根据你的具体需求,可能需要进行一些调整和优化。