深度学习中会经常涉及到张量的维数、向量的维数的概念,我发现自己一直把它们给混淆了,原因是被一些约定俗成的叫法扰乱了,下面来介绍一下它们的区别。
首先,张量的维数等价于张量的阶数。
0维的张量就是标量,1维的张量就是向量,2维的张量就是矩阵,大于等于3维的张量没有名称,统一叫做张量。下面举例:
标量:很简单,就是一个数,1,2,5,108等等
向量:[1,2],[1,2,3],[1,2,3,4],[3,5,67,·······,n]都是向量
矩阵:[[1,3],[3,5]],[[1,2,3],[2,3,4],[3,4,5]],[[4,5,6,7,8],[3,4,7,8,9],[2,11,34,56,18]]是矩阵
3维张量:[[[1,2],[3,4]],[[1,2],[3,4]]]
但是混淆的地方来了,就是数学里面会使用3维向量,n维向量的说法,这其实指的是1维张量(即向量)的形状,即它所含分量的个数,比如[1,3]这个向量的维数为2,它有1和3这两个分量;[1,2,3,······,4096]这个向量的维数为4096,它有1、2······4096这4096个分量,都是说的向量的形状。你不能说[1,3]这个“张量”的维数是2,只能说[1,3]这个“1维张量”的维数是2。
矩阵也是类似,常常说的n×m阶矩阵,这里的阶也是指的矩阵的形状。
那么,张量的维数和张量的形状怎么看呢?
维度要看张量的最左边有多少个左中括号,有n个,则这个张量就是n维张量
[[1,3],[3,5]]最左边有两个左中括号,它就2维张量;[[[1,2],[3,4]],[[1,2],[3,4]]]最左边有三个左中括号,它就3维张量
形状的第一个元素要看张量最左边的中括号中有几个元素,形状的第二个元素要看张量中最左边的第二个中括号中有几个被逗号隔开的元素,形状的第3,4…n个元素以此类推
[[1,3],[3,5]]的最左边中括号有[1,3]和[3,5]这两个元素,最左边的第二个中括号里有1和3这两个元素,所以形状为[2,2];[[[1,2],[3,4]],[[1,2],[3,4]]]的最左边中括号有[[1,2],[3,4]]和[[1,2],[3,4]]这两个元素,最左边的第二个中括号里有[1,2]和[3,4]这两个元素,最左边的第三个中括号里有1和2这两个元素,所以形状为[2,2,2]
在形状的中括号中有多少个数字,就代表这个张量是多少维的张量。