1.什么是张量(Tensor)?
张量是可存储数据的容器,之前将数据存储在多维numpy数组中,这就是张量。张量拥有自己的维度,也叫轴。例如:矩阵就是二维张量.
2.标量scalar,向量vector,矩阵matrix
标量即0维张量,向量是1维张量(5维的向量也是1维的张量),其shape为(n,),python中常喜欢将向量横置。矩阵是二维张量,多个二维张量的组合即三维张量,三维张量的shape为(a,b,c),三维张量可以理解为有a个b*c的矩阵组合而成。对于更高维的张量,我们都可以从后向前去理解,例如四维张量(a,b,c,d),先看最后两个即c*d的矩阵,然后向前看即有b个c*d矩阵的组合,最后看最前面的a,有a个这样的组合。三维张量可以用于描述时间序列数据,除后两维描述时间和特征的关系,第一维为样本轴。四维张量可以用于描述彩色图片数据,除矩阵所占二维,另外两维分别由channel和sample数目决定。视频则可以由五维张量描述,即多帧彩色图片的组合。(numpy中可用ndim查看维度)
3.kera内置数据库的mnist数据库,其资料形状就是三维张量(由于是黑白照,没有channel轴)
4.张量的截取:与python的切片类似,张量中若只写一维代表后续轴全取,例如mnist中对于抽取90张图片,可直接写为train_image[10:100],而不必写成train_image[10:100,:,:],此外,若我们想截取所有图片右下角14*14,可以写成train_image[10:100,14: ,14: ],想截取正中间14*14,可以写成train_image[10:100,7:-7,7:-7].