创建每n个时期激活的Keras回调

问题描述 投票:4回答:1

我想在Keras中创建自己的Callback,但并不真正了解该怎么做。

我想做的是创建一个回调,每个n(例如n=10)时期调用一个函数。根据Keras文档(https://keras.io/callbacks/),基类keras.callbacks.Callback具有属性params

此属性是否包括当前纪元?如果是这样,如何使用/调用它?

或者还有每n个纪元调用函数的其他好方法吗?

我想到了使用参数keras.callbacks.ModelCheckpoint时与period=10相似的回调。

非常感谢您的帮助。谢谢:)

编辑:经过一番阅读后,我想到了这一点,它似乎可以正常工作(仍然需要对其进行正确的测试)

class Test1(callbacks.Callback):
    def on_epoch_end(self, epochs, logs={})
        if epochs == 10:
            print('abc') #a random function

callb = Test1()    
model = networks.compute_network(layers=layers, batch_size=batch_size, epochs=epochs, call_list=[callb])
# compute_network in my case loads all the data, trains the network, and then returns it

一个站点特别帮助我更好地了解了回调:https://keunwoochoi.wordpress.com/2016/07/16/keras-callbacks/

python callback keras
1个回答
0
投票

正如@HMK所说,on_epoch_beginon_epoch_end方法提供了当前纪元。例如,要每隔10个时间应用一个函数,您可以像这样编辑自定义回调:

class myCallback(keras.callbacks.Callback):
    def on_epoch_end(self, epoch, logs=None)
        if epoch % 10 == 0:
            your_func()
© www.soinside.com 2019 - 2024. All rights reserved.