在每个时期之后进行自定义回调以记录某些信息 [英] Custom callback after each epoch to log certain information

查看:153
本文介绍了在每个时期之后进行自定义回调以记录某些信息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我知道如何在每个时期后保存模型:

savemodel = ModelCheckpoint(filepath='models/model_{epoch:02d}-{loss:.2f}.h5')
model.fit(X, Y, batch_size=4, epochs=32, verbose=1, callbacks=[savemodel])

如何具有自定义的回调函数来记录某些信息:

How to have a custom callback function to log certain informations:

def write_metrics(): 
    with open('log.txt', 'a') as f:  # append to the log file
        f.write('{epoch:02d}: loss = {loss:.1f}')

model.fit(X, Y, batch_size=4, epochs=32, verbose=1, callbacks=[savemodel, write_metrics])

?

使用此代码将无法使用,因为f.write('{epoch:02d}: loss = {loss:.1f}')中未定义{loss}{epoch}.

With this code it won't work because {loss} and {epoch} are not defined in f.write('{epoch:02d}: loss = {loss:.1f}').

推荐答案

这是通过将Callback子类化的解决方案:

Here is the solution, by subclassing Callback:

from keras.callbacks import Callback

class MyLogger(Callback):
    def on_epoch_end(self, epoch, logs=None):
        with open('log.txt', 'a+') as f:
            f.write('%02d %.3f\n' % (epoch, logs['loss']))

然后

mylogger = MyLogger()
model.fit(X, Y, batch_size=32, epochs=32, verbose=1, callbacks=[mylogger])

甚至

model.fit(X, Y, batch_size=32, epochs=32, verbose=1, callbacks=[MyLogger()])

这篇关于在每个时期之后进行自定义回调以记录某些信息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆