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,表示自動計算此維度。