I tre tensioni, A, B and C
in tensorflow, A
e B
sono entrambi di forma (m, n, r)
, C
è un tensore binario di forma (m, n, 1)
.Come trasmettere esplicitamente un tensore per abbinare la forma di un altro in tensorflow?
Desidero selezionare elementi da A o B in base al valore di C
. Lo strumento è ovvio tf.select
, tuttavia, che non ha a trasmettere la semantica, quindi ho bisogno di trasmettere prima esplicitamente C
per la stessa forma di A e B.
Questo sarebbe il mio primo tentativo di come fare questo, ma doesn Mi piace mescolare un tensore (tf.shape(A)[2]
) nell'elenco delle forme.
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)
Qual è l'approccio corretto qui?
Un hack che funziona: posso usare la semantica di trasmissione delle * * moltiplicare e moltiplicare per un tensore quelli in tal modo: 'Expander = tf.ones_like (B)', quindi 'C = Expander * C' – wxs