tf.reshape函數用法&理解

函數原型

函數接口:

tf.reshape(
    tensor, shape, name=None
)
參數
tensor Tensor張量
shape Tensor張量,用於定義輸出張量的shape,組成元素類型爲 int32int64.
name 可選參數,用於定義操作名稱.
返回
A Tensor. 輸出張量和輸入張量的元素類型相同。

用法

tf.reshape函數用於對輸入tensor進行維度調整,但是這種調整方式並不會修改內部元素的數量以及元素之間的順序,換句話說,reshape函數不能實現類似於矩陣轉置的操作。比如,對於矩陣[[1,2,3],[4,5,6]],如果使用reshape,將維度變爲[3,2], 其輸出結果爲:[[1,2],[3,4],[5,6]], 元素之間的順序並沒有改變:1之後還是2,如果是矩陣轉置操作,1之後應該爲4。

其內部實現可以理解爲: tf.reshape(a, shape) -> tf.reshape(a, [-1]) -> tf.reshape(a, shape)

現將輸入tensor,flatten鋪平,然後再進行維度調整(元素的順序沒有變化

tf.reshape不會更改張量中元素的順序或總數,因此可以重用基礎數據緩衝區。這使得它快速運行,而與要運行的張量有多大無關。

如果需要修改張量的維度來實現對元素重新排序,需要使用tf.transpose

image-20200517190147962


總結

關於tf.reshape函數我們需要知道的是:

  1. 函數用於張量維度調整,但是不會修改內部元素的數量以及相對順序
  2. shape中-1表示這個維度的大小,程序運行時會自動計算填充(因爲變換前後元素數量不變,我們可以根據其他維度的大小,最終確定-1這個位置應該表示的數字
  3. 如果需要通過修改內部元素的存儲順序以實現維度調整,需要使用tf.transpose函數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章