如何确定中间结果是否有数据?

How can I determine whether a intermediate results has or has no data?

如何实施 "if there exist items in a Tensor then calculate the average value of it, else assign it a certain value"? 以 tf.gather_nd() 为例,从 source_tensor 中选择一些行 shape (?, 2)

result = tf.gather_nd(source_tensor, indices)

应该根据索引从 source_tensor 中获取项目,但是如果索引是 空列表 [],tf.gather_nd 将会,程序将继续并且result.

中没有任何内容

所以我想知道在构建tensorflow的计算图时,有没有办法判断result是否为空(即没有数据)?如果是这样,我想手动为其分配常量值。

因为我接下来要做的是

tf.reduce_mean(result)

如果 result 没有数据,tf.reduce_mean(result) 将产生 nan.

您应该可以通过 tf.cond 执行此操作,它会根据某些条件执行两个分支之一。我还没有测试下面的代码,所以请报告它是否有效。

mean = tf.cond(tf.size(result), lambda: tf.reduce_mean(result), lambda: some_constant)

想法是通过 tf.size 检查 result 是否包含任何项目(如果 result 为空,则 return 应该为 0)。您可能需要将其显式转换为布尔条件,即改用 tf.cast(tf.size(result), tf.bool)