关于PyTorch的使用记录
介绍
PyTorch 是一个开源的机器学习框架,它提供了一个灵活的深度学习平台,广泛用于各种机器学习和深度学习任务。
基本用法
张量(Tensors):PyTorch 的核心数据结构是张量,类似于 NumPy 的多维数组,但能够在 GPU 上运行,加速深度学习模型的训练。你可以使用 torch.Tensor 类来创建张量。
1 2 3 4
| import torch
x = torch.Tensor([1, 2, 3])
|
自动微分(Autograd):PyTorch 提供了自动微分功能,允许你轻松地计算梯度并进行反向传播,这对于训练神经网络非常重要。
1 2 3 4 5 6 7 8 9 10 11 12 13
| import torch
x = torch.tensor(2.0, requires_grad=True)
y = x**2 + 3*x + 1
y.backward()
print(x.grad)
|
神经网络(Neural Networks):PyTorch 提供了一个模块化的神经网络库,允许你构建和训练各种深度学习模型。torch.nn 模块包含了构建神经网络所需的各种层和损失函数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| import torch import torch.nn as nn
class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.fc1 = nn.Linear(2, 3) self.fc2 = nn.Linear(3, 1) def forward(self, x): x = torch.relu(self.fc1(x)) x = self.fc2(x) return x
model = Net()
|
数据加载和处理:PyTorch 提供了 torch.utils.data 模块,用于创建数据集和数据加载器,方便加载和预处理训练数据。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| from torch.utils.data import Dataset, DataLoader
class CustomDataset(Dataset): def __init__(self, data, labels): self.data = data self.labels = labels def __len__(self): return len(self.data) def __getitem__(self, idx): return self.data[idx], self.labels[idx]
dataset = CustomDataset(data, labels) dataloader = DataLoader(dataset, batch_size=32, shuffle=True)
|
优化器(Optimizers):PyTorch 提供了各种优化器,如 SGD、Adam、RMSprop 等,用于训练神经网络。
1 2 3 4 5 6 7 8 9 10 11
| import torch.optim as optim
optimizer = optim.Adam(model.parameters(), lr=0.001)
optimizer.zero_grad() outputs = model(inputs) loss = criterion(outputs, targets) loss.backward() optimizer.step()
|
GPU 支持:PyTorch 支持在 GPU 上训练模型,以加速深度学习任务。你可以使用 .to(device) 来将张量和模型移动到 GPU。
1 2 3 4 5 6 7 8
| import torch
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
x = x.to(device) model = model.to(device)
|
保存和加载模型:你可以使用 torch.save 和 torch.load 来保存和加载 PyTorch 模型。
1 2 3 4 5 6 7 8
| import torch
torch.save(model.state_dict(), 'model.pth')
model.load_state_dict(torch.load('model.pth')) model.eval()
|
未完待续