2016-11-11 34 views
0

我在tensorflow很新,所以這可能是一個簡單的問題,但它真的卡住我
我特林實現這個paper通過keras,背景是tensorflow
在第一階段訓練時,他用softmax_pair
如果我們上次從FC這個輸出
縱是批量大小,這是NoneType如何做tensorflow成對此外

x11 x12 x13 x14... 
x21 x22 x23 x24... 
x31 x32 x33 x34... 
... 

,我們做指數,所以我們必須

e11 e12 e13 e14... 
e21 e22 e23 e24... 
e31 e32 e33 e34... 
... 

,然後,我在這裏停留

e11/(e11+e12) e12/(e11+e12) e13/(e13+e14) e14/(e13+e14)... 
e21/(e21+e22) e22/(e21+e22) e23/(e23+e24) e24/(e23+e24)... 
e31/(e31+e32) e32/(e31+e32) e33/(e33+e34) e34/(e33+e34)... 
... 

我不知道該怎麼辦成對此外
tf.transposetf.segment_sum可能是巨大的
但研究後,我發現轉置是昂貴
進一步更多,tf.segment_sum後我只有張量的一半大小, 我不知道如何加倍
哦,我在想如何生成segment_ids

那麼我該如何計算呢? 謝謝!

----------更新
我在紙談過的部分是圖3
FC輸出是P2C-1和P2C,這是類別c的平均值可能性出現或不出現在圖像中
c = 1,2,3 ...類別

轉置不是很貴嗎?有時候我會看到這個,例如。 the comment,也許我誤解了這個?

+0

你說什麼文章的部分?列的數量總是「4」嗎?你爲什麼認爲轉置昂貴? – sygi

回答

0

假設X是你的尺寸R x C的張量:

_, C = X.get_shape() 
X_split = tf.split(1, C/2, X) 
Y_split = [tf.nn.softmax(slice) for slice in X_split] 
Y = tf.concat(1, Y_split) 

C將柱的側向承載力的數量,X_split將subtensors的列表,每一個都具有兩列,Y_split將計算定期SOFTMAX爲每張量,Y將加入softmaxes的結果。

+0

謝謝!我谷歌了幾天,這樣一個優雅的代碼,關於你的問題我更新帖子請看看它 – xxi