1. 程式人生 > >tensorflow中的shapre和reshape的問題

tensorflow中的shapre和reshape的問題

 

TensorFlow用張量這種資料結構來表示所有的資料.你可以把一個張量想象成一個n維的陣列或列表.一個張量有一個靜態型別和動態型別的維數.                                              張量可以在圖中的節點之間流通.

 

在TensorFlow系統中,張量的維數來被描述為階.但是張量的階和矩陣的階並不是同一個概念.張量的階(有時是關於如順序或度數或者是n維)是張量維數的一個數量描述。

具體的描述參照這位朋友的部落格 https://blog.csdn.net/M_Z_G_Y/article/details/80332769   謝謝這位朋友

 

這裡我主要以例子來闡述一下tensorflow.shape 的結果問題,因為我自己在這裡有一些疑惑

 

(這裡的很多想法是從這位朋友的部落格中借鑑的https://blog.csdn.net/a563562675/article/details/70332605   ,在這裡也和他說一聲謝謝)

首先我們先是從文件和簡單的案例入手  :

1.給定一個tensor,怎麼確定它的shape。 
2.給定一個tensor和shape,經過reshape(tensor,shape)變換後返回的tensor是什麼格式的。 
先看一看文件中給出的例子:


  # tensor 't' is [1, 2, 3, 4, 5, 6, 7, 8, 9]
  # tensor 't' has shape [9]
  reshape(t, [3, 3]) ==> [[1, 2, 3],
                          [4, 5, 6],
                          [7, 8, 9]]

這個例子很簡單,我們繼續

  # tensor 't' is [[[1, 1], [2, 2]],
  #                [[3, 3], [4, 4]]]
  # tensor 't' has shape [2, 2, 2]
  reshape(t, [2, 4]) ==> [[1, 1, 2, 2],
                          [3, 3, 4, 4]]

在這裡我開始有一些疑惑了,reshape的意思不難理解,但是這個shape的[2, 2 ,2] 的每一位表示的都是什麼呢?

 

這樣,就一目瞭然了,如果你看懂了這個,那麼我相信下面的這個也就so easy了

還有一點就是如果引數中的數字不夠 了,那麼就會用最後一個數字來進行剩餘部分的填充。。。。。。

關於reshape

函式原型為   def reshape(tensor, shape, name=None)

第1個引數為被調整維度的張量。

第2個引數為要調整為的形狀。

返回一個shape形狀的新tensor

注意shape裡最多有一個維度的值可以填寫為-1,表示自動計算此維度。