PyTorch 的 10 条内部用法

欢迎阅读这份有关 PyTorch 原理的简明指南[1]。无论您是初学者还是有一定经验,了解这些原则都可以让您的旅程更加顺利。让我们开始吧!

1. 张量:构建模块

PyTorch 中的张量是多维数组。它们与 NumPy 的 ndarray 类似,但可以在 GPU 上运行。

复制代码
import torch

# Create a 2x3 tensor
tensor = torch.tensor([[1, 2, 3], [4, 5, 6]])
print(tensor)

2. 动态计算图

PyTorch 使用动态计算图,这意味着该图是在执行操作时即时构建的。这为在运行时修改图形提供了灵活性。

复制代码
# Define two tensors
a = torch.tensor([2.], requires_grad=True)
b = torch.tensor([3.], requires_grad=True)

# Compute result
c = a * b
c.backward()

# Gradients
print(a.grad)  # Gradient w.r.t a

3.GPU加速

PyTorch 允许在 CPU 和 GPU 之间轻松切换。利用 .to(device) 获得最佳性能。

复制代码
device = "cuda" if torch.cuda.is_available() else "cpu"
tensor = tensor.to(device)

4. Autograd:自动微分

PyTorch 的 autograd 为张量上的所有操作提供自动微分。设置 require_grad=True 来跟踪计算。

复制代码
x = torch.tensor([2.], requires_grad=True)
y = x**2
y.backward()
print(x.grad)  # Gradient of y w.r.t x

5. 带有 nn.Module 的模块化神经网络

PyTorch 提供 nn.Module 类来定义神经网络架构。通过子类化创建自定义层。

复制代码
import torch.nn as nn

class SimpleNN(nn.Module):

    def __init__(self):
        super().__init__()
        self.fc = nn.Linear(1, 1)
        
    def forward(self, x):
        return self.fc(x)

6. 预定义层和损失函数

PyTorch 在 nn 模块中提供了各种预定义层、损失函数和优化算法。

复制代码
loss_fn = nn.CrossEntropyLoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)

7. 数据集和DataLoader

为了高效的数据处理和批处理,PyTorch 提供了 Dataset 和 DataLoader 类。

复制代码
from torch.utils.data import Dataset, DataLoader

class CustomDataset(Dataset):
    # ... (methods to define)
    
data_loader = DataLoader(dataset, batch_size=32, shuffle=True)

8.模型训练循环

通常,PyTorch 中的训练遵循以下模式:前向传递、计算损失、后向传递和参数更新。

复制代码
for epoch in range(epochs):
    for data, target in data_loader:
        optimizer.zero_grad()
        output = model(data)
        loss = loss_fn(output, target)
        loss.backward()
        optimizer.step()

9. 模型序列化

使用 torch.save() 和 torch.load() 保存和加载模型。

复制代码
# Save
torch.save(model.state_dict(), 'model_weights.pth')

# Load
model.load_state_dict(torch.load('model_weights.pth'))

10. Eager Execution and JIT

虽然 PyTorch 默认情况下以 eager 模式运行,但它为生产就绪模型提供即时 (JIT) 编译。

复制代码
scripted_model = torch.jit.script(model)
scripted_model.save("model_jit.pt")

Reference

1

Source: https://medium.com/@kasperjuunge/10-principles-of-pytorch-bbe4bf0c42cd

本文由mdnice多平台发布

相关推荐
中医正骨葛大夫1 小时前
一文解决如何在Pycharm中创建cuda深度学习环境?
pytorch·深度学习·pycharm·软件安装·cuda·anaconda·配置环境
龙腾AI白云2 小时前
具身智能-高层任务规划(High-level Task Planning)
深度学习·数据挖掘
WWZZ20252 小时前
快速上手大模型:深度学习9(池化层、卷积神经网络1)
人工智能·深度学习·神经网络·算法·机器人·大模型·具身智能
AI即插即用5 小时前
即插即用系列 | 2025 SOTA Strip R-CNN 实战解析:用于遥感目标检测的大条带卷积
人工智能·pytorch·深度学习·目标检测·计算机视觉·cnn·智慧城市
IT油腻大叔5 小时前
DeepSeek-多层注意力计算机制理解
python·深度学习·机器学习
九年义务漏网鲨鱼5 小时前
【多模态大模型面经】现代大模型架构(一): 组注意力机制(GQA)和 RMSNorm
人工智能·深度学习·算法·架构·大模型·强化学习
O***p6045 小时前
机器学习挑战同时也带来了一系列亟待解决的问题。
人工智能·深度学习·机器学习
B站_计算机毕业设计之家6 小时前
python手写数字识别系统 CNN算法 卷积神经网络 OpenCV和Keras模型 计算机视觉 (建议收藏)✅
python·深度学习·opencv·机器学习·计算机视觉·cnn
Valueyou246 小时前
引入基于加权 IoU 的 WiseIoU 回归损失以提升 CT 图像检测鲁棒性
人工智能·python·深度学习·目标检测
这张生成的图像能检测吗7 小时前
(论文速读)SpiralMLP:一个轻量级的视觉MLP架构
图像处理·人工智能·深度学习·计算机视觉·mlp框架·分类、检测、分割