1. 根据输出的数据,对各个阶维度的反推+2.tf中生成根据指定的shape,tensor的各个阶的维度判断

 

方法:从最内部的不能分解元素观看,确定包括在最里面[]的个数,作为最后的一级的阶的维度,再以该[]为级别,数出同级的包括在另外一个[]之内的作为倒数第二阶的维度,依此类推,直到最后一级最为外层的[]结束。



input=tf.random_normal([2, 3, 3, 5]) 
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轴 [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轴[-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轴 [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轴[-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.]]]]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值