【AI邪修·神经网络】神经网络基础—核心数据结构—张量
1. 从标量到张量
问AI:
什么是张量?
AI答:
在深度学习中,张量不仅是多维数据容器,更重要的是它支持自动微分和GPU加速计算,这是普通多维数组不具备的核心特性。比如PyTorch和TensorFlow中的张量,除了存储数据,还记录了计算图信息,能够反向传播梯度。
个人理解:
先理解维度。维度就是自由度,指互不相关的变化量的个数。比如说一个物体的高度,重量,颜色,都是可以独立改变的,所以可以组成三个变化维度,就是所有可能值组成的变化空间。从面向对象的角度来说,维度就是一个对象有自由变化的属性的个数。
什么是张量?举例:(10)就是一个一维张量,(10, 20)就是一个二维张量,(10, 20, 30)就是一个三维张量,(10, 20, 30, 40)就是一个四维张量。所以简单来说,张量就是多维向量,但是到此为止,不要继续向几何方面联想,因为张量的几何意义,只是张量所能表达的含义之一。
张量归张量,含义归含义! 这是理解张量,区分不同量的要点!张量只是一种数学表示方法,数学工具,应用中可以被赋予任意的含义。
比如说,张量(20, 30)你可以认为它描述了一个二维向量,也可以认为它描述了一个长为20,宽为30的一块区域。前者描述了二维空间中的一个有方向和长度的向量点,后者描述了一个面积大小或者形状。不管它描述了什么,它的数学表示都是一样的。不要去区分什么是标量,向量,张量,所有量都是张量!矩阵只是张量的集合。
比如说神经网络中会描述一个网络的输入图像数据的形状,通常用四维张量表示,即BCHW(批量数,通道数,高度,宽度),那么图像个数 = 批量数 x 通道数,像素个数 = 批量数 x 通道数 x 高度 x 宽度。
所以不要纠结张量是什么含义,张量的含义要在具体的场景下才能描述清楚,张量只是一种通用的数学工具而已!
2.张量在神经网络中的地位
问AI:
是不是神经网络中几乎都在用张量或者说离不开张量?
AI答:
是的,神经网络几乎完全依赖张量。
张量是深度学习的核心数据结构,几乎所有现代深度学习框架(如PyTorch、TensorFlow、JAX)都围绕张量构建。神经网络的输入数据(如图像、文本序列)、权重参数、中间计算结果、梯度信息等都以张量形式存储和计算。
张量不仅仅是多维数组,更重要的是它们支持自动微分和GPU加速,这是训练神经网络的关键能力。框架通过张量追踪计算图,实现反向传播算法,自动计算梯度用于参数更新。可以说,没有张量,现代深度学习的高效训练和推理就无从谈起。
3.张量的使用
张量是神经网络框架(pytorch, tensorflow)中的核心数据结构,经常用到。所以一般输入的图片都需要转换成张量才能被计算。从编程的角度说,张量的每一列代表了事物的一种属性,大模型中的词向量通常用几千维的张量,具有极高的表达能力。
问AI:
torch中toTensor()函数作用的什么,为什么要把图片toTensor()?
AI答:
toTensor()就是给图片办一张「神经网络身份证」。
它主要做三件事:
改格式:从图片格式(如jpg、png)变成神经网络能看懂的数字格式(张量)。
缩数值:把像素亮度从0-255的整数,变成0-1之间的小数,神经网络处理起来更顺手。
调顺序:把图片的「高×宽×颜色通道」排布,改成神经网络最喜欢的「颜色通道×高×宽」排布。
一句话总结:没有 toTensor(),图片就进不了神经网络的大门。
好了,下一篇直接让AI分析代码,AI之下没有看不懂的代码。
更多推荐
所有评论(0)