首页 文章

张量流中将值设置为零

提问于
浏览
0

我在张量流中创建了SMAPE损失函数,我需要在计算降低均值之前将张量差值设置为0 . 这是我的代码,但它不起作用:

function loss(yHat, y):
     denominator = (tf.abs(yhat) + np.abs(y))/2.0
     diff = tf.div(tf.abs(yhat - y),denominator)
     other_variable = tf.get_variable("other_variable",
                                 dtype=tf.float32, 
                                 initializer= diff)
     comp = tf.equal(denominator, 0)
     cond_diff = tf.scatter_update(other_variable, comp, 0)
return tf.reduce_mean(cond_diff)

它给了我这个错误

ValueError:initial_value必须具有指定的形状:Tensor(“div_49:0”,dtype = float32)

1 回答

  • 0

    只是屏蔽你的 diff 而不是创建另一个变量 .

    mask = tf.where(denominator == 0, tf.ones_like(denominator), tf.zeros_like(denominator))
    
    return tf.reduce_mean(tf.multiply(diff,mask))
    

相关问题