PyTorch基础教程及注意事项-基础篇


PyTorch安装和环境准备

PyTorch下载地址:https://PyTorch.org/

  1. PyTorch可以同时安装GPU(CUDA)和CPU版本,使用时需要注意,不同版本PyTorch不能安装在同一个Python解释器下,否则会报错。可以尝试一个安装在本地Python解释器下,另一个使用Anaconda Prompt安装在Anaconda环境中。
  2. 如果发现安装的cuda版本在PyTorch中不存在预构建二进制文件,可以手动先安装低版本,例如电脑安装的是12.2版本cuda,PyTorch可以先安装11.8版本,最后使用PyTorch命令检查按照按照的PyTorch版本和cuda版本。

Anaconda专门环境配置

介绍:数据科学和机器学习软件套装
环境管理功能:使用cnnda包管理器,在管理软件包的同时,可以创建管理不同的Python环境
常用环境管理命令

方法 conda命令
创建新环境 conda create –name 环境名称
创建指定版本环境 conda create –name 环境名称 Python = 版本号
激活环境 conda activate 环境名称
退出当前环境 deactivate
查看所有已创建环境 conda env list
复制环境 conda create –name 复制后环境新名 –clone 环境名
删除环境 conda env remove –name 环境名
查看帮助 conda –help

常用包管理命令

方法 conda命令
安装包 conda install 包名
安装指定版本包 conda install 包名 = 版本号
更新包 conda update 包名
卸载包 conda remove 包名
查看已安装包 conda list
搜索包 conda search 包名
清理conda缓存,删除不需要使用的包 conda clean –all
查看conda版本 conda –version

PyTorch

介绍:动态计算图、可自动微分、张量计算、多语言多设备支持的开源Python深度学习框架,基于torch库,底层由C++实现
结构(从上到下):

  1. PyTorch生态系统(专业库):
    • torchvision:用于计算机视觉的数据集和模型
    • torchtext:用于自然语言处理的数据集和模型
    • torchaudio:用于音频处理的数据集和模型
  2. PyTorch核心:
    • PyTorch API(顶层):开发者直接调用接口
      torch: 张量核心计算
      torch.nn:构建神经网络
      torch.autograd: 自动微分,反向传播
    • C++核心(中层):高性能计算,沟通Python代码和底层硬件
      ATen: 基础张量和数学运算核心库
      JIT: 即时编译优化模型,编译器和解释器的接口
      Autograd引擎:自动微分计算引擎,增强ATen库
    • 基础层(底层):直接操作硬件,实现高速优化
      TN/THNN: C/C++实现的基础张量和神经网络操作库,非常底层
      THC/THCUNN: 对应模块的CUDA实现
  3. PyTorch运算流程:python代码->Python API接口->C++核心计算->底层CUDA/C库加速计算->返回结果。

张量(Tensor)

定义:数据核心表示形式,类似于NumPy多维数组,数据可存储在CPU/GPU等计算设备
组成:

  • 维度(Dimensionality):定义张量的多维数组结构
  • 形状(shape):定义张量每个维度的大小
  • 数据类型(Dtype):定义张量上每个元素存储所需的内存大小和解释方式,包括整理、浮点型和布尔型。
    张量属性/方法工具如下:
方法属性 说明
.shape/.size() 获取张量形状
.dtype 获取张量数据类型
.device 查看张量所在计算设备(CPU/GPU)
.dim() 获取张量的维度数
.requires_grad 判断张量是否使用梯度计算
.numel() 获取张量元素总数
.is_cuda 判断张量是否在GPU上
.T 获取张量转置(二维及以下张量)
.item() 获取单元素张量值
.is_contiguous() 检查张量是否连续存储
.view(shape)/.reshape(shape) 在不改变数据的情况下,改变张量形状
.unsqueeze(dim) 在指定维度添加一个维度
.squeeze(dim) 去掉指定维度为1的维度
.numpy() 将张量转换为Numpy数组,仅限CPU张量, 数组和张量共享内存,修改数据互相影响
.clone() 数据克隆,深复制,可存放在新内存地址中
.flatten() 张量展平,构成一维向量
Tensor创建
torch.tensor(data) 从Python列表和numpy数组中创建张量
torch.as_tensor(data) 数据转换为张量(共享内存)
torch.zeros(size) 创建全为零的张量
torch.ones(size) 创建全为1的张量
torch.empty(size) 创建未初始化的张量
torch.eye(size) 创建单位矩阵
torch.full(size, fill_value) 创建填充指定值的张量
torch.manual_seed(seed) 设置随机数种子
torch.initial_seed() 返回当前随机种子
torch.rand(size) 创建服从均匀分布的随机张量,值为[0, 1]
torch.randn(size) 创建服从标准正态分布的随机张量
torch.randint(low, high, size) 创建整数随机张量
torch.randperm(n) 创建0到n-1的随机配列
torch.arange(start, end, step) 创建一维序列张量,类似Python的range函数
torch.linspace(start, end, steps) 创建指定范围内等间隔序列张量
torch.logspace(start, end, steps) 创建对数间隔序列张量
torch.form_numpy(ndarray) Numpy数组转换为张量,数组和张量共享内存,修改数据互相影响
Tensor操作
torch.stack() 沿着新维度堆叠张量
torch.cat((x, y), dim) 指定维度连接多个张量
torch.matmul(x, y)/torch.mm(input, mat2) 矩阵乘法
torch.bmm(input, mat2) 批量矩阵乘法
torch.eig(input) 计算矩阵特征值和特征向量
torch.svd(input) 计算矩阵的奇异值分解
torch.inverse(input) 计算矩阵的逆
torch.det(input) 计算矩阵的行列式
torch.trance(input) 计算矩阵的迹
torch.dot(x, y) 向量点积(仅适用于一维张量)
torch.abs(x) 求绝对值
torch.sqrt(x) 求平方根
torch.pow(x) 求幂运算
torch.exp(x) 求指数函数
torch.log(x) 求自然对数
torch.sum(x) 求和
torch.mean(x) 求均值
torch.max(x) 求最大值
torch.min(x) 求最小值
torch.clamp(input, min, max) 张量限制在指定范围内
torch.round(input) 近似,四舍五入
torch.floor(input) 向下取整
torch.ceil(input) 向上取整
torch.argmax(x, dim) 返回指定维度下的最大值对应索引
torch.softmax(x, dim) 计算指定维度下的softmax
torch.meshgrid() 生成网络,可用于生成坐标

注意:

  1. 共享内存的使用,典型如张量和Numpy数组之间的转化存在共享内存,张量形状的改变也存在共享内存,共享内存存在数据互相影响。
  2. 张量和Numpy有转换,是因为二者有相似的内存结构,所以有内置方法直接转换。如果PyTorch中Tensor和pandas里的DataFrame进行转换,需要通过Numpy作为中间步骤实现。

参考文献

[1] 深度学习与PyTorch入门实战
[2] Zhang, A., Lipton, Z. C., Li, M., & Smola, A. J. (2023). Dive into Deep Learning. Cambridge University Press. URL: https://D2L.ai
[3] PyTorch深度学习
[4] 菜鸟教程
[5] 深入浅出PyTorch


文章作者: 青山生柳
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 青山生柳 !
 上一篇
项目管理十大要点 项目管理十大要点
项目管理十大要点,主要项目管理十大关键要点(使命、概念、约束、方法、过程组、方针、成败、绩效域、关系、知识领域)。
2025-09-11
下一篇 
PyTorch基础教程及注意事项-数据和模型篇 PyTorch基础教程及注意事项-数据和模型篇
PyTorch基础教程及注意事项-数据和模型篇,主要介绍PyTorch的数据ETL(提取、转换、加载)、模型保存、转换、加载和部署,以及分布式模型训练框架和工具等方法工具。
2025-08-25
  目录