2017-10-19 105 views
0

在凱拉我試圖找出如何計算自定義指標或損失,過濾掉或掩蓋一些值,以便他們不貢獻返回的值。我被困在如何獲得張量切片或如何迭代if:在張量中的值來選擇感興趣的值。如何編寫Keras自定義指標來過濾或屏蔽某些值?

我碰巧在使用Tensorflow後端,但想做一些便攜式的東西。

附件中是什麼,我試圖做一個大致的輪廓,但它引發錯誤:TypeError: 'Tensor' object does not support item assignment

def my_filtered_mse(y_true, y_pred): 
     #Return Mean Squared Error for a subset of values 
     error = y_pred - y_true 
     error[y_true == 0.0] = 0 #Don't include errors when y_true is zero 
     # The previous like throws the error : TypeError: 'Tensor' object does not support item assignment 
     return K.mean(K.square(error)) 

#...other stuff ... 

    model.compile(optimizer=optimizers.adam(), 
     loss='mean_squared_error', 
     metrics=[my_filtered_mse]) 

回答

1

失敗發生在這一行:

error[y_true == 0.0] = 0 #Don't include errors when y_true is zero 

因爲error是張量,不支持項目分配。您可以將其更改爲:

error = tf.gather(error, tf.where(tf.not_equal(y_true, 0.0))) 
相關問題