社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

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

架构师带你玩转AI • 1 月前 • 45 次点击  
神经网络中的数据通常以张量的形式表示,这些张量运算通过矩阵乘法、向量点积等线性代数运算来实现,对于模型的训练、推理和特征提取等任务至关重要。
在神经网络的前向传播过程中,输入数据、权重和偏置通常以张量的形式存在,并通过一系列的张量运算(如矩阵乘法、加法等)来计算输出。在反向传播过程中,梯度也是以张量的形式传播,用于更新模型的权重和偏置

一、平移、旋转、缩放

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

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

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

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

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

二、线性变换和仿射变换

张量的线性变换和仿射变换是什么在深度学习中,张量的线性变换是 通过矩阵乘法保持向量线性关系的操作,而仿射变换则是线性变换后再加上一个平移向量的复合操作
张量的线性变换操作(Linear Transform)是通过 矩阵乘法将张量映射到另一个张量。与任意矩阵做点积运算,都可以实现一次线性变换,上面提到的缩放和旋转,都属于线性变换。
  • 缩放:通过与一个对角矩阵相乘来实现 ,其中对角矩阵的对角线元素表示各个方向上的缩放比例。

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

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

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

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

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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/178219
 
45 次点击