根据这个讨论线程:https://datascience.stackexchange.com/questions/49109/loss-val-loss-are-decreasing-but-accuracies-are-the-same-in-lstm,当我们在Keras
中训练神经网络时使用metrics='accuracy'
,幕后发生的事情是:
if metric in ('accuracy', 'acc'): metric_fn = metrics_module.binary_accuracy
其中
def binary_accuracy(y_true, y_pred): return K.mean(K.equal(y_true, K.round(y_pred)), axis=-1)
在我的模型中,我处理的是连续数据,对于这种情况,使用不同的评估函数会更合适。是否可以将这个预定义的度量改为自定义的度量?
回答:
我找到了答案。我们可以按以下方式定义我们的度量:
def my_metric(y_true, y_pred): ...
然后就可以这样使用它:
model.compile(optimizer='...', loss='...', metrics=[my_metric])