如何实现“如果张量中存在项目,然后计算其平均值,否则为其分配一定的值”? 以 tf.gather_nd()为例,例如从source_tensor中选择具有 shape(?,2)
的行result = tf.gather_nd(source_tensor, indices)
应根据索引从source_tensor中获取项目,但是如果索引为一个空列表[] ,则tf.gather_nd将继续,程序将继续执行,并且结果中没有任何内容>。
所以我想知道在构建张量流计算图时是否有一种方法可以确定结果是否为空(即没有数据)?如果是这样,我想手动为其分配常量值。
因为我接下来要做的是
tf.reduce_mean(result)
如果结果没有数据,则tf.reduce_mean(result)将产生 nan 。
答案 0 :(得分:1)
您应该可以通过#audio
来执行此操作,tf.cond
根据某些条件执行两个分支之一。我尚未测试以下代码,因此请报告其是否有效。
mean = tf.cond(tf.size(result), lambda: tf.reduce_mean(result), lambda: some_constant)
其想法是通过result
检查tf.size
是否包含任何项目(如果result
为空,则应返回0)。您可能需要将其明确转换为布尔条件,即改为使用tf.cast(tf.size(result), tf.bool)
。