PyTorch 深度学习笔记(四)张量运算与变形——数值计算与索引进阶

发布时间:2026/8/1 8:33:43

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:43

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

C++11 Generator模式:协程雏形与惰性求值数据流处理

C++11 Generator模式:协程雏形与惰性求值数据流处理

2026/8/1 8:33:43

1. 项目概述与核心价值最近在整理自己的C工具箱时,又翻出了那个让我在早期C11项目中省下大量重复劳动的老伙计——一个名为“generator”的开源项目。它不是指某个特定的、大名鼎鼎的库,而是一类设计模式的典型实现,其核心思想是利用C11引入的…

MATLAB QAM调制仿真:从原理到实践,掌握qammod函数核心参数与BER性能分析

MATLAB QAM调制仿真:从原理到实践,掌握qammod函数核心参数与BER性能分析

2026/8/1 8:33:43

1. 项目概述:从零上手QAM调制如果你正在学习数字通信、信号处理,或者在做一些无线通信相关的仿真项目,那么“调制”这个概念你一定绕不开。而在众多调制方式里,QAM(正交幅度调制)因其高频谱效率&#xff0c…

Unity VFX Graph系统架构:从粒子流水线到复杂特效的模块化设计

Unity VFX Graph系统架构:从粒子流水线到复杂特效的模块化设计

2026/8/1 9:23:45

1. 项目概述:从粒子系统到视觉特效图景的跃迁如果你是从Unity传统的粒子系统(Particle System)时代走过来的开发者,第一次打开Visual Effect Graph(后文简称VFX Graph)的编辑器界面,那种感觉可能…

校招信息战:四层情报网络与精准投递策略全解析

校招信息战:四层情报网络与精准投递策略全解析

2026/8/1 9:23:45

1. 从迷茫到清晰:校招信息渠道的本质是什么? 又到了一年一度的校招季,后台和社群里又多了很多焦虑的私信:“学长,我该去哪里找实习信息?”“官网投了简历没回应怎么办?”“感觉大家都在偷偷找实…

如何彻底解决Windows C盘爆红问题:Windows Cleaner完整指南

如何彻底解决Windows C盘爆红问题:Windows Cleaner完整指南

2026/8/1 9:23:45

如何彻底解决Windows C盘爆红问题:Windows Cleaner完整指南 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是否经常被Windows系统C盘空间不足的红色…

笙科 A8103 无线讲解器完整方案参数(原厂官方规格,导游 / 团队对讲专用 2.4G 语音 SoC

笙科 A8103 无线讲解器完整方案参数(原厂官方规格,导游 / 团队对讲专用 2.4G 语音 SoC

2026/8/1 9:23:45

1. 发射机(导游主机)芯片:A8103音频:驻极体麦克风 内置 MIC 放大按键:频道切换、音量 、电源开关、PT 一键对讲外设:充电 IC、锂电池、状态 LED、陶瓷天线协议:一发射多接收(一对多…

从广东到海南,为什么最近卓艺美仿石漆经常走访工地、探访市场?

从广东到海南,为什么最近卓艺美仿石漆经常走访工地、探访市场?

2026/8/1 9:23:45

最近,不少仿石漆从业者都会在全国各地的工地现场“偶遇”卓艺美仿石漆,我们正步履不停地深耕一线,扎根各大施工项目,其中经常能看到“懂点施工的小伍”的身影。从广东别墅实景案例拍摄、臻玉石流云珀黄样板房施工展示,…

G-Helper完全指南:华硕笔记本轻量级控制工具的5个高效使用技巧

G-Helper完全指南:华硕笔记本轻量级控制工具的5个高效使用技巧

2026/8/1 9:13:45

G-Helper完全指南:华硕笔记本轻量级控制工具的5个高效使用技巧 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zen…

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

2026/7/30 9:53:22

目标:电脑作为RTSP 服务端,循环推送 H264/H265 视频流; RDK X5 通过 rtsp2display 拉流预览,完全不需要在开发板编译 live555。 提供两套成熟方案: ✅ 方案 A:FFmpeg(最简单,优先推…

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

2026/8/1 0:15:49

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

2026/8/1 4:47:48

说实话,提到PDF拆分再压缩,我真是被折腾得够呛。 上个月公司年度合同归档,一份300多页的PDF总合同,需要按年份拆分成三个独立文件,再分别压缩到10MB以内方便邮件发送各部门确认。我心想这还不简单?先找个海…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/1 0:03:03

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/1 0:03:03

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/1 0:03:03

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/1 0:03:03

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/1 0:03:03

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/1 0:03:03

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…