【问题标题】:Callback for Keras evaluate_generatorKeras 的回调 evaluate_generator
【发布时间】:2018-08-01 04:45:45
【问题描述】:

我正在使用 Keras 进行我的一项实验。当我使用fit_generator 方法时,我可以指定回调,以便我可以在每个批次或每个时期之后实施。

现在,在使用 evaluate_generator 进行验证时,我会进行以下操作,

其他一些指标如下所示,

def accuracy(y_true, y_pred):
    return K.mean(K.equal(y_true, K.round(y_pred)))

评价,

metrics = model.evaluate_generator(my_generator(...),
                          steps=steps,
                          use_multiprocessing=True)

这里,my_generator() yield 单个输入(这里批量大小为 1)。此外,我在模型中定义了多种类型的损失。我完美地解决了所有这些损失。

但问题是,我只得到一个评估指标。我认为这是将所有单个批次视为一个整体输入的整体指标。

如何定义回调或类似的东西,以便我可以对单批评估进行自己的计算?(如 fit_generator 回调)。

注意: evaluate_generator does not 支持回调。

【问题讨论】:

    标签: python tensorflow keras deep-learning


    【解决方案1】:

    我认为您正在寻找 lambda 回调 https://keras.io/callbacks/#lambdacallback

    也可以使用完整的自定义回调。 keras 文档中的示例:

    class LossHistory(keras.callbacks.Callback):
        def on_train_begin(self, logs={}):
            self.losses = []
    
        def on_batch_end(self, batch, logs={}):
            self.losses.append(logs.get('loss'))
    

    【讨论】:

    • 是的,我需要任何回电。但是 evaluate_generator 不支持回调
    • 啊抱歉,我错过了。似乎是 Keras 中的一个开放问题。 github.com/keras-team/keras/issues/9484
    • 那么运气不好 :-( 好的,我会尝试更改我的实现。感谢您的努力
    猜你喜欢
    • 1970-01-01
    • 2020-04-27
    • 2019-09-16
    • 2020-04-23
    • 1970-01-01
    • 2019-08-29
    • 2016-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多