2017-10-19 26 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))) 
相关问题