首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在keras的model.compile中使用mectrics时,报告ValueError:(‘未知度量函数’,':f1score')

在keras的model.compile中使用mectrics时,报告ValueError:(‘未知度量函数’,':f1score')
EN

Stack Overflow用户
提问于 2017-04-11 20:27:19
回答 2查看 15.8K关注 0票数 6

我正在尝试运行LSTM,当我使用以下代码时:

代码语言:javascript
复制
model.compile(optimizer='rmsprop', loss='binary_crossentropy',
              metrics=['accuracy', 'f1score', 'precision', 'recall'])

它返回:

代码语言:javascript
复制
ValueError: ('Unknown metric function', ':f1score').

我已经搜索过了,找到了这个网址:https://github.com/fchollet/keras/issues/5400

此url中"model.compile“部分的"metrics”与我的完全相同,并且没有返回任何错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-12 02:58:23

我怀疑您使用的是Keras 2.X。正如https://keras.io/metrics/中所解释的,您可以创建自定义指标。这些指标似乎只将(y_true, y_pred)作为函数参数,因此fbeta的通用实现是不可能的。

这是一个基于keras 1.2.2源代码的f1_score实现。

代码语言:javascript
复制
import keras.backend as K

def f1_score(y_true, y_pred):

    # Count positive samples.
    c1 = K.sum(K.round(K.clip(y_true * y_pred, 0, 1)))
    c2 = K.sum(K.round(K.clip(y_pred, 0, 1)))
    c3 = K.sum(K.round(K.clip(y_true, 0, 1)))

    # If there are no true samples, fix the F1 score at 0.
    if c3 == 0:
        return 0

    # How many selected items are relevant?
    precision = c1 / c2

    # How many relevant items are selected?
    recall = c1 / c3

    # Calculate f1_score
    f1_score = 2 * (precision * recall) / (precision + recall)
    return f1_score

要使用,只需在定义自定义指标之后,在编译模型时将f1_score添加到指标列表中。例如:

代码语言:javascript
复制
model.compile(loss='categorical_crossentropy',
              optimizer='adam', 
              metrics=['accuracy',f1_score])
票数 12
EN

Stack Overflow用户

发布于 2019-09-01 06:13:38

K.epsilon()在这段代码中工作得很好。您可以在c1、c2和c3的定义中使用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43345909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档