歡迎您光臨本站 註冊首頁

Python3 Tensorlfow:增加或者減小矩陣維度的實現

←手機掃碼閱讀     techdo @ 2020-06-09 , reply:0

1.增加維度

下面給出兩個樣例

樣例1:

  [1, 2, 3] ==> [[1],[2],[3]]    import tensorflow as tf    a = tf.constant([1, 2, 3])  b = tf.expand_dims(a,1)    with tf.Session() as sess:   a_, b_ = sess.run([a, b])   print('a:')   print(a_)   print('b:')   print(b_)

 

輸出結果

  a:  [1 2 3]  b:  [[1]   [2]   [3]]

 

樣例2:

  [1, 2, 3] ==> [[1,2,3]]    import tensorflow as tf    a = tf.constant([1, 2, 3])  b = tf.expand_dims(a, 0)    with tf.Session() as sess:   a_, b_ = sess.run([a, b])   print('a:')   print(a_)   print('b:')   print(b_)

 

輸出結果:

  a:  [1 2 3]  b:  [[1 2 3]]

 

2.降低維度

樣例1:

  [[1, 2, 3]] ==> [1, 2, 3]    import tensorflow as tf    a = tf.constant([[1, 2, 3]])  b = tf.squeeze(a)    with tf.Session() as sess:   a_, b_ = sess.run([a, b])   print('a:')   print(a_)   print('b:')   print(b_)

 

輸出結果

  a:  [[1 2 3]]  b:  [1 2 3]

 

樣例2:

  [[1], [2], [3]] ==> [[1, 2, 3]    import tensorflow as tf    a = tf.constant([[1], [2], [3]])  b = tf.squeeze(a, 1)    with tf.Session() as sess:   a_, b_ = sess.run([a, b])   print('a:')   print(a_)   print('b:')   print(b_)

 

補充知識:pytorch中squeeze()、unsqueeze(),以及一些高維數組操作

博主最近閱讀YOLO底層代碼,Torch中對多數組矩陣有很多高維操作,看過一邊之後,記錄一下,以防忘記。

torch.squeeze()

功能:取消為1的維度

squeeze(input, dim=None, out=None) -> Tensor

這裡一般分不清dim的意思

舉個例子:

  input=(A , 1 , B , C ,1 , D)  squeeze(input)=(A,B,C,D)  input= (A, 1, B)

 

squeeze(input, 0)=(A, 1, B) 不會改變 squeeze(input, 1)=(A, B) 會改變

這裡0, 1 ,2就分別代表 A, 1, B

torch.unsqueeze()

unsqueeze(input, dim, out=None) -> Tensor

功能: 在某一位置插入一維

這裡面也是dim這個參數比較難理解

dim的取值是[- input.dim()-1, imput.dim()]

給定一個dim

input=(A , B , C , D)

input的維度input_dim為4, dim的取值[-5, 4]

  unsqueeze(input, 0)=(1, A , B , C , D)  unsqueeze(input, 1)=(A , 1, B , C , D)  unsqueeze(input, -5)=(1, A , B , C , D)

 

看一個簡單用例,size表示維度大小,10是取值範圍,a=[:,:,:,4]表示取a最後一維的第四個元素(從0開始第四個),即取[0,0,3],[5,6,1],[0,6,8],[…], 判斷大於5為true,否則為false。

注意:b的維度比a少了一維。

繼續上一步,這裡使用unsqueeze函數將b的維度擴展一維[2,2,3]------>[2,2,3,1] 這時b的最後一維只有一個元素, .expand_as將最後最後的元素擴展到a最後一維的個數

a[c] 表示取出為True的所有行在a中的元素


[techdo ] Python3 Tensorlfow:增加或者減小矩陣維度的實現已經有253次圍觀

http://coctec.com/docs/python/shhow-post-237630.html