PyTorch 基础
787 字约 3 分钟
2026-05-20
培养的能力
- 自主解决bug的能力
- 自主的学习能力
第一章
- 1.1 Pytorch
- 定义: 基于numpy的科学计算库 两大功能
- 提供GPU服务
- 灵活性和速度
- pytorch的基本元素操作
pytorch之所以能使用GPU加速:
tensor张量 numpy核心: ndarray
from **future** import print_function import torch学习api函数
- 第一个点: 函数的参数有哪些
- 第二个点: 函数的返回值是什么
创建矩阵
- 未初始化的矩阵
- torch.empty() –> return: 脏数据
- 初始化矩阵
- torch.rand() –> return: 均匀分布的 [0, 1)
- 创建全零的矩阵
- torch.zeros(size, dtype)
- 直接创建tensor张量
- Torch.tensor([])
- 创建形状相同的张量
- tensor.New_ones(size)
- torch.randn_like()
- 获取尺寸
- x.size() 用于矩阵的形状查看和排查bug
- 未初始化的矩阵
- pytorch的基本运算
加法举例
- 第一种: x+y
- 第二种: torch.add(x, y)
- 第三种: torch.add(x, y, out)
- 第四种(in_place): y.add_(x) ==> y = y+x
张量切片 eg: x[:, :, 1]
*改变形状 torch.view() -1: 自动进行运算
- 类比===> numpy: reshape resize T
如果只有一个元素 .item() 在获取loss的时候, 使用的item频次比较高
如果有一个列表的元素 .tolist()
tensor和array之间的转化
- Torch Tensor和Numpy array共享底层的内存空间, 因此改变其中一个的值, 另一个也会随之被改变.
a = torch.ones(5) print(a) b = a.numpy()- tensor –> array; tensor.numpy()
- Array –> tensor: torch.from_numpy()
设备转移函数 .to() GPU: ‘cuda’ CPU; ‘cpu’
- 首先要判断是否有可用的GPU
- 如果有, 进行数据的迁移 部分数据在cpu, 部分数据在gpu上, 那么这两部分数据不能进行运算, 所以必须保证所有的数据在同一台设备上
- 首先要判断是否有可用的GPU
- 1.2Pytorch中的autograd
- torch.tensor
- 解释:
- .requires_grad = True–> 表示要进行所有操作的追踪要进行反向传播: .backward() 前提是.requires_grad属性设置为True计算之后的梯度存放: .grad() (累加的)要想终止一个tensor的反向传播 .detach()终止整个的反向传播的过程, 官方推荐: with torch.no_grad() –> 预测阶段用户自己定义的tensor张量 grad_fn is None
- 解释:
- tensor操作
- 用户自定的张量: requires_grad=False(默认值)
- 如果想要原地改变 requires_grad_(True)
- torch.tensor
pytorch的使用
- 创建神经网络的步骤
- 构建神经网络
- 定义神经网络的类
- def init()
- def forward() 正向传播的过程
- def num_flat_features()
- 定义神经网络的类
- 构建数据集
- 模拟一些数据
- 是数据集放入神经网络中进行训练
- net(input)
- 损失值的计算 loss
- MSELoss()
- .grad_fn属性
- 反向传播求其梯度
- 在反向传播之前一定要记得: .zero_grad()
- 反向传播: .backward()
- 更新参数
- 第一种: 手动更新 循环参数进行更新
- 第二种: step()
- 标准化代码:
- 创建优化器
- 梯度清零
- 送入模型进行预测
- 根据损失函数 计算损失值
- 反向传播计算梯度
- 更新参数
- 构建神经网络
- 远程连接服务器: ssh root(用户名)@ip 回车 password: 密码
- 本地上传文件到服务器: scp 本地文件 root(用户名)@ip:上传到远程服务器的路径