我正在使用Keras进行一项实验。当我使用fit_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支持回调。
答案 0 :(得分:0)
我认为您正在寻找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'))