gpt4 book ai didi

python - 如何在 Keras 拟合输出中命名自定义指标

转载 作者:太空宇宙 更新时间:2023-11-04 04:02:48 27 4
gpt4 key购买 nike

我在训练我的 Keras 模型时使用自定义指标。它工作正常,除了 model.fit_generator(...) 输出中的指标名称不可解释(注意:Tensorboard 也使用这些错误的名称)。

这是我正在做的一个可重现的例子:指标使用一个参数(除了预测和基本事实),所以我定义了一个工厂来生成一个无参数的指标函数,类似于:

def my_dummy_metric(y_true, y_pred, the_param=1.0):
return the_param * keras.backend.ones((1))

def my_metric_factory(the_param=1.0):
def fn(y_true, y_pred):
return my_dummy_metric(y_true, y_pred, the_param=the_param)

return fn

my_second_metric = my_metric_factory(2.0)
my_other_metric = my_metric_factory(3.14)

然后我编译并训练我的模型:

model.compile(my_optim, my_loss, [my_second_metric, my_other_metric])
history = model.fit_generator(...)
print(history.params['metrics'])

我的问题是 history 中的指标名称是 fnfn_1val_fn val_fn_1。 Tensorboard 也使用这些名称,您需要了解实现细节才能理解它们。

相反,我在使用简单的自定义函数时没有这个问题,没有工厂:

model.compile(my_optim, my_loss, [my_dummy_metric])
history = model.fit_generator(...)
print(history.params['metrics'])

在基于工厂的用例中是否也可以获得 my_XXX_metric 作为输出名称?

环境:使用 Keras 2.2.4、TF 1.14.0、Python 3.7

最佳答案

是的,这是可能的。在度量工厂中,设置一个合适的度量函数的__name__即可。例如:

def my_metric_factory(the_param=1.0):
def fn(y_true, y_pred):
return my_dummy_metric(y_true, y_pred, the_param=the_param)

fn.__name__ = 'metricname_{}'.format(the_param)
return fn

关于python - 如何在 Keras 拟合输出中命名自定义指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57910680/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com