PyTorch官方资料
官网
PyTorch
文档
PyTorch documentation — PyTorch 2.1 documentation
pip安装等入门指南
: Start Locally | PyTorch
Tensor操作介绍
引入包
1 | import torch |
定义tensor
1 | a = torch.tensor([1, 2, 3]) # 定义a为[1,2,3] |
操作
1 | a = torch.zeros([1, 2, 3]) # 定义全0张量 |
运行设备
1 | # CPU |
常用:
1 | device = torch.device("cuda" if torch.cuda.is_available() else "cpu") |
计算梯度
- 定义tensor并设置
requires_grad
为true
1 | x = torch.tensor([[1, 0], [-1, 0]], dtype=torch.float, requires_grad=True) |
- 定义某个函数或运算
1 | z = x.pow(2).sum() # 注意只有scalar值可以计算梯度, 不能计算矩阵梯度 |
- 反向传播(计算微分)
1 | z.backward() |
- 计算出的微分会存在x.grad上
1 | print(x.grad) |
- 清除梯度
1 | x.grad.data.zero_() # 下次计算时梯度会累积而不会重新计算 |
所有步骤
1 | # 1. 定义 |
dataset与dataloader
引入包
1 | import torch |
dataset
1 | class MyDataset(Dataset): |
dataloader
1 | dataset = MyDataset() # 声明dataset |
从dataloader中取出数据
1 | for data, label in dataloader: |
搭建神经网络
引入包
1 | import torch |
神经网络层
1 | # Linear 全连接层 |
神经网络Module定义
1 | class MyModel_A(nn.Module): |
训练
引入包
1 | import torch |
优化器
基本用Adam就行了
1 | optimizer = Adam(params, lr) |
训练前准备
1 | # 定义超参数 |
1 | '''1. 定义dataset和dataloader''' |
1 | '''1. 定义model''' |
模型训练与保存
1 | from tqdm import tqdm |
模型加载与测试
1 | from tqdm import tqdm |