我正在使用 TensorFlow,并想t1從兩個較小的張量t2和t3, wherelen(t2) len(t3) == len(t1)和一個布爾掩碼創建一個一維張量,該掩碼指示如何t2以及t3應該如何組合。布爾掩碼指示如何將兩個較小的張量“拼接”在一起。
為了說明我的意思 - 在 numpy 中,這相當容易:
mask = np.array([True, True, False, False, True])
a2 = [1., 2., 3.]
a3 = [4., 5.]
a1 = np.zeros(5)
a1[mask] = a2 # use mask to splice smaller arrays together
a1[~mask] = a3
a1 # array([1., 2., 4., 5., 3.])
我環顧四周,似乎找不到任何與 TensorFlow 等效的代碼。tf.where似乎要求所有引數的大小相同,這在我的用例中是不可能的。有沒有一種簡單而有效的方法來做到這一點?
uj5u.com熱心網友回復:
也許嘗試使用tf.tensor_scatter_nd_update:
import tensorflow as tf
mask = tf.constant([True, True, False, False, True])
a2 = tf.constant([1., 2., 3.])
a3 = tf.constant([4., 5.])
a1 = tf.tensor_scatter_nd_update(tf.zeros((5,)), tf.concat([tf.where(mask),tf.where(~mask)], axis=0), tf.concat([a2, a3], axis=0))
print(a1)
# tf.Tensor([1. 2. 4. 5. 3.], shape=(5,), dtype=float32)
簡單解釋:

轉載請註明出處,本文鏈接:https://www.uj5u.com/net/468196.html
上一篇:從二維陣列中洗掉值
