如何确定中间结果是否有数据?
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)
。
如何实施 "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)
。