假設我有一個DATAshape的張量(M, N, 2)。我還有另一個IND形狀為 (N) 的張量,由 0 和 1 組成。如果IND(i)==1那時DATA(:,i,0)和DATA(:,i,1)必須交換。如果IND(i)==0他們不換。我怎樣才能做到這一點?我知道這可以通過 完成tf.gather_nd,但我不知道如何。
2 回答

桃花長相依
TA貢獻1860條經驗 獲得超8個贊
不使用 tf.gather_ind 的一種方法如下。這個想法是構建 DATA1,它是具有所有可能交換的 DATA(即交換的結果,如果 IND 是 1 的向量),并使用掩碼從 Data 或 Data1 中選擇正確的值,具體取決于是否需要交換或不。
DATA1 = tf.concat([tf.reshape(DATA[:,:,1], [M, N, 1]), tf.reshape(DATA[:,:,0], [M, N, 1])], axis = 2)
Mask1 = tf.cast(tf.reshape(IND, [1, N, 1]), tf.float64)
Mask0 = 1 - Mask1
Res = tf.multiply(Mask0, DATA) + tf.multiply(Mask1, DATA1)
添加回答
舉報
0/150
提交
取消