python-3.x - Keras LearningRateScheduler 在批次而不是时期回调
问题描述
我正在使用 Tensorflow 2.x,下面是我编写的自定义学习率调度程序
def scheduler(epoch):
if epoch == 1:
return 3e-5
else:
return 3e-5 * (1/(1 + 0.01 * epoch ))
我这样称呼它
callback = tf.keras.callbacks.LearningRateScheduler(scheduler)
model.fit(inputs_train,tags_train,epochs=30,batch_size=32,validation_data=(inputs_val,tags_val),shuffle=False,callbacks=[callback])
但是,我不想在时代调用它,而是想在每批中调用它。我在有关批次的文档下方找不到任何内容
https://www.tensorflow.org/api_docs/python/tf/keras/callbacks/LearningRateScheduler
是否可以批量调用它,如果可以,该怎么做?
解决方案
编写自定义回调并使用后端set_value
方法
from keras.models import Sequential
from keras.layers import Dense
import keras
import numpy as np
import tensorflow.keras.backend as K
model = Sequential()
model.add(Dense(8, input_dim=2, activation='relu'))
model.add(Dense(2, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
x = np.random.randn(10,2)
y = np.random.randint(0,2,(10,2))
class lr_callback(keras.callbacks.Callback):
def on_batch_end(self, batch, logs=None):
K.set_value(self.model.optimizer.lr, 0.54321)
model.fit(x,y,epochs=2,batch_size=4,shuffle=False, callbacks=[lr_callback()])
print (K.get_value(model.optimizer.lr))
推荐阅读
- jasper-reports - ireport excel 输出包含空格而不是空列
- python - 如何使列表和字典的功能成为摘要?
- delphi - 为什么 MSFT_PhysicalDisk 总是返回磁盘大小 = 0?
- azure - Azure 持久函数实体绑定未注册 - node.js
- css - 使用 CSS 更改 Woocommerce“我的帐户”页面内容
- visual-studio-code - VS Code、Git 提交和 Electron 非上下文感知本机模块
- sql - 在缺少存储桶的 SQL Server 中计算直方图
- powershell - 在将数据写回之前关闭打开的 CSV。电源外壳
- javascript - 如何使用jquery根据滚动框内容使元素可滚动?
- bash - git 在合并期间是否创建新文件或覆盖现有文件