【问题标题】:Error when using a custom metric function in Keras在 Keras 中使用自定义指标函数时出错
【发布时间】:2019-02-15 21:57:21
【问题描述】:

我在尝试使用自定义函数在 Keras 中编译 lstm 模型时遇到问题。

我已经定义了一个名为 mean_p_e 的自定义度量函数,我想在我的 Keras 模型中使用它。

我的代码是:

import keras.backend as K
def mean_p_e(y_true, y_pred):
    return K.mean((y_true - y_pred)**2/y_true)

然后我构建我的模型,存储在一个 json 文件中:

"model": {
    "loss": "mse",
    "optimizer": "adam",
    "save_dir": "saved_models",
    "metric":"mean_p_e",

然后我编译:

model.compile(loss=configs['model']['loss'], optimizer=configs['model']['optimizer'], metrics=['accuracy', configs['model']['metric']])

我收到以下错误:

ValueError:未知度量函数:mean_p_e

我需要进行哪些更改才能使其正常工作?

【问题讨论】:

  • 你的json文件好像不完整。

标签: python keras metrics


【解决方案1】:

如果您在同一脚本中定义configs,只需将configs 中的"metric":mean_p_e 替换为"metric":"mean_p_e",那么一切正常。

但似乎configs 是您从 json 文件中读取的内容,在这种情况下,您可以尝试:

model.compile(loss=configs['model']['loss'], 
              optimizer=configs['model']['optimizer'], 
              metrics=['accuracy', locals()[configs['model']['metric']]])

或:

model.compile(loss=configs['model']['loss'], 
              optimizer=configs['model']['optimizer'], 
              metrics=['accuracy', eval(configs['model']['metric'])])

按函数名调用函数。

参考:Calling a function of a module by using its name (a string).

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-09
    • 1970-01-01
    • 2017-11-20
    • 1970-01-01
    • 2017-12-23
    • 2018-05-14
    • 2017-10-02
    • 2021-10-25
    相关资源
    最近更新 更多