我想定制我自己的优化器,它将在keras的每一批结束时改变学习率。首先,我构建了一个自定义回调:
class custom_callback(Callback):
def __init__(self,lr):
super(op_callback, self).__init__()
self.lr=lr
def on_batch_end(self,batch,logs={}):
sgd = SGD(lr=batch*self.lr)
self.model.compile(optimizer=sgd,loss='categorical_crossentropy',metrics=['accuracy'])
然后,我从doc复制SGD优化器代码。因为我想确保学习率是改变的,所以我在get_update
函数中打印学习率。在
但它只打印一次学习率。我发现get_update
函数只在构建计算图的开始时被调用。但是我仍然不明白为什么即使我重新初始化SGD实例,它也不会打印任何内容。如何在optimizer中更改批处理结束时的参数?提前谢谢。在
查看
LearningRateScheduler
的源代码,实现您想要的效果的一种最小方法是如下(它没有检查调用get_update
的频率,我甚至不确定是否应该在每个批处理上执行它,在任何情况下,此回调肯定会调整学习速率):相关问题 更多 >
编程相关推荐