方法:从最内部的不能分解元素观看,确定包括在最里面[]的个数,作为最后的一级的阶的维度,再以该[]为级别,数出同级的包括在另外一个[]之内的作为倒数第二阶的维度,依此类推,直到最后一级最为外层的[]结束。
sess=tf.Session()
mat=sess.run(input)
print("mat:",mat) #生成四维张量
print("mat[0]:\n",mat[0])
print("mat[0]:\n",mat[0].shape)
print("mat[0][0]:\n",mat[0][0])
print("mat[0][0]:\n",mat[0][0].shape)
print("mat[0][0][0]:\n",mat[0][0][0])
print("mat[0][0][0]:\n",mat[0][0][0].shape)print("mat[0][0][0][0]:\n",mat[0][0][0][0])
print("mat[0][0][0][0]:\n",mat[0][0][0][0].shape)
mat:
(1、对这个的判断,根据上面的红字方法,可得到是(1)5 (2)3 (3)3 (4)2,所以单从下面的输出数字是2*3*3*5
2、另外,有个小技巧,组外层数字单侧括号有几个,就有几阶)
[[[[-0.04946075-0.39051834 0.70029926 1.04427314 -0.50161618]
[-0.88772166 -0.97375607 -1.39743626 -1.57410967 0.67717731]
[-0.04220374 -0.87041211 1.65323901 -0.63210064 -0.27930436]]
[[0.10120229 -1.56110585 0.6358844 0.08369907 -0.15296145]
[0.81890374 -0.78691864 0.86625981 0.41091785 -1.65091491]
[-0.95093411 0.2192647 -2.41538286 0.09332389 -1.46946585]]
[[0.57579613 -0.78014088 0.71421504-0.36345431 -1.2525084 ]
[-0.9982028 -0.00498665 1.10062003 -0.06576402 -0.02542781]
[-0.08660951 1.36196768 0.30107525 -0.70669395 -2.24661875]]]
[[[0.22196233 -0.59935236 -0.7741518 -0.80990314 1.52992308]
[0.82497019 -0.0133222 0.73583311-0.01884574 0.31110784]
[-0.37637401 0.02399199 0.47549728 -2.33406854 -0.40116423]]
[[-0.61214691 0.51968157 1.68025804 0.25352362 -0.07630835]
[0.4017354 -0.20935933 -0.23358166 0.07867375 -0.41216117]
[0.56827682 -0.62509251 -1.06442463 0.1260772 -0.67022914]]
[[0.67380315 0.85098803 0.34026232 0.01849968 0.44034094]
[1.05391908 0.36208919 1.11698639 0.99236804 -0.47904065]
[1.16656947 0.12744726 -0.84040087-0.20418333 0.45792165]]]]
mat[0]:
[[[-0.04946075 -0.39051834 0.70029926 1.04427314 -0.50161618]----z轴1
x轴1 [-0.88772166 -0.97375607 -1.39743626 -1.57410967 0.67717731]----z轴2
[-0.04220374 -0.87041211 1.65323901 -0.63210064 -0.27930436]]----z轴3
[[0.10120229 -1.56110585 0.6358844 0.08369907 -0.15296145]----z轴1
x轴2 [0.81890374 -0.78691864 0.86625981 0.41091785 -1.65091491]----z轴2
[-0.95093411 0.2192647 -2.41538286 0.09332389 -1.46946585]]----z轴3
[[0.57579613 -0.78014088 0.71421504-0.36345431 -1.2525084 ]----z轴1
x轴3 [-0.9982028 -0.00498665 1.10062003 -0.06576402 -0.02542781]----z轴2
[-0.08660951 1.36196768 0.30107525 -0.70669395 -2.24661875]]]----z轴3
mat[0] shape:
(3,3, 5)
可考虑图形
mat[0][0]:
[[-0.04946075 -0.39051834 0.70029926 1.04427314 -0.50161618]
[-0.88772166 -0.97375607 -1.39743626-1.57410967 0.67717731]
[-0.04220374 -0.87041211 1.65323901 -0.63210064 -0.27930436]]
mat[0][0] shape:
(3,5)
mat[0][0][0]:
[-0.04946075 -0.39051834 0.70029926 1.04427314 -0.50161618]
mat[0][0][0] shape:
(5,)
mat[0][0][0][0]:
-0.0494608
mat[0][0][0][0] shape:
()
或者反过来看:
如果看到shape是 (3,3, 5),则意味着矩阵最后的形状为(这时:从右往左看)最内部元素为5个,紧接着像这样由5个元素为单位组成的中部元素有3个(左侧第一个3代表),再以这3个元素为一个组成单元,由3个这样的单元组成最外层的集合
例1
如上面的mat[0]所示:
mat[0]:
[[[-0.04946075 -0.39051834 0.70029926 1.04427314 -0.50161618]----z轴1
x轴1 [-0.88772166 -0.97375607 -1.39743626 -1.57410967 0.67717731]----z轴2
[-0.04220374 -0.87041211 1.65323901 -0.63210064 -0.27930436]]----z轴3
[[0.10120229 -1.56110585 0.6358844 0.08369907 -0.15296145]----z轴1
x轴2 [0.81890374 -0.78691864 0.86625981 0.41091785 -1.65091491]----z轴2
[-0.95093411 0.2192647 -2.41538286 0.09332389 -1.46946585]]----z轴3
[[0.57579613 -0.78014088 0.71421504-0.36345431 -1.2525084 ]----z轴1
x轴3 [-0.9982028 -0.00498665 1.10062003 -0.06576402 -0.02542781]----z轴2
[-0.08660951 1.36196768 0.30107525 -0.70669395 -2.24661875]]]----z轴3
mat[0] shape:
(3,3, 5)
例2:
import tensorflow as tf import numpy as np a = tf.constant([ [[1.0, 2.0, 3.0, 4.0], [5.0, 6.0, 7.0, 8.0], [8.0, 7.0, 6.0, 5.0], [4.0, 3.0, 2.0, 1.0]], [[4.0, 3.0, 2.0, 1.0], [8.0, 7.0, 6.0, 5.0], [1.0, 2.0, 3.0, 4.0], [5.0, 6.0, 7.0, 8.0]] ]) b= tf.constant(1.0) c=a*b c = tf.reshape(c, [1, 4, 4, 2]) sess=tf.Session() print(sess.run(c))(可以理解(从右往左来生成分析):a中所有数字,先按最左侧2组成最小单元(1);而后再按这种单元4个结合一组,
,用[]套起来合成一个大单元(2);而后,将以(2)为单元单位,4个为一组进行结合,用[]套起来,生成再大的一个
单元(3);最后,看到最左侧的阶是1维,所有直接将(3)外面套上[],意味着生成生成了最外层的单元,即完成)
[[[[ 1. 2.]
[ 3. 4.][ 5. 6.]
[ 7. 8.]]
[[ 8. 7.]
[ 6. 5.]
[ 4. 3.]
[ 2. 1.]]
[[ 4. 3.]
[ 2. 1.]
[ 8. 7.]
[ 6. 5.]]
[[ 1. 2.]
[ 3. 4.]
[ 5. 6.]
[ 7. 8.]]]]