PyTorch 深度学习笔记(四)张量运算与变形——数值计算与索引进阶
系列导读本系列共 6 篇从 PyTorch 框架入门到实战案例带你系统掌握深度学习开发。上一篇PyTorch 张量基础——从零开始掌握 Tensor一、张量数值计算1.1 点乘运算Hadamard 积点乘是元素级乘积对应位置元素相乘使用mul()或*运算符importtorch data1torch.tensor([[1,3],[2,4]])data2torch.tensor([[2,2],[3,3]])# 方式 1torch.mul()datatorch.mul(data1,data2)print(data)# tensor([[2, 6],# [6, 12]])# 方式 2* 运算符datadata1*data2print(data)1.2 矩阵乘法 ⭐⭐⭐矩阵乘法要求第一个矩阵(n, m)× 第二个矩阵(m, p) 结果(n, p)Atorch.tensor([[1,2,3],[4,5,6]])# shape (2, 3)Btorch.tensor([[7,8],[9,10],[11,12]])# shape (3, 2)# 方式 1 运算符推荐data3A Bprint(A B --,data3)# 方式 2torch.matmul()data4torch.matmul(A,B)print(matmul --,data4)# 方式 3torch.mm()仅限 2Ddatatorch.mm(A,B)print(mm --,data)二、张量统计函数2.1 常用统计函数importtorchimportmath torch.manual_seed(42)xtorch.randint(0,10,(2,3),dtypetorch.float64)print(x)# tensor([[8., 2., 5.],# [1., 6., 7.]])# 1. 平均值print(平均值,x.mean())# 全局平均print(按列平均,x.mean(dim0))# 压缩行按列计算print(按行平均,x.mean(dim1))# 压缩列按行计算# 2. 求和print(求和,x.sum())print(按列求和,x.sum(dim0))print(按行求和,x.sum(dim1))# 3. 最值print(最小值,x.min())print(按行最小值,x.min(dim0))print(按列最小值,x.min(dim1))# 4. 幂次方print(平方,x.pow(2))# 5. 平方根print(平方根,x.sqrt())# 6. 指数 e^xprint(exp,x.exp())# 7. 自然对数 ln(x)print(log,x.log())dim 参数含义dim0按列计算压缩行结果形状去掉第 0 维dim1按行计算压缩列结果形状去掉第 1 维三、张量索引操作 ⭐⭐⭐⭐3.1 基础索引importtorch datatorch.randint(0,10,(3,4))print(data)# 行索引print(data[0])# 第 1 行# 列索引print(data[:,0])# 第 1 列# 单个元素print(data[0,1])# 第 1 行第 2 列3.2 列表索引# 取 (0,1) 和 (1,2) 两个位置的元素print(data[[0,1],[1,2]])# 输出tensor([data[0,1], data[1,2]])3.3 范围索引# 前 3 行的前 2 列print(data[:3,:2])# 第 2 行到最后的前 2 列print(data[2:,:2])3.4 布尔索引 ⭐⭐⭐# 第三列大于 5 的所有行print(data[data[:,2]5])# 第二行大于 5 的列maskdata[1]5resultdata[:,mask]print(result)3.5 高级索引难点# 取 0、1 行的 1、2 列共 4 个元素print(data[[[0],[1]],[1,2]])3.6 多维索引# 三维张量datatorch.randint(0,10,[3,4,5])# 0 轴上的第 1 个数据print(data[0,:,:])# 1 轴上的第 1 个数据print(data[:,0,:])# 2 轴上的第 1 个数据print(data[:,:,0])四、张量形状操作 ⭐⭐⭐⭐4.1 reshape在保持数据不变的前提下改变维度datatorch.tensor([[1,3,5],[2,4,8]])print(data.shape)# torch.Size([2, 3])# reshape 为 (1, 6)data2data.reshape(1,6)print(data2.shape)# torch.Size([1, 6])# reshape 为 (3, 2)data2data.reshape(3,2)print(data2.shape)# torch.Size([3, 2])4.2 squeeze 与 unsqueezedatatorch.randint(0,6,[2,3])print(data.shape)# torch.Size([2, 3])# unsqueeze在指定位置添加维度1升维y1data.unsqueeze(0)# 位置 0 添加维度 → shape (1, 2, 3)y2data.unsqueeze(1)# 位置 1 添加维度 → shape (2, 1, 3)y3data.unsqueeze(2)# 位置 2 添加维度 → shape (2, 3, 1)# squeeze删除维度1 的位置降维y4y3.squeeze(2)# 删除位置 2 的维度 1 → shape (2, 3)# squeeze() 不指定位置则删除所有维度1记忆口诀unsqueeze(0)→ 包成一整叠 →(1, 2, 3)比作书本unsqueeze(1)→ 每行单独包 →(2, 1, 3)比作每页纸unsqueeze(2)→ 每个数字单独包 →(2, 3, 1)比作纸上的字4.3 transpose 与 permutedatatorch.randint(0,6,(2,3,4))print(data.shape)# torch.Size([2, 3, 4])# transpose交换两个维度data2data.transpose(0,1)# 交换 0 和 1 → shape (3, 2, 4)data3data.transpose(0,2)# 交换 0 和 2 → shape (4, 3, 2)# permute一次交换多个维度参数是维度序号data3data.permute((2,0,1))# (2,3,4) → (4,2,3)print(data3.shape)# torch.Size([4, 2, 3])4.4 view 与 contiguous ⭐⭐⭐# view类似于 reshape但要求张量内存连续datatorch.tensor([[1,2,3],[4,5,6]])# 判断张量是否连续print(data.is_contiguous())# True# 连续的可以直接 viewdata2data.view(3,2)# transpose 后可能不连续data3data.transpose(0,1)print(data3.is_contiguous())# False# 不连续张量使用 view 会报错# data4 data3.view(3, 2) # ❌ 报错# 先用 contiguous() 转为连续再用 viewdata4data3.contiguous().view(3,2)print(data4.is_contiguous())# True判断方法id()判断是否是同一个 Python 对象data_ptr()判断是否共享底层存储五、运算与变形总结类别操作方法说明点乘元素级乘积*/torch.mul()对应位置相乘矩阵乘法矩阵乘积/matmul()/mm()线性代数矩阵乘统计平均值/求和/最值mean() / sum() / min() / max()dim 指定压缩维度数学函数幂/根/指数/对数pow() / sqrt() / exp() / log()元素级运算基础索引行/列/范围data[0] / data[:,0] / data[:3,:2]类似 NumPy布尔索引条件筛选data[data 5]返回满足条件的元素多维索引高维张量data[:, 0, :]指定轴取数据reshape改变形状.reshape()不改变数据squeeze降维.squeeze(dim)删除维度1unsqueeze升维.unsqueeze(dim)添加维度1transpose交换维度.transpose(a, b)一次交换两个permute重排维度.permute(dims)一次重排多个view视图变形.view()要求内存连续contiguous内存连续化.contiguous()配合 view 使用六、下一篇预告PyTorch 深度学习笔记五张量拼接与自动微分——构建神经网络基础将详细介绍张量拼接cat/stack、拆分chunk/split以及自动微分模块 autograd 的原理和使用方法。如果这篇文章对你有帮助欢迎点赞、收藏、关注你的支持是我持续创作的动力。

相关新闻

标准化开发框架:AI 数字人系统源码降低定制开发门槛

标准化开发框架:AI 数字人系统源码降低定制开发门槛

随着数字人应用行业持续扩张,不少企业有定制化改造需求,但普遍存在技术开发门槛高、开发周期长、改造成本不可控等痛点。市面上标准化成品数字人一体机优势在于即装即用,标准化交互流程能够满足基础展示、简单接待场景,项目落地周…

2026/8/1 8:33:35 阅读更多 →
团队5人被优化剩我一个,被剩下的那个用AI Agent扛下了所有需求

团队5人被优化剩我一个,被剩下的那个用AI Agent扛下了所有需求

张鹏永远记得那个周一的早晨。 会议室里坐着部门总监老赵和HRBP,没有寒暄,直接进入正题:“张鹏,考虑到目前的业务调整,你们组五个人要精简到一个人。” 张鹏坐在那里,手指无意识地攥紧了椅子扶手。 他是…

2026/8/1 8:32:30 阅读更多 →
Python实现LSB隐写术:图像中的信息安全隐藏

Python实现LSB隐写术:图像中的信息安全隐藏

1. LSB隐写术:数字图像中的秘密通信艺术当我们需要在数字图像中隐藏信息时,LSB(Least Significant Bit,最低有效位)隐写术是最直接有效的方法之一。这种技术利用了人眼对颜色微小变化不敏感的特性,通过修改…

2026/8/1 8:32:27 阅读更多 →

最新新闻

reTerminal E上Arduino实战:RTC、低功耗、音频与触摸集成指南

reTerminal E上Arduino实战:RTC、低功耗、音频与触摸集成指南

1. 项目概述:在reTerminal E系列上玩转Arduino的四大核心模块最近在折腾Seeed Studio的reTerminal E系列开发板,这是一块基于树莓派CM4核心的工业级边缘计算设备,性能强劲,接口丰富。但很多朋友拿到手后,除了跑Linux系…

2026/8/1 12:49:32 阅读更多 →
树莓派5通过PCIe接口集成5G模组:SIM8262E-M2 HAT+实战指南

树莓派5通过PCIe接口集成5G模组:SIM8262E-M2 HAT+实战指南

1. 项目缘起:当树莓派5遇上5G,一个硬件玩家的新玩具最近折腾树莓派5,总感觉少了点什么。千兆网口和Wi-Fi 6对于日常开发是够用了,但作为一个喜欢折腾硬件的玩家,总想给它加点“猛料”。尤其是在一些需要高带宽、低延迟…

2026/8/1 12:49:32 阅读更多 →
C语言云台深度开发:从PID控制到嵌入式系统架构实战

C语言云台深度开发:从PID控制到嵌入式系统架构实战

1. 项目概述:为什么选择C语言进行云台深度开发?在嵌入式控制和机器人领域,云台(Gimbal)是实现高精度姿态稳定的核心部件,从消费级无人机、手持稳定器到工业级视觉跟踪系统,其身影无处不在。当项…

2026/8/1 12:49:32 阅读更多 →
如何快速上手ETS2LA:欧卡2自动驾驶辅助的终极指南

如何快速上手ETS2LA:欧卡2自动驾驶辅助的终极指南

如何快速上手ETS2LA:欧卡2自动驾驶辅助的终极指南 【免费下载链接】ETS2LA Plugin based interface program for ETS2/ATS. 项目地址: https://gitcode.com/gh_mirrors/eur/ETS2LA 你是否曾经在《欧洲卡车模拟2》中因为长时间驾驶而感到疲惫?或者…

2026/8/1 12:49:32 阅读更多 →
靶场PHP函数与漏洞防御总结

靶场PHP函数与漏洞防御总结

靶场 PHP 函数整理与漏洞防御方式总结第一部分 靶场中用到的 PHP 函数 一、一句话木马 / 代码执行相关函数 / 语句作用靶场中的用法eval($code)把字符串当作 PHP 代码执行一句话木马核心&#xff1a;<?php eval($_POST[cmd]); ?>assert($code)断言&#xff0c;传入字符…

2026/8/1 12:49:32 阅读更多 →
英雄联盟Akari助手:免费开源的智能游戏伴侣,全面提升你的对战效率

英雄联盟Akari助手:免费开源的智能游戏伴侣,全面提升你的对战效率

英雄联盟Akari助手&#xff1a;免费开源的智能游戏伴侣&#xff0c;全面提升你的对战效率 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 还在…

2026/8/1 12:48:32 阅读更多 →

日新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速&#xff1a;macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南&#xff1a;3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗&#xff1f;ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片&#xff1a;为英语学习 App 打造桌面级学习助手适用平台&#xff1a;HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0&#xff08;API 26 Beta&#xff09;新增了 AgentCard 智能体卡片能力&#xff0c;这是继 HMAF&#xff08;鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档&#xff0c;可以直接使用&#xff01;系统支持图片、视频、摄像头等多种方式检测裂缝&#xff0c;功能强大实用。 1数据集6000张 8各类别

2026/7/31 1:03:03 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像&#xff01; pubg绝地求生目标检测数据集 1分类&#xff1a;e_body&#xff0c;14905个标签&#xff0c;txt格式 共计14244张图&#xff0c;99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/8/1 5:19:34 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别&#xff1a; allies enemy tag图片总量&#xff1a;7247张训练集&#xff1a;5139张验证集&#xff1a;1425张测试集&#xff1a;683张标注状态&#xff1a;全部已标注&#xff0c;即拿即用数据格式&#xff1a;支持YOLO格式及其他格式&#…

2026/8/1 10:33:33 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速&#xff1a;macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南&#xff1a;3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗&#xff1f;ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片&#xff1a;为英语学习 App 打造桌面级学习助手适用平台&#xff1a;HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0&#xff08;API 26 Beta&#xff09;新增了 AgentCard 智能体卡片能力&#xff0c;这是继 HMAF&#xff08;鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →