2017-04-13 58 views
0

假設x和y是兩個N-dimensional張量,其中兩個尺寸相同,第一個尺寸爲S尺寸(批量)。比方說,b爲布爾的1-dimensional張量,大小S.在兩個單獨批次之間切換張量

我想產生Z,一個N維張量定義爲:

z[i] = b[i] ? x[i] : y[i] for i from 0 to (S-1) 

其中x[i]是指第i個(N-1)-dimensional切片的X。

這樣做最簡單的方法是什麼?我認爲tf.cond會起作用,但它只接受標量謂詞。謝謝!

回答

0

tf.where應該工作,並且支持這種廣播。如果你發現自己想要一個批處理版本的條件執行(其中一個或兩個分支都是昂貴的計算),那就是also possible

+0

tf.where看起來很完美,謝謝! 你碰巧知道這個函數的變體是否支持兩種以上的方式? –

+0

你可以''tf.stack'你想分支的張量,然後'tf.gather'在它們之間進行選擇。 –

+0

我會看看是否有用,謝謝你的幫助! –