【问题标题】:Creating a Keras Callback that activates every n epochs创建一个每 n 个 epoch 激活的 Keras 回调
【发布时间】:2018-12-04 03:14:40
【问题描述】:

我想在 Keras 中创建自己的回调,但不知道如何去做。

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

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

或者有没有其他好方法可以每隔n epochs 调用一个函数?

当使用参数 period=10 时,我想到了一个与 keras.callbacks.ModelCheckpoint 类似的回调。

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

编辑: 经过相当多的阅读后,我想出了这个,它似乎可以工作(仍然需要正确测试)

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/

【问题讨论】:

  • 回调有一个on_epoch_begin/on_epoch_endmethod。您可以在这些方法的主体中添加if epoch==10: do something
  • 感谢您的回答。我不明白我可以这么简单地打电话给epochs。我在self.paramsself.model 中寻找它
  • @HMK 我建议你添加这个作为答案
  • 这里有类似的解释 - javacodemonk.com/…

标签: python callback keras


【解决方案1】:

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

class myCallback(keras.callbacks.Callback):
    def on_epoch_end(self, epoch, logs=None)
        if epoch % 10 == 0:
            your_func()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-22
    • 2019-09-16
    • 2018-03-17
    • 2020-12-09
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 2019-05-15
    相关资源
    最近更新 更多