tensorflow維度理解

tensor維度本質就是逐層脫去括號。

脫第一層括號後,緊挨着的一層整體只有一個元素,故爲1

脫掉第二層括號後,裏面整體有三個元素,即三行

脫掉第四層,裏面整體依然有三個元素,比如[1],[2],[3]

再往裏面看,只有一個元素

故最後得到的是1*3*3*1。

越高層的維度在越裏面,具體到深度學習裏,如tf.nn.embedding_lookup(itememb, batchitem)。在embedding這一層的數據維度是最高的。在batch這一層的數據維度是最低的(axis=0)。舉例:如果一個人有多個興趣tag(最大個數爲100),每個tag的embedding維度爲32,訓練時batch大小爲1000,則tf.nn.embedding_lookup(itempref, batchpref)的維度shape爲(1000,100,32)

 

關於reduce_xxx的維度問題

對於k維tensor,

tf.reduce_xxx(x, axis=k-1)的結果是對最裏面一維所有元素進行求和。

tf.reduce_xxx(x, axis=k-2)是對倒數第二層裏的向量對應的元素進行求和。

tf.reduce_xxx(x, axis=k-3)把倒數第三層的每個向量對應元素相加

 

拿reduce_mean做驗證

[[[ 1. 1.]

  [ 2. 2.]]

 [[ 3. 3.]

  [ 4. 4.]]]

axis=2,做最內層計算,我們的最內層就是(1,1),(2,2),(3,3),(4,4),計算出來的就是

[[ 1. 2.] [ 3. 4.]]

axis=1,做倒數第二層計算

[[ 1.5 1.5] [ 3.5 3.5]]

axis=0,做倒數第三層計算

[[ 2. 2.] [ 3. 3.]]

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章