2016-11-30 178 views
0

我正在关注一些Keras教程,并且我了解model.compile方法会创建一个模型并采用'metrics'参数来定义在培训期间用于评估的指标测试。Keras model.compile:要通过模型评估的指标

compile(self, optimizer, loss, metrics=[], sample_weight_mode=None) 

我遵循的教程通常使用“metrics = ['accuracy']”。我想使用其他指标,如fmeasure,并阅读https://keras.io/metrics/我知道有很多选择。但我不知道如何将它们传递给编译方法?

例如:

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['fmeasure']) 

将产生一个错误,说没有这样的度量。

任何建议高度赞赏

感谢

+0

什么是您的Keras版本? –

+0

只是升级到最新的1.1.2,它的工作原理。谢谢 – Ziqi

回答

2

您可以提供两种度量类型。
首先是由keras提供的一个,你可以找到here你在单引号像“美”提供,或者也可以这样定义

from keras import metrics 
model.compile(loss='mean_squared_error', 
       optimizer='sgd', 
       metrics=[metrics.mae, metrics.categorical_accuracy]) \\or like 
       metrics=['mae', 'categorical_accuracy'] 

二是这样的

import keras.backend as K 

def mean_pred(y_true, y_pred): 
    return K.mean(y_pred) 

model.compile(optimizer='rmsprop', 
       loss='binary_crossentropy', 
       metrics=['accuracy', mean_pred]) 
定义指标

这里mean_pred是自定义指标。查看定义已有指标和自定义指标的区别。所以fmeasure不容易获得。您必须将其定义为自定义功能。