テンソルがA, B and C
、テンソルフローがA
、B
の3つのテンソルがあり、両方とも形状が(m, n, r)
、C
のテンソルが(m, n, 1)
のバイナリテンソルです。テンソルを他のテンソルに合わせて明示的にブロードキャストする方法はありますか?
C
の値に基づいて、AまたはBのいずれかの要素を選択したいとします。明白なツールはtf.select
ですが、ブロードキャストのセマンティクスはありませんので、最初にAとBと同じ形にC
を明示的にブロードキャストする必要があります。
これは初めての試みですが、テンソル(tf.shape(A)[2]
)をシェイプリストに混合するのが好きです。
import tensorflow as tf
A = tf.random_normal([20, 100, 10])
B = tf.random_normal([20, 100, 10])
C = tf.random_normal([20, 100, 1])
C = tf.greater_equal(C, tf.zeros_like(C))
C = tf.tile(C, [1,1,tf.shape(A)[2]])
D = tf.select(C, A, B)
ここで正しいアプローチは何ですか?
一つハック 'パンダ= tf.ones_like(B)'、そして 'C = Expander * C' – wxs