PyTorch最常用模块和方法
编辑日期: 2024-07-16 文章阅读: 次
PyTorch 核心哲学
PyTorch
是一个基于 Python 的科学计算包,主要服务于以下两类任务:
- 替代 NumPy,利用 GPU 加速计算。
- 提供深度学习研究平台,灵活且高效。
PyTorch 核心哲学包括:
- 动态计算图:PyTorch 使用动态计算图,允许每次迭代构建新的计算图,提供了极大的灵活性。
- 直观的接口:PyTorch 的接口设计简洁易用,允许用户直接通过 Python 操作张量和网络。
- 紧密集成的 GPU 支持:PyTorch 可以无缝地在 CPU 和 GPU 之间切换,极大地提升了计算效率。
- 模块化设计:PyTorch 提供了高度模块化的设计,便于用户扩展和自定义模型。
最常用的模块和方法
1. torch
torch
是 PyTorch 的核心模块,提供了多种张量
操作、随机数
生成、线性代数
等功能。
- 张量创建与操作
import torch
x = torch.tensor([1.0, 2.0, 3.0])
y = torch.ones(3)
z = x + y
print(z) # 输出: tensor([2., 3., 4.])
- GPU 加速
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
x = x.to(device)
y = y.to(device)
2. torch.nn
torch.nn
提供了构建神经网络的模块和方法。
- 定义模型
import torch.nn as nn
class SimpleModel(nn.Module):
def __init__(self):
super(SimpleModel, self).__init__()
self.fc1 = nn.Linear(3, 3)
def forward(self, x):
return self.fc1(x)
model = SimpleModel()
- 损失函数和优化器
import torch.optim as optim
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01)
outputs = model(x)
loss = criterion(outputs, y)
loss.backward()
optimizer.step()
3. torch.utils.data
torch.utils.data
提供了数据加载和预处理的工具。
- 数据集和数据加载器
from torch.utils.data import DataLoader, Dataset
class CustomDataset(Dataset):
def __init__(self, data):
self.data = data
def __len__(self):
return len(self.data)
def __getitem__(self, idx):
return self.data[idx]
dataset = CustomDataset([torch.tensor([1.0, 2.0, 3.0]), torch.tensor([4.0, 5.0, 6.0])])
dataloader = DataLoader(dataset, batch_size=2, shuffle=True)
for batch in dataloader:
print(batch)
4. torch.autograd
torch.autograd
是 PyTorch 的自动微分
引擎,支持梯度
计算。
- 自动求导
x = torch.tensor([1.0, 2.0, 3.0], requires_grad=True)
y = x + 2
z = y.mean()
z.backward()
print(x.grad) # 输出: tensor([0.3333, 0.3333, 0.3333])
这些模块和方法构成了 PyTorch 的核心,提供了高效、灵活的深度学习开发平台。