Pytorch笔记
1. PyTorch 基础
张量 (Tensor)
多维数组,支持GPU计算。
支持各种数学运算和索引操作。
动态图构建,自动梯度计算。
计算图 (Computational Graph)
动态图:在运行时定义,便于调试。
静态图:编译时定义,优化性能。
自动梯度 (Autograd)
支持自动计算梯度,用于反向传播。
2. 数据操作
创建张量
torch.tensor()
:从数据创建张量。torch.rand()
:创建随机张量。torch.zeros()
:创建全零张量。
索引和切片
类似于NumPy,但索引操作需在CPU上完成。
广播 (Broadcasting)
简化数组运算,自动扩展维度。
3. 神经网络构建
模块 (Module)
所有网络都继承自
torch.nn.Module
。
层 (Layer)
如
torch.nn.Linear
,torch.nn.Conv2d
等。
损失函数 (Loss Function)
如
torch.nn.MSELoss
,torch.nn.CrossEntropyLoss
等。
4. 优化器
优化器 (Optimizer)
如
torch.optim.SGD
,torch.optim.Adam
等,用于更新网络权重。
5. 数据加载和预处理
数据加载器 (DataLoader)
批量加载数据,支持多线程加载。
数据集 (Dataset)
自定义数据集继承自
torch.utils.data.Dataset
。
数据预处理
使用
torchvision.transforms
进行数据预处理。
6. 训练过程
前向传播 (Forward Pass)
计算预测值。
损失计算 (Loss Calculation)
计算预测值与真实值之间的差异。
反向传播 (Backward Pass)
计算梯度。
权重更新 (Weight Update)
使用优化器更新权重。
7. GPU 加速
CUDA Tensor
将张量移动到GPU上。
设备管理
使用
.to(device)
或.cuda()
将模型或张量移动到GPU。
内存管理
注意管理GPU内存,避免内存泄漏。
8. 模型保存和加载
保存模型
使用
torch.save()
保存模型。
加载模型
使用
torch.load()
加载模型。
9. 动态计算图和静态图
动态图 (Dynamic Graph)
运行时定义计算图,便于调试。
静态图 (Static Graph)
编译时定义计算图,有助于优化性能。
10. 模型部署
TorchScript
将模型转换为TorchScript,便于部署。
ONNX
将模型转换为ONX格式,支持在移动设备上运行。