张量的基本概念及应用
文章目录
- 张量
- 张量及其表示
- 张量的线性代数表示
- 三阶张量
- 张量的矩阵化和向量化
- 张量的水平展开与向量化
- 张量的基本代数运算
- 张量的內积、范数和外积
张量
基于张量的数据分析称为张量分析(tensor analysis),属于多重线性数据分析(multilinear data analysis)。
张量及其表示
数据沿一相同方向的排列称为一路阵列。标量称为零路阵列,行向量和列向量称为沿水平和垂直方向排列的一路阵列。矩阵是数据沿水平和垂直方向排列的二路阵列。张量即为数据的多路阵列表示,一个张量就是一个多路阵列或多维阵列,它是矩阵的一种扩展。
张量的数学符号表示为花体符号如T,A,X\mathcal{T,A,X}T,A,X。nnn路阵列表示为nnn阶张量,是定义在nnn个向量空间的笛卡尔积上的多重线性函数,记为T∈KI1×I2×⋯×In\mathcal{T} \in\mathbb{K}^{I_1\times I_2\times \cdots \times I_n}T∈KI1×I2×⋯×In。
其中K\mathbb{K}K代表实数域R\mathbb{R}R或复数域C\mathbb{C}C。张量是跨越nnn个向量空间的多线性映射,有:
T:KI1×KI2×⋯×KIn→KI1×I2×⋯×In\mathcal{T}:\mathbb{K}^{I_1}\times\mathbb{K}^{I_2}\times\cdots\times\mathbb{K}^{I_n}\rightarrow\mathbb{K}^{I_1\times I_2\times \cdots \times I_n} T:KI1×KI2×⋯×KIn→KI1×I2×⋯×In
张量在各个领域均有应用,包括医学,化学等。
张量的线性代数表示
线性代数即有限维向量空间的矩阵的代数,定义一个有限维向量空间的线性算子。多重线性代数即高阶张量代数,定义了一组有限维向量空间的多重线性算子。
矩阵A∈Km×n{\bm{A}}\in\mathbb{K}^{m\times n}A∈Km×n用其元素和矩阵符号表示[⋅][\cdot][⋅]表示为A=[aij]i,j=1m,n{\bm{A}} = [a_{ij}]_{i,j=1}^{m,n}A=[aij]i,j=1m,n。同样地,张量的表示可以写为A∈KI1×I2×⋯×In\mathcal{A} \in\mathbb{K}^{I_1\times I_2\times \cdots \times I_n}A∈KI1×I2×⋯×In使用双重矩阵符号{⋅}\begin{Bmatrix}\cdot \end{Bmatrix}{⋅}表示为A={ai1⋯in}i1,⋯in=1I1,⋯,In\mathcal{A}= \begin{Bmatrix}a_{i_1\cdots i_n} \end{Bmatrix}_{i_1,\cdots i_n=1}^{I_1,\cdots,I_n}A={ai1⋯in}i1,⋯in=1I1,⋯,In,其中ai1⋯ina_{i_1\cdots i_n}ai1⋯in是张量第(i1⋯in)({i_1\cdots i_n})(i1⋯in)元素。
三阶张量
最常用的是三阶张量,有时也称为三维矩阵。
三阶张量的三路阵列不以行向量、列向量等相称,改称张量纤维(tensor fiber)。纤维是只保留一个下标可变,固定其他所有下标不变的一路阵列。水平纤维、竖直纤维、纵深纤维。例如:三阶张量A∈KI×J×K\mathcal{A}\in\mathbb{K}^{I\times J\times K}A∈KI×J×K,其符号表示纤维为:ai:k,a:jk,aij:a_{i:k},a_{:jk},a_{ij:}ai:k,a:jk,aij:。
- 定义1:NNN阶张量A={ai1⋯in}i1,⋯in=1I1,⋯,In∈KI1×I2×⋯×In\mathcal{A}= \begin{Bmatrix}a_{i_1\cdots i_n} \end{Bmatrix}_{i_1,\cdots i_n=1}^{I_1,\cdots,I_n}\in \mathbb{K}^{I_1\times I_2\times \cdots\times I_n}A={ai1⋯in}i1,⋯in=1I1,⋯,In∈KI1×I2×⋯×In的模式-nnn向量是一个以ini_nin为元素下标变量,而其他下标均固定不变的InI_nIn维向量,记作Ai1⋯in−1:in+1⋯iN{\bf{A}}_{i_1\cdots i_n-1:i_n+1\cdots i_N}Ai1⋯in−1:in+1⋯iN。
注意张量阶数和维数的区别:NNN称为阶数,InI_nIn称为第nnn路阵列的维数。
高阶张量也可以使用矩阵的集合表示。如三阶张量可以使用矩阵组成水平切片、侧向切片、正面切片等,符号表示为:Ai::,A:j:,A::k{\bf{A}}_{i::},{\bf{A}}_{:j:},{\bf{A}}_{::k}Ai::,A:j:,A::k。
切片的数学表示:
- 三阶张量A∈KI×J×K\mathcal{A}\in\mathbb{K}^{I\times J\times K}A∈KI×J×K有III个水平切片
Ai::=[ai11⋯ai1K⋮⋱⋮aiJ1⋯aiJK]=[ai:1,⋯,ai:K]=[ai1:⋮aiJ:],i=1,⋯,I{\bf{A}}_{i::}=\begin{bmatrix}a_{i11}&\cdots & a_{i1K}\\ \vdots & \ddots & \vdots \\ a_{iJ1} & \cdots & a_{iJK}\end{bmatrix}=\begin{bmatrix}\bm{a}_{i:1},\cdots,\bm{a}_{i:K}\end{bmatrix}=\begin{bmatrix}\bm{a}_{i1:}\\\vdots\\\bm{a}_{iJ:}\end{bmatrix},i=1,\cdots,I Ai::=⎣⎢⎡ai11⋮aiJ1⋯⋱⋯ai1K⋮aiJK⎦⎥⎤=[ai:1,⋯,ai:K]=⎣⎢⎡ai1:⋮aiJ:⎦⎥⎤,i=1,⋯,I - 三阶张量A∈KI×J×K\mathcal{A}\in\mathbb{K}^{I\times J\times K}A∈KI×J×K有JJJ个侧向切片
A:j:=[a1j1⋯aIj1⋮⋱⋮a1jK⋯aIjK]=[a1j:,⋯,aIj:]=[a:j1⋮a:jK],j=1,⋯,J{\bf{A}}_{:j:}=\begin{bmatrix}a_{1j1}&\cdots & a_{Ij1}\\ \vdots & \ddots & \vdots \\ a_{1jK} & \cdots & a_{IjK}\end{bmatrix}=\begin{bmatrix}\bm{a}_{1j:},\cdots,\bm{a}_{Ij:}\end{bmatrix}=\begin{bmatrix}\bm{a}_{:j1}\\\vdots\\\bm{a}_{:jK}\end{bmatrix},j=1,\cdots,J A:j:=⎣⎢⎡a1j1⋮a1jK⋯⋱⋯aIj1⋮aIjK⎦⎥⎤=[a1j:,⋯,aIj:]=⎣⎢⎡a:j1⋮a:jK⎦⎥⎤,j=1,⋯,J
3.三阶张量A∈KI×J×K\mathcal{A}\in\mathbb{K}^{I\times J\times K}A∈KI×J×K有KKK个正面切片
A::k=[a11k⋯a1Jk⋮⋱⋮aI1k⋯aIJk]=[a:1k,⋯,a:Jk]=[a1:k⋮aI:k],k=1,⋯,K{\bf{A}}_{::k}=\begin{bmatrix}a_{11k}&\cdots & a_{1Jk}\\ \vdots & \ddots & \vdots \\ a_{I1k} & \cdots & a_{IJk}\end{bmatrix}=\begin{bmatrix}\bm{a}_{:1k},\cdots,\bm{a}_{:Jk}\end{bmatrix}=\begin{bmatrix}\bm{a}_{1:k}\\\vdots\\\bm{a}_{I:k}\end{bmatrix},k=1,\cdots,K A::k=⎣⎢⎡a11k⋮aI1k⋯⋱⋯a1Jk⋮aIJk⎦⎥⎤=[a:1k,⋯,a:Jk]=⎣⎢⎡a1:k⋮aI:k⎦⎥⎤,k=1,⋯,K
张量的矩阵化和向量化
张量的计算中希望使用矩阵代表一个三阶张量。将一个三路或NNN路阵列重新组织成一个矩阵形式的变换称为张量的矩阵化(matricization or matricizing)。也称张量的展开(unfolding)或扁平化(flattening)。
向量化同理。
张量的水平展开与向量化
张量的基本代数运算
张量的內积、范数和外积
- 定义:张量的內积,若A,B∈T(I1,I2,⋯,In)\mathcal{A,B}\in \mathcal{T}(I_1,I_2,\cdots,I_n)A,B∈T(I1,I2,⋯,In),则A\mathcal{A}A和B\mathcal{B}B的內积为标量,定义为两个张量的列向量化之间的內积
⟨A,B⟩=def⟨vec(A),vec(B)⟩=(vec(A))Hvec(B)=∑i1=1I1∑i2=1I2⋯∑in=1Inai1i2⋯in∗bi1i2⋯in\left \langle \mathcal{A,B}\right \rangle\overset{\text{def}}{=}\left\langle vec(\mathcal{A}),vec(\mathcal{B})\right\rangle=(vec(\mathcal{A}))^Hvec(\mathcal{B})\\ =\sum_{i_1=1}^{I_1}\sum_{i_2=1}^{I_2}\cdots\sum_{i_n=1}^{I_n}a_{i_1i_2\cdots i_n}^{*}b_{i_1i_2\cdots i_n} ⟨A,B⟩=def⟨vec(A),vec(B)⟩=(vec(A))Hvec(B)=i1=1∑I1i2=1∑I2⋯in=1∑Inai1i2⋯in∗bi1i2⋯in
其中∗*∗表示复共轭。
根据张量內积的概念,可以得到其张量范数的定义。
- 定义(张量的Frobenius范数):张量A\mathcal{A}A的Frobenius范数的定义为:
∥A∥F=⟨A,A⟩=def(∑i1=1I1∑i2=1I2⋯∑in=1In∣ai1i2⋯in∣2)1/2\left \| \mathcal{A} \right \|_F=\sqrt{\left \langle \mathcal{A,A}\right\rangle}\overset{\text{def}}{=}\left( \sum_{i_1=1}^{I_1}\sum_{i_2=1}^{I_2}\cdots\sum_{i_n=1}^{I_n}\left| a_{i_1i_2\cdots i_n}\right|^2\right)^{1/2} ∥A∥F=⟨A,A⟩=def(i1=1∑I1i2=1∑I2⋯in=1∑In∣ai1i2⋯in∣2)1/2
其內积和范数具有如下性质: - 张量的范数可以转化成张量的矩阵化的范数
∥A∥=∥A(In×I1⋯In−1In+1⋯IN)∥=∥A(I1⋯In−1In+1⋯IN×In)∥\left \| \mathcal{A} \right \|=\left \| \bm{A}^{(I_n\times I_1\cdots I_{n-1}I_{n+1}\cdots I_N)} \right \|=\left \| \bm{A}^{(I_1\cdots I_{n-1}I_{n+1}\cdots I_N\times I_n)} \right \| ∥A∥=∥∥∥A(In×I1⋯In−1In+1⋯IN)∥∥∥=∥∥∥A(I1⋯In−1In+1⋯IN×In)∥∥∥ - 张量的范数可以改成张量的向量化函数的范数
∥A∥=∥a(I1I2⋯IN×1)∥=∥a(1×I1I2⋯IN)∥\left \| \mathcal{A} \right \|=\left\| \bm{a}^{(I_1I_2\cdots I_N\times 1)}\right\|=\left\| \bm{a}^{(1\times I_1I_2\cdots I_N)}\right\| ∥A∥=∥∥∥a(I1I2⋯IN×1)∥∥∥=∥∥∥a(1×I1I2⋯IN)∥∥∥ - 两个张量之差的范数平方
∥A−B∥2=∥A∥2−2⟨A,B⟩+∥B∥2\left \| \mathcal{A-B} \right \|^2=\left \| \mathcal{A} \right \|^2-2\left \langle \mathcal{A,B}\right\rangle+\left \| \mathcal{B} \right \|^2 ∥A−B∥2=∥A∥2−2⟨A,B⟩+∥B∥2 - 若Q∈KJ×InQ\in\mathbb{K}^{J\times I_n}Q∈KJ×In为标准正交矩阵,即QQH=IJ×JQQ^H=I_{J\times J}QQH=IJ×J或QHQ=IIn×INQ^HQ=I_{I_n\times I_N}QHQ=IIn×IN,则有
∥A×nQ∥=∥A∥\left \| \mathcal{A}{\times_n} Q \right \|=\left \| \mathcal{A} \right \| ∥A×nQ∥=∥A∥ - 令A,B∈KI1×I2×⋯×IN,an,bn∈KJ×In\mathcal{A,B}\in \mathbb{K}^{I_1\times I_2 \times \cdots \times I_N},\bm{a}_n,\bm{b}_n\in \mathbb{K}^{J\times I_n}A,B∈KI1×I2×⋯×IN,an,bn∈KJ×In,其A=a1∘a2∘⋯aN\mathcal{A}=\bm{a_1}\circ\bm{a_2}\circ\cdots \bm{a_N}A=a1∘a2∘⋯aN和B=b1∘b2∘⋯bN\mathcal{B}=\bm{b_1}\circ\bm{b_2}\circ\cdots \bm{b_N}B=b1∘b2∘⋯bN,则
⟨A,B⟩=∏=1N⟨an,bn⟩\left \langle \mathcal{A,B}\right\rangle=\prod_{=1}^{N}\left \langle \mathcal{\bm{a}_n,\bm{b}_n}\right\rangle ⟨A,B⟩==1∏N⟨an,bn⟩
向量的外积(output product)为一个矩阵,有X=uvT\bf{X}=\bm{uv}^TX=uvT多个向量的外积给出一张量。使用∘\circ∘表示多个向量的外积。
- 定义 (向量外积)nnn个向量a(i)∈Ki×1,i=1,⋯,na^{(i)}\in \mathbb{K}^{i\times 1},i=1,\cdots ,na(i)∈Ki×1,i=1,⋯,n的外积记为a(1)∘a(2)∘⋯×a(n)a^{(1)}\circ a^{(2)}\circ \cdots \times a^{(n)}a(1)∘a(2)∘⋯×a(n),其中为一个张量,有
A=a(1)∘a(2)∘⋯a(n)\mathcal{A}=\bm{a^{(1)}}\circ\bm{a^{(2)}}\circ\cdots \bm{a^{(n)}} A=a(1)∘a(2)∘⋯a(n)
使用元素形式定义为
ai1i2⋯in=ai1(1)ai2(2)⋯ai1(1)a_{i_1i_2\cdots i_n}=a_{i_1}^{(1)}a_{i_2}^{(2)}\cdots a_{i_1}^{(1)} ai1i2⋯in=ai1(1)ai2(2)⋯ai1(1)
式中aj(i)a_{j}^{(i)}aj(i)是模式−n-n−n的第jjj个元素。
向量的外积可以推广到张量的外积,有
- 定义:(张量外积)两个张量A∈KI1×I2×⋯×IN\mathcal{A}\in \mathbb{K}^{I_1\times I_2 \times \cdots \times I_N}A∈KI1×I2×⋯×IN和B∈KJ1×J2×⋯×JN\mathcal{B}\in \mathbb{K}^{J_1\times J_2 \times \cdots \times J_N}B∈KJ1×J2×⋯×JN的外积仍为张量,记作A∘B∈KI1×⋯×IP×J1×⋯×JQ\mathcal{A\circ B}\in \mathbb{K}^{I_1\times \cdots \times I_P\times J_1 \times \cdots\times J_Q}A∘B∈KI1×⋯×IP×J1×⋯×JQ
(A∘B)i1⋯iPj1⋯jQ=ai1⋯iPbj1⋯jQ(\mathcal{A\circ B})_{i_1\cdots i_Pj_1\cdots j_Q}=a_{i_1\cdots i_P}b_{j_1\cdots j_Q} (A∘B)i1⋯iPj1⋯jQ=ai1⋯iPbj1⋯jQ
《矩阵分析与应用(第2版)》第10章 张量分析——张贤达
张量的基本概念及应用相关推荐
- 张量的基本概念+张量的聚合、拼接、比较、随机化采样、序列化等操作+升维、降维
张量的基本概念+张量的聚合.拼接.比较.随机化采样.序列化等操作 一.张量的基本概念 二.张量的聚合操作 三.张量的拼接操作 张量的升维.降维 一.张量的基本概念 张量(Tensor),就是多维数组. ...
- Tensorflow张量和维度概念的理解
Tensorflow张量和维度概念的理解 理解tensorflow张量的概念:张量就是一个数据存储容器,一种数据结构,是人为定义的.因为在计算机内存中哪里有什么2维空间3维空间,都是一块块连续的内存区 ...
- 数字图像处理 张量分解的概念、发展及其应用
一.张量的概念 张量是一个多维数组.更正式地说,N向或N阶张量是N个向量空间的张量乘积的一个元素,每个向量空间都有自己的坐标系.张量的概念不能与物理和工程中的张量(如应力张量)混淆,后者在数学中通常被 ...
- 张量学习(1):张量的基本概念
1.张量的四种定义 1.张量是多维数组,这个定义常见于各种人工智能软件. 2.张量是某种几何对象,不会随着坐标系的改变而改变 3.张量是向量和余向量(covector)通过张量积(tensor pro ...
- Pytorch:Tensor 张量的概念及张量的各种创建
Tensor 概念 张量的数学概念: 张量是一个多维数组,它是标量.向量.矩阵的高位扩展 张量在pytorch中的概念: tensor之前是和pytorch早期版本中的variable一起使用的. v ...
- 谷歌开源张量网络库TensorNetwork,GPU处理提升100倍!
编译 | 琥珀 出品 | AI科技大本营(ID:rgznai100) 世界上许多最严峻的科学挑战,如开发高温超导体和理解时空的本质,都涉及处理量子系统的复杂性.然而,这些系统中量子态的数量程指数级增 ...
- 张量解释——深度学习的数据结构
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 之前分享过一个国外 DEEPLIZARD 的高效入门 pytorc ...
- 百倍提升张量计算:谷歌开源TensorNetwork
https://www.toutiao.com/a6698889388199248392/ 张量网络正越来越多地用于机器学习领域,它被用于执行复杂计算任务,但对于大多数人来说它仍然遥不可及--我们还没 ...
- 在浏览器中进行深度学习:TensorFlow.js (一)基本概念
2019独角兽企业重金招聘Python工程师标准>>> 作为deeplearn.js的继任者,tensoflow.js 支持在浏览器或者nodejs中利用JavaScript来运行深 ...
- Keras一些基本概念
符号计算 Keras的底层库使用Theano或TensorFlow,这两个库也称为Keras的后端,无论事Theano还是TensorFlow,都是一个符号主义的库. 关于符号主义,可以一般概括为这种 ...
最新文章
- Linux综合大作业
- ledisDB底层实现——本质上就是用leveldb这样的底层存储,和ssdb一样,meta里存的是hash、list等的元数据...
- mybatis一对多关联查询_一对一,一对多,多对多查询及延迟加载(N+1问题)分析
- Silverlight/Windows8/WPF/WP7/HTML5周学习导读(7月30日-8月5日)
- linux安装虚拟环境virtualenv
- php yii2 获取表里最大的id_Yii2中自带分页类实现分页
- avalon2框架应用注意事项
- 实战 | F1060路由模式ISIS典型组网配置案例
- SQL 宝典(本人总结供学习使用)
- 亿图图示-----思维导图MindMaster示例
- Android简易项目--傻瓜式阿拉伯语输入法(Dummy Arabic Input)
- NPOI导出真正的电子表格,支持 自定义多行表头(表头风格设置),支持多个sheet页面导出
- 梦想照进现实|CSDN 实体奖牌 第三期
- 居家第二十五天朋友的豆芽菜
- UITableView在iOS15中显示混乱的问题
- 电脑能正常上网百度,但是网络显示无Internet
- virtualbox和Hyperv
- NAT ,BFD ,NQA 实验
- (paypal,stripe)轮询收款系统
- 诺基亚智能手机未来仅采用Symbian和MeeGo系统
热门文章
- 【KITTI】KITTI数据集简介(一) — 激光雷达数据
- SIMATIC HMI操作系统更新
- windows下svn server的安装和配置
- 计算机管理用房设置要求,党政机关办公用房管理系统解决方案
- Unity3d的ShadeSH9环境光的球谐函数的应用
- C语言课程设计-车辆信息管理系统
- 豆丁文档无需豆元直接下载
- win7虚拟机_UTM 虚拟机不越狱运行 win7,百分百可以
- 解放双手,CSDN博客支持公众号自动同步!
- 计算机科学与技术导论课论文题目,优秀计算机专业导论论文题目 计算机专业导论论文题目哪个好...