写一下理解。
1. 举例
现在一个2x3x4的张量a:
a = [
[[1, 2, 3, 4],
[4, 3, 2, 1],
[2, 2, 2, 2]],
[[2, 2, 2, 2],
[1, 2, 3, 4],
[4, 3, 2, 1]]
]
根据a的内容,我们现在假设现在有2个坐标系,每个坐标系有3个坐标轴,每个坐标轴上有4个点,每个点的大小可能是1,2,3,4,
第一个坐标系:
x轴点大小分别是1, 2, 3, 4;
y轴点大小分别是4, 3, 2, 1;
z轴点大小分别是2, 2, 2, 2;
第二个坐标系:
x轴点大小分别是2, 2, 2, 2;
y轴点大小分别是1, 2, 3, 4;
z轴点大小分别是4, 3, 2, 1;
(1)我们首先比较两个坐标系点的大小信息,如果第一个坐标系对应的点大,就标0,第二个大就标1,得到:
x轴点大小分别是1, 0, 0, 0;
y轴点大小分别是0, 0, 1, 1;
z轴点大小分别是1, 1, 0, 0;
(2)我们再比较每个坐标系里面不同坐标轴的点大小信息,x轴大标0,y轴大标1,z轴大标2,得到:
第一个坐标系:
1, 1, 0, 0
第二个坐标系:
2, 2, 1, 1
(3)我们再比较每个轴自己最大的点,位于第一个位置标0,位于第二个位置标1,位于第三个位置标2,位于第四个位置标3,得到:
第一个坐标系:
3,
0,
0,
第二个坐标系:
0,
3,
0,
2. 归纳
对于tensorflow来说,维度数字越低,包含的信息越多,类比上述我们可以说0维包含两个坐标系,1维包含3个坐标轴,2维包含4个点
就像是两个苹果比较完只留下一个大的,在哪个维度比较完,哪个维度就被降维了
所以tf.argmax(a,0),就是在坐标系比较,0维度被降维,留下3个坐标,轴和4个坐标点的信息,得到的是:
[[1, 0, 0, 0],[0, 0, 1, 1],[1, 1, 0, 0]],维度1x3x4,
tf.argmax(a,1),就是在坐标轴比较,1维度被降维,留下2个坐标系和4个坐标点的信息,得到的是:
[[1, 1, 0, 0], [2, 2, 1, 1]],维度2x1x4
tf.argmax(a,2),就是在坐标点比较,2维度被降维,留下2个坐标系和3个坐标轴的信息,得到的是:
[[3,0,0],[0, 3, 0]],维度2x3x1