如何根据张量流中的标量条件进行选择?

时间:2016-08-21 02:43:54

标签: tensorflow

如果条件是标量,但t和e是相同形状的张量,那么我该如何做tf.select(condition, t, e)? TensorFlow希望条件与t和e具有相同的形状。

2 个答案:

答案 0 :(得分:1)

您可以使用tf.tile使条件与t

的形状相同

答案 1 :(得分:1)

以前的tf.select() op现在称为tf.where()(在TensorFlow 1.0中)。 tf.where() op在condition的形状上有一个稍微奇怪的条件:它可以具有与两个分支不同的形状,但仅当它是一个长度与第0个大小相同的向量时te的维度。因此,您可以使您的程序如下工作:

condition = ...  # scalar
t = ...          # shape = [4, 9, 2]
e = ...          # shape = [4, 9, 2]

# Tile `condition` as a vector whose length matches the 0th dimension of `t`.
condition_vector = tf.tile([condition], [tf.shape(t)[0]])

result = tf.where(condition_vector, t, e)