深度学习图解:张量的运算

神经网络中的数据通常以张量的形式表示,这些张量运算通过矩阵乘法、向量点积等线性代数运算来实现,对于模型的训练、推理和特征提取等任务至关重要。

在神经网络的前向传播过程中,输入数据、权重和偏置通常以张量的形式存在,并通过一系列的张量运算(如矩阵乘法、加法等)来计算输出。在反向传播过程中,梯度也是以张量的形式传播,用于更新模型的权重和偏置。

张量

一、平移、旋转、缩放

张量的平移、旋转、缩放是什么?在深度学习中,张量的平移、旋转和缩放等操作通常用于数据增强、图像变换和特征提取等任务。这些操作可以通过深度学习框架中的张量运算库(如NumPy、PyTorch或TensorFlow)来实现。

张量

张量的平移操作(Translation)是通过加上一个平移向量来实现的,这个向量决定了移动的距离和方向。

张量

张量的旋转操作(Rotation)则是通过将与一个旋转矩阵相乘来完成的,这个矩阵能够保持向量的长度和夹角不变,只改变方向。

张量

张量的缩放操作(Scaling)则是通过将张量与一个对角矩阵相乘来实现的,对角矩阵的对角线元素决定了各个方向上的缩放比例。

张量

“一图 + 一句话”彻底搞懂平移、旋转、缩放。

“张量的平移是加向量移动位置,旋转是乘旋转矩阵改变方向,缩放是乘对角矩阵调整尺寸。在深度学习中,这些操作对数据增强、图像变换等至关重要,能增加数据集多样性,助模型学更多特征,提性能。”

张量

二、线性变换和仿射变换

张量的线性变换和仿射变换是什么?在深度学习中,张量的线性变换是通过矩阵乘法保持向量线性关系的操作,而仿射变换则是线性变换后再加上一个平移向量的复合操作。

张量的线性变换操作(Linear Transform)是通过矩阵乘法将张量映射到另一个张量。与任意矩阵做点积运算,都可以实现一次线性变换,上面提到的缩放和旋转,都属于线性变换。

  • 缩放:通过与一个对角矩阵相乘来实现,其中对角矩阵的对角线元素表示各个方向上的缩放比例。

张量

  • 旋转:通过与一个正交矩阵相乘来实现,这个矩阵能够保持向量的长度和夹角不变,只改变向量的方向。

张量

张量的仿射变换操作(Affine Transform)是通过先进行一个线性变换(即与矩阵相乘),再添加一个平移向量来完成的复合变换。一个没有激活函数的Dense层就是一个仿射层。

张量

带有ReLU激活函数的Dense层通过非线性激活打破了仿射变换的线性叠加性,使得多层神经网络能够实现复杂的非线性变换,而纯仿射变换的多层网络则等同于一个线性模型。

张量

“一图 + 一句话”彻底搞懂线性变换和仿射变换。

“线性变换通过矩阵乘法保持张量的线性关系,实现缩放和旋转等操作;而仿射变换则是在线性变换的基础上,再添加一个平移向量,完成更复杂的复合变换,无激活函数的Dense层即仿射层,但加入非线性激活函数(如ReLU)后,多层神经网络可实现复杂的非线性变换。”

张量

来源:架构师带你玩转AI

THE END