发布时间:2026/8/16 4:31:16
PyTorch深度学习基础(一):张量 Tensor 与基本数据操作详解 本系列目标从零开始学习深度学习基础掌握 PyTorch 编程核心工具为后续学习神经网络、CNN、Transformer、大模型等内容打下基础。在深度学习中我们每天都在处理大量的数据例如图片二维像素矩阵文本词向量序列蛋白质序列氨基酸编码矩阵图结构节点和边的特征矩阵这些数据最终都会被转换为一种统一的数据结构Tensor张量PyTorch 中最核心的数据结构就是 Tensor。本节我们将学习什么是 Tensor如何创建 TensorTensor 的形状和维度Tensor 基本运算广播机制索引与切片内存优化Tensor 与 NumPy 转换1. PyTorch简介PyTorch 是目前最流行的深度学习框架之一由 Meta AI 开发。它提供自动求导机制AutogradGPU 加速计算神经网络模块torch.nn优化算法torch.optim大量深度学习工具安装完成后我们首先导入 PyTorchimporttorch注意虽然框架名字叫PyTorch但是 Python 中导入模块使用torch而不是pytorch2. 什么是Tensor张量Tensor定义Tensor 可以理解为一个包含数字的数据容器是深度学习中存储数据的基本单位。例如标量 Scalar一个数字x5 x 5x5对应torch.tensor(5)向量 Vector一维数组x[1,2,3,4]x \begin{bmatrix}1,2,3,4 \end{bmatrix}x[1,2,3,4​]代码xtorch.tensor([1,2,3,4])矩阵 Matrix二维数组X[1234] X \begin{bmatrix} 12\\ 34 \end{bmatrix}X[13​24​]代码torch.tensor([[1,2],[3,4]])高维Tensor例如图片Height×Width×Channel Height×Width×ChannelHeight×Width×ChannelRGB图片224×224×3 224×224×3224×224×3Batch图片Batch×Channel×Height×Width Batch×Channel×Height×WidthBatch×Channel×Height×Width例如torch.zeros((32,3,224,224))表示32张图片3个颜色通道224×224像素3. 创建Tensor3.1 使用 arange 创建连续数据xtorch.arange(12)print(x)输出tensor([0,1,2,3,4,5,6,7,8,9,10,11])这里生成0,1,2,...,11 0,1,2,...,110,1,2,...,11共12个元素。4. Tensor形状 ShapeTensor 的形状可以通过x.shape查看输出torch.Size([12])表示这是一个长度为12的一维向量。5. Tensor元素数量使用x.numel()输出12numel:number of elements表示Tensor中元素总数量。6. Tensor改变形状 reshape深度学习中经常需要调整数据维度。例如原始[0,1,2,3,4,5,6,7,8,9,10,11]转换为3行4列矩阵Xx.reshape(3,4)print(X)结果tensor([ [0,1,2,3], [4,5,6,7], [8,9,10,11] ])注意reshape不会改变数据只是改变观察方式。7. 自动推断维度 -1例如x.reshape(-1,4)PyTorch 会自动计算第一维是多少。因为$ 12 \div 43 $所以(3,4)等价于x.reshape(3,4)8. 创建特殊Tensor8.1 全零矩阵torch.zeros((2,3,4))表示2个矩阵每个矩阵3行4列结果[ [ [0,0,0,0], [0,0,0,0], [0,0,0,0] ], [ ... ] ]8.2 全1矩阵torch.ones((2,3,4))所有元素xi1 x_i1xi​19. 随机初始化Tensor神经网络参数通常需要随机初始化。例如生成N(0,1) N(0,1)N(0,1)即均值0标准差1代码torch.randn(3,4)输出类似[ [-0.13,0.22,...], [1.32,-0.5,...] ]为什么需要随机初始化因为如果所有神经元参数相同梯度相同学习能力下降所以需要随机打破对称性。10. Tensor数学运算PyTorch支持加法 减法 -乘法 *除法 /幂运算 **例如xtorch.tensor([1.,2,4,8])ytorch.tensor([2.,2,2,2])print(xy)print(x-y)print(x*y)print(x/y)print(x**y)结果加法[3,4,6,10] [3,4,6,10][3,4,6,10]乘法[2,4,8,16] [2,4,8,16][2,4,8,16]11. 指数函数torch.exp(x)计算ex e^xex例如e12.718 e^12.718e12.718在深度学习中Softmaxsoftmax(xi)exi∑exj softmax(x_i) \frac{e^{x_i}} {\sum e^{x_j}}softmax(xi​)∑exj​exi​​就使用指数函数。12. Tensor拼接 concat多个Tensor合并torch.cat()例如两个矩阵Xtorch.arange(12).reshape(3,4)Ytorch.ones((3,4))按行拼接torch.cat((X,Y),dim0)结果形状64 6464按列拼接torch.cat((X,Y),dim1)结果38 383813. Tensor比较运算例如XY返回布尔矩阵True False常用于判断预测是否正确创建mask14. Tensor求和X.sum()例如012...1166 012...1166012...1166输出tensor(66.)15. Tensor广播机制 Broadcasting这是PyTorch非常重要的功能。例如atorch.arange(3).reshape(3,1)btorch.arange(2).reshape(1,2)a:[ [0], [1], [2] ]b:[ [0,1] ]两个形状不同(3,1) (1,2)但是abPyTorch自动扩展a:0 0 1 1 2 2b:0 1 0 1 0 1结果[ [0,1], [1,2], [2,3] ]这就是广播机制16. Tensor索引和切片类似Python列表。获取最后一行X[-1]获取第2~3行X[1:3]修改元素X[1,2]9表示第2行第3列修改整行X[0:2,:]12表示前两行全部设置为12。17. 节省Tensor内存普通操作YYX会创建新的Tensor修改Y引用因此内存增加。使用Y[:]XY可以原地修改。也可以XY减少内存开销。18. Tensor与NumPy转换PyTorchTensorNumPyndarray二者可以互相转换。Tensor → NumPyAX.numpy()NumPy → TensorBtorch.tensor(A)19. Tensor转换Python数字如果Tensor只有一个元素atorch.tensor([3.5])转换a.item()结果3.5也可以float(a)int(a)总结本节学习了PyTorch最核心的数据结构Tensor掌握功能方法创建Tensortorch.tensor生成连续数字torch.arange查看形状shape元素数量numel改变维度reshape全0zeros全1ones随机初始化randn拼接cat求和sum索引[]广播broadcastingNumPy转换numpy()深度学习核心思想神经网络本质上就是输入数据→Tensor→矩阵运算→Tensor→预测结果 输入数据 \rightarrow Tensor \rightarrow 矩阵运算 \rightarrow Tensor \rightarrow 预测结果输入数据→Tensor→矩阵运算→Tensor→预测结果因此掌握 Tensor是学习 PyTorch 和深度学习的第一步。

相关新闻

2026/8/16 4:31:16

IDEA Vim配置终极指南:从零打造高效开发环境

1. 项目概述:为什么你的IDEA需要一个专属的Vim配置? 如果你是一名Java开发者,或者深度使用JetBrains全家桶(如IntelliJ IDEA、PyCharm、WebStorm),同时又对Vim的高效编辑模式念念不忘,那么 .id…

2026/8/16 4:26:15

正斜杠与反斜杠:跨平台开发中的路径分隔符避坑指南

1. 从一次文件路径报错说起:为什么一个符号能让人抓狂?那天下午,我正在调试一个跨平台的数据处理脚本。在Windows上跑得飞快的程序,一放到Linux服务器上就立刻报错,错误信息直指一个文件路径:“No such fil…

2026/8/16 6:36:23

CAN错误

错误种类1、位检测->位错误 位检测范围一直到EOF结束 检测到总线位状态与自身送出的位不同 仲裁或者ACK位期间送出“隐性”位除外 2、填充检测->填充错误 发送节点进行位填充,位填充编码是发送5个连续相同的极性位后,自动插入一个极性相反的的位。…

2026/8/16 6:36:23

Maven依赖冲突排查:从fastjson升级到fastjson2的实战避坑指南

1. 项目概述:一次由Maven依赖升级引发的“薛定谔”异常最近在维护一个老项目时,碰到了一个典型的“开发环境正常,生产环境爆炸”的诡异问题。项目原本使用的是fastjson 1.2.83,由于众所周知的安全漏洞问题,团队决定将其…

2026/8/16 6:36:22

从Dev-C++到VSCode:C语言开发环境现代化配置全攻略

如果你刚开始学C语言,还在用Dev-C,或者被各种IDE的英文界面劝退,这篇文章就是为你写的。这不是一篇简单的“安装教程”。我想和你聊一个更本质的问题:为什么从Dev-C切换到VSCode,对初学者来说,不是一次简单…

2026/8/16 6:31:22

从零构建手写数字识别系统:基于MNIST的机器学习全流程实践

1. 项目概述:从零构建一个手写数字识别系统最近几年,无论是学生做课程设计、毕业设计,还是开发者入门机器学习,手写数字识别(Handwritten Digit Recognition)几乎成了一个“必刷”的经典项目。原因很简单&a…

2026/8/16 0:00:35

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:36

工业传感器与变送器详解:序章 从物理世界到工业数据

序章 从物理世界到工业数据 ——重新认识工业传感器与变送器 工业自动化系统正变得日益复杂。今天的工业现场早已不是简单的控制回路,而是由多层技术共同构成的立体体系:PLC、DCS、SCADA、MES、工业互联网、边缘计算与人工智能。控制系统可以执行复杂算法,工业网络可以实现…

2026/8/16 0:00:35

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/16 0:00:36

工业传感器与变送器详解:序章 从物理世界到工业数据

序章 从物理世界到工业数据 ——重新认识工业传感器与变送器 工业自动化系统正变得日益复杂。今天的工业现场早已不是简单的控制回路,而是由多层技术共同构成的立体体系:PLC、DCS、SCADA、MES、工业互联网、边缘计算与人工智能。控制系统可以执行复杂算法,工业网络可以实现…

2026/8/15 9:46:39

实测才敢推 AI论文网站 2026最新测评与推荐

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

2026/8/15 4:56:16

2026必备!AI论文网站测评:最新推荐与深度对比

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

2026/8/15 9:46:30

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

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