2017-09-05 11 views
0

テンソルフローでSMAPE損失関数を作成していますが、テンソルdiffの値を0に設定してから平均を計算する必要があります。ここに私のコードですが、それは動作しません:テンソルフローで値をceroに設定する

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が指定された形状を持っている必要がありますテンソル( "div_49:0"、DTYPE =のfloat32)

誰かがこれで私を助けることができます、ありがとう?

答えて

0

別の変数を作成する代わりにdiffをマスクするだけです。

mask = tf.where(denominator == 0, tf.ones_like(denominator), tf.zeros_like(denominator)) 

return tf.reduce_mean(tf.multiply(diff,mask)) 
関連する問題