Mam trzy tensorów A, B and C
w tensorflow, A
i B
są zarówno kształtu (m, n, r)
, C
jest binarnym tensor kształcie (m, n, 1)
.Jak jawnie rozgłaszać tensor, aby dopasować kształt innej osoby w tensorflow?
Chcę wybrać elementy z A lub B na podstawie wartości C
. Oczywistym narzędziem jest tf.select
, jednak nie ma to semantyki nadawania, więc najpierw muszę jawnie nadawać C
do tego samego kształtu co A i B.
To byłaby moja pierwsza próba jak to zrobić, ale nie robi tego lubię mieszanie tensora (tf.shape(A)[2]
) do listy kształtów.
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)
Jakie jest właściwe podejście?
One hack, który działa: można użyć semantykę nadawania * * wielowarstwowego i pomnożyć przez te tensora tak:' Expander = tf.ones_like (B) ', następnie 'C = Expander * C' – wxs