版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011240016/article/details/85147468
张量是一个数据容器,包含的数据是数值数据。矩阵是二维张量,而张量则是矩阵向任意维度的推广。张量的维度(dimension)通常叫作轴(axis)。
标量
只有一个数字的张量叫作标量,也叫0维张量。我们可以通过ndim
来查看张量的维度,或者说轴的个数。
向量
一维张量,只有一个轴。
x = np.array([1,2,3,4,5])
x.ndim # 1
这里需要区分一个概念是:5维向量和5维张量的区别。
向量有多少个元素就叫多少维向量,但是张量的维度只看轴数。每个轴的维度是任意的。
矩阵
2D张量,这是由向量组成的数组。矩阵有两个轴,常常称之为行和列。第一个轴的元素叫作行,第二个轴的元素叫作列。
这里需要记住一个案例:
x = np.array([[0.1, 0.8, 0.1], [0.3, 0.1, 0.6], [0.2, 0.5, 0.3], [0.8, 0.1, 0.1]])
y = np.argmax(x, axis=1) # array([1, 2, 1, 0])
import numpy as np
x = np.array([[0.1, 0.8, 0.1], [0.3, 0.1, 0.6], [0.2, 0.5, 0.3], [0.8, 0.1, 0.1]])
y = np.argmax(x, axis=0) # array([3, 0, 1])
对于代码里用到的东西,灵活运用这个案例是更好的选择,如果按照第二个轴来选择,则是选出每行的最值,按照第一个轴来选,选出的是每列的最值。
在矩阵中,我们可以抛开中括号这种束缚,直接从一块数据中按照行和列来看即可。
3D张量以及更高维张量
多个矩阵组合在一起可以变成3D张量,再将多个3D张量组合成一个数组,可以创建一个4D张量,等等。
在深度学习中,一般是0D到4D的张量,处理视频数据会遇到5D张量。
END.
参考:
《Deep Learning with Python》