安装 PyTorch 及相关库
PyTorch 可通过官方推荐方式安装。根据 CUDA 版本和系统环境选择对应命令:
pip install torch torchvision torchaudio
如需特定版本(如 CUDA 11.8),可指定:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
基础张量操作
PyTorch 的核心是张量(Tensor),支持 GPU 加速计算:
import torch
# 创建张量
x = torch.tensor([1, 2, 3])
y = torch.rand(3, 3) # 3x3 随机矩阵
# GPU 转移(需设备支持)
if torch.cuda.is_available():
y = y.to('cuda')
# 自动微分
z = y.sum()
z.backward() # 计算梯度
使用 TorchVision 处理图像数据
TorchVision 提供数据集、模型和图像变换工具:
from torchvision import datasets, transforms
# 数据预处理
transform = transforms.Compose([
transforms.ToTensor(),
transforms.Normalize((0.5,), (0.5,))
])
# 加载 MNIST 数据集
train_data = datasets.MNIST(root='./data', train=True, transform=transform, download=True)
构建神经网络模型
结合 torch.nn
模块定义模型:
import torch.nn as nn
class Net(nn.Module):
def __init__(self):
super().__init__()
self.fc = nn.Linear(784, 10) # MNIST 输入为 28x28=784
def forward(self, x):
return self.fc(x.view(x.shape[0], -1))
model = Net()
criterion = nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)
使用 TorchAudio 处理音频
TorchAudio 支持音频加载、特征提取:
import torchaudio
# 加载音频文件
waveform, sample_rate = torchaudio.load('audio.wav')
# 提取梅尔频谱
transform = torchaudio.transforms.MelSpectrogram(sample_rate)
mel_spec = transform(waveform)
训练循环示例
完整训练流程整合:
for epoch in range(10):
for data, target in train_loader:
optimizer.zero_grad()
output = model(data)
loss = criterion(output, target)
loss.backward()
optimizer.step()
print(f'Epoch {epoch}, Loss: {loss.item():.4f}')
模型保存与加载
持久化训练结果:
# 保存
torch.save(model.state_dict(), 'model.pth')
# 加载
model.load_state_dict(torch.load('model.pth'))
model.eval() # 切换为推理模式
关键点:
- 张量操作支持广播机制和 GPU 加速
- TorchVision 提供预训练模型(如 ResNet)
- TorchAudio 支持多种音频后端(如 SoundFile)
- 混合精度训练可通过
torch.cuda.amp
实现