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

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加速和自动微分,是深度学习模型实现的核心工具。建议结合实践逐步掌握,例如通过官方文档进一步学习。🍉🍉🍉

相关文章:

  • git学习日志
  • 从跌倒到领跑:北京亦庄机器人马拉松如何改写人机协作未来?
  • 深度解析微前端架构设计:从monorepo工程化设计到最佳实践
  • 云效部署实现Java项目自动化部署图解
  • 飞帆平台 cdn 资源集锦
  • 详解trl中的GRPOTrainer和GRPOConfig
  • DeepSeek R1 7b,Langchain 实现 RAG 知识库 | LLMs
  • 初级达梦dba的技能水准
  • 绝对路径与相对路径
  • uniapp-商城-29-vuex 关于系统状态的管理
  • AIGC-几款医疗健康智能体完整指令直接用(DeepSeek,豆包,千问,Kimi,GPT)
  • 8节串联锂离子电池组可重构buck-boost均衡拓扑结构 simulink模型仿真
  • 【2】Kubernetes 架构总览
  • 【android bluetooth 框架分析 02】【Module详解 12】【 BidiQueue、BidiQueueEnd、Queue介绍】
  • 10【借用·规则】引用 (``, `mut`):安全、高效地访问数据
  • 每日一题——最小测试用例集覆盖问题
  • javaSE.二叉树的遍历
  • 【Vim】vim的简单使用
  • 【后端开发】MyBatis
  • 26考研 | 王道 | 数据结构 | 第六章 图
  • GDP增长6.0%,一季度浙江经济数据出炉
  • 全球南方声势卓然壮大的历史逻辑——写在万隆会议召开70周年之际
  • 报告:去年物业服务百强企业营业收入均值同比增长3.52%
  • 遭遇FIFA三个转会窗禁令,申花有苦难言将选择赔偿
  • 9部门发文促进家政服务消费扩容升级
  • 多家期刊就AI辅助写作表态:不想让放弃思考毁了一代人