张量介绍 张量(tensor)是一个多维的数据存储形式,数据的的维度被称为张量的阶。它可以看成是向量和矩阵在多维空间中的推广,向量可以看成是一维张量,矩阵可以看成是两维的张量。下面是一个三阶张量的例子,它有三维即3个mode
文章图片
值得注意的是这里说的张量是一个具有某种排列形式的数据的集合,它和物理中的张量场是不同的。
传统的方法(例如ICA,PCA、SVD和NMF)对于维数比较高的数据,一般将数据展成二维的数据形式(矩阵)进行处理,这种处理方式使得数据的结构信息丢失(比如说图像的邻域信息丢失),使得求解往往病态。而采用张量对数据进行存储,能够保留数据的结构信 息,因此近些年在图像处理以及计算机视觉等领域得到了一些广泛的应用。张量分解中常见的两种分解是CP分解(Canonical Polyadic Decomposition (CPD)和Tucker分解(Tucker Decomposition)。下面将重点介绍这两种分解,并且将他们在图像处理中的一些应用进行阐 述。
张量定义及运算
张量(Tensor)
一个阶 维的张量可以表示为 张量中的每一个元素可以由表示,其中()。
纤维(Fiber)
纤维是指从张量中抽取向量的操作。在矩阵中固定其中一个维度,可以得到行或者列。类似于矩阵操作,固定其它维度,只保留一个维度变化,可以得到有纤维的概念。比如说我们对上图中的三阶张量分别按照I,J,K 三个mode进行Fiber操作可以得到如图 所示的,,三个维度的纤维。
文章图片
切片(Slice)
【转( 张量分解 二)】切片操作是指在张量中抽取矩阵的操作。在张量中如果保留两个维度变化,其它的维度变化可以得到一个矩阵,这个矩阵即为张量的切片。对图中的张量分别按照I,J,K三个方向进行操作可以得到如下图所示的,, 三个维度的切片。
文章图片
内积(Inner product)
两个大小相同的张量定义为张量中相对应的元素的乘积之和形式,即:
相应张量的范数定义为:
,即所有元素的平方和的平方根。
矩阵展开(Unfolding-Matricization)
张量的矩阵展开是将一个张量的元素重新排列(即对张量的mode-n的纤维进行重新排列),得到一个矩阵的过程,张量在第维度上展开矩阵表示为。对一个三阶张量按照I,J,K三个方向进行矩阵展开得到的矩阵如下图
文章图片
外积(Outer Product)
定义张量和张量的外积为:
其中:
即张量 是张量和张量 中的每一个元素的乘积构成的。特别地如果 和 分别是一个向量那么他们的外积是一个秩为1的矩阵,如果和和 分别是一个向量,那么他们的外积是一个秩为1三阶张量。
Kronecker乘积(Kronecker Product)
Kronecker乘积定义在两个矩阵上的运算:
文章图片
Hadamard乘积(Hadamard Product)
Hadamard 乘积定义在两个相同大小的矩阵上的运算:
文章图片
Khatri-Rao乘积(Khatri-Rao Product)
Khatri-Rao乘积定义了两个相同列数的矩阵上的操作,它的过程如下图所示。
文章图片
张量与矩阵的模积(Mode-n Product)
张量与矩阵的模积定义了一个张量和一个矩阵 的n-mode乘积 ,其元素定义为
这个定义可以写成沿mode-n展开的形式为:
如果那么张量和矩阵的乘积可以看作是一个降维的过程,它把一个高维度的张量映射到一个低维度的张量空间。图 演示了一个张量 和一个矩阵的乘积最终得到张量,张量的第一个维度由7变成了4。
文章图片
张量与向量的模积(Mode-n Product)
张量与向量的模积定义了一个张量与向量的运算为:
一个向量和一个张量进行模乘可以减少张量的阶数,下图演示了一个张量的阶数由3阶变为0阶的过程。
文章图片
[转自](https://blog.csdn.net/kebu12345678/article/details/80709185)
推荐阅读
- paddle|动手从头实现LSTM
- 人工智能|干货!人体姿态估计与运动预测
- 推荐系统论文进阶|CTR预估 论文精读(十一)--Deep Interest Evolution Network(DIEN)
- Python专栏|数据分析的常规流程
- 读书笔记|《白话大数据和机器学习》学习笔记1
- Pytorch学习|sklearn-SVM 模型保存、交叉验证与网格搜索
- Python机器学习基础与进阶|Python机器学习--集成学习算法--XGBoost算法
- 深度学习|深度学习笔记总结
- 机器学习|机器学习Sklearn学习总结
- 机器学习|线性回归原理与python实现