当前位置: 首页 > ai >正文

PyTorch基础学习系列一

文章目录

    • 1. PyTorch安装
    • PyTorch张量操作
      • 1. 张量创建
      • 2. 张量属性与形状操作
      • 3. 索引与切片
      • 4. 数学运算
      • 5. 广播机制
      • 6. 自动微分与梯度计算
      • 7. 内存共享与复制
      • 8. 设备迁移
      • 9. 其他高级操作
      • 总结

1. PyTorch安装

PyTorch官网,进入官网之后,下滑之后可以看到
在这里插入图片描述
点击红框框中的按钮,可以看到所有版本的信息,结合自己的电脑i/服务器配置情况选择合适的版本安装即可
在这里插入图片描述

PyTorch张量操作

PyTorch中的张量(Tensor)是其核心数据结构,类似于NumPy的多维数组,但支持GPU加速和自动微分。以下是PyTorch张量操作的详细分类和说明:


1. 张量创建

PyTorch提供多种创建张量的方式:

  • 从数据构造
    torch.tensor([[1, 2], [3, 4]])  # 从列表创建
    torch.from_numpy(np.array([1, 2]))  # 从NumPy数组转换
    
  • 初始化特定值
    torch.zeros(2, 3)  # 全0张量
    torch.ones(2, 3, dtype=torch.float64)  # 全1张量,指定类型
    torch.rand(2, 3)  # [0,1)均匀分布
    torch.randn(2, 3)  # 标准正态分布
    torch.arange(1, 10, step=2)  # 等差数列 [1, 3, 5, 7, 9]
    
  • 特殊矩阵
    torch.eye(3)  # 3x3单位矩阵
    torch.diag(torch.tensor([1, 2, 3]))  # 对角矩阵
    

注意torch.Tensor()torch.tensor()的区别:前者默认随机初始化,后者直接使用输入值。


2. 张量属性与形状操作

  • 属性查看
    x.shape  # 形状(等价于x.size())
    x.dtype  # 数据类型(如torch.float32)
    x.device  # 存储设备(CPU/GPU)
    
  • 形状调整
    x.view(3, 2)  # 调整形状(需元素总数一致)
    x.reshape(3, 2)  # 类似view,但兼容非连续内存
    x.unsqueeze(0)  # 增加维度(如从[3]变为[1,3])
    x.squeeze()  # 删除所有大小为1的维度
    x.permute(1, 0, 2)  # 维度重排(如从[2,3,4]变为[3,2,4])
    

3. 索引与切片

  • 基础操作
    x[0, :2]  # 第0行前两列
    x[x > 0]  # 布尔索引(返回一维张量)
    
  • 高级索引
    torch.masked_select(x, mask)  # 按掩码选取
    torch.gather(x, dim=1, index=torch.tensor([[0, 1]]))  # 按索引采集
    torch.index_select(x, dim=0, index=torch.tensor([0, 2]))  # 按维度选择
    

4. 数学运算

  • 逐元素运算
    x + y  # 加法(等价于torch.add(x, y))
    x * y  # 乘法(等价于torch.mul(x, y))
    torch.sin(x)  # 三角函数等
    
  • 矩阵运算
    torch.mm(a, b)  # 矩阵乘法(2D)
    torch.matmul(a, b)  # 支持广播的通用乘法
    a @ b  # 运算符形式
    torch.bmm(a, b)  # 批量矩阵乘法(3D)
    
  • 归约操作
    x.sum(dim=0)  # 沿维度求和
    x.mean()  # 全局均值
    x.max(dim=1, keepdim=True)  # 最大值及索引
    

5. 广播机制

PyTorch自动扩展形状不同的张量以进行运算:

a = torch.tensor([[1], [2]])  # 形状(2,1)
b = torch.tensor([3, 4])      # 形状(2)
a + b  # 结果形状(2,2): [[4,5], [5,6]]

6. 自动微分与梯度计算

  • 启用梯度追踪
    x = torch.tensor(2.0, requires_grad=True)
    y = x**2
    y.backward()  # 计算梯度
    print(x.grad)  # 输出: 4.0
    
  • 控制梯度流
    with torch.no_grad():  # 禁用梯度计算y = x * 2
    

7. 内存共享与复制

  • 共享内存的操作
    view()、切片、transpose()等操作与原张量共享数据。
  • 显式复制
    x_copy = x.clone()  # 深拷贝
    

8. 设备迁移

x = x.to('cuda')  # 移动到GPU
x = x.cpu()       # 移回CPU

9. 其他高级操作

  • 复数支持
    torch.complex(real_tensor, imag_tensor)
    
  • 稀疏张量
    torch.sparse_coo_tensor(indices, values, size)
    

总结

PyTorch的张量操作覆盖了从基础创建到高级数学运算的全流程,支持GPU加速和自动微分,是深度学习模型实现的核心工具。建议结合实践逐步掌握,例如通过官方文档进一步学习。🍉🍉🍉

http://www.xdnf.cn/news/696.html

相关文章:

  • 安卓手机怎样配置数据加速
  • Java File 类详解
  • 从事计算机视觉需要掌握哪些知识
  • 微信小程序通过mqtt控制esp32
  • Map遍历
  • Linux 进程概念补充 (自用)
  • 【数据结构】红黑树
  • 2181、合并零之间的节点
  • 右起第2个LED灯的闪烁(STC89C52单片机)
  • HTTP 1.0 和 2.0 的区别
  • (done) 吴恩达版提示词工程 1. 引言 (Base LLM 和 Instruction Tuned LLM)
  • ESP32开发之任务创建
  • 用P0口实现流水灯效果(STC89C52单片机)
  • JavaScript解密实战指南:从基础到进阶技巧
  • 硬件电路(24)-NE555振荡电路
  • 六、小白如何用Pygame制作一款跑酷类游戏(静态障碍物和金币的添加)
  • c++通讯录管理系统
  • 运筹学之引力搜索
  • Mac上Cursor无法安装插件解决方法
  • 【KWDB 创作者计划】_上位机知识篇---ESP32-S3Arduino
  • Aerich实战指南:零基础掌握异步ORM数据库迁移工具
  • Linux `init 6` 相关命令的完整使用指南
  • Android Gradle多渠道打包
  • 【自然语言处理与大模型】Linux环境下Ollama下载太慢了该怎么处理?
  • AIStarter新版本发布:模型、插件与工作流的高效管理工具
  • 【C++初阶】第15课—模版进阶
  • 多模态大语言模型arxiv论文略读(三十)
  • 设计心得——函数参数的封装
  • Redis缓存降级的4种策略
  • QT实现串口透传的功能