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

桃花長(zhǎng)相依
TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊
不使用 tf.gather_ind 的一種方法如下。這個(gè)想法是構(gòu)建 DATA1,它是具有所有可能交換的 DATA(即交換的結(jié)果,如果 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)
添加回答
舉報(bào)
0/150
提交
取消