回调函数

简介: 【8月更文挑战第21天】

回调函数
回调函数是传递给模型以自定义和扩展其在训练期间的行为的对象。我们可以编写自己的自定义回调,或使用tf.keras.callbacks中的内置函数,常用内置回调函数如下:
tf.keras.callbacks.ModelCheckpoint:定期保存模型。
tf.keras.callbacks.LearningRateScheduler:动态更改学习率。
tf.keras.callbacks.EarlyStopping:提前终止。
tf.keras.callbacks.TensorBoard:使用TensorBoard。

代码:

超参数设置

Epochs = 10

定义一个学习率动态设置函数

def lr_Scheduler(epoch):
if epoch > 0.9 Epochs:
lr = 0.0001
elif epoch > 0.5
Epochs:
lr = 0.001
elif epoch > 0.25 * Epochs:
lr = 0.01
else:
lr = 0.1

print(lr)
return lr

callbacks = [

#早停:
tf.keras.callbacks.EarlyStopping(
    #不再提升的关注指标
    monitor='val_loss',
    #不再提升的阈值
    min_delta=1e-2,
    #不再提升的轮次
    patience=2),

#定期保存模型:
 tf.keras.callbacks.ModelCheckpoint(
    #模型路径
    filepath='testmodel_{epoch}.h5',
    #是否保存最佳模型
    save_best_only=True,
    #监控指标
    monitor='val_loss'),

#动态更改学习率
tf.keras.callbacks.LearningRateScheduler(lr_Scheduler),

#使用TensorBoard
tf.keras.callbacks.TensorBoard(log_dir='./logs')

]

model.fit(train_x, train_y, batch_size=16, epochs=Epochs,
callbacks=callbacks, validation_data=(val_x, val_y))

输出:
Train on 1000 samples, validate on 200 samples
0
0.1
Epoch 1/10
1000/1000 [==============================] - 0s 155us/sample - loss: 12.7907 - categorical_accuracy: 0.0920 - val_loss: 12.7285 - val_categorical_accuracy: 0.0750
1
0.1
Epoch 2/10
1000/1000 [==============================] - 0s 145us/sample - loss: 12.6756 - categorical_accuracy: 0.0940 - val_loss: 12.8673 - val_categorical_accuracy: 0.0950

0.001
Epoch 10/10
1000/1000 [==============================] - 0s 134us/sample - loss: 12.3627 - categorical_accuracy: 0.1020 - val_loss: 12.3451 - val_categorical_accuracy: 0.0900

相关文章
|
6月前
|
前端开发
|
前端开发 JavaScript 测试技术
理解回调函数
理解回调函数
89 0
【回调函数】
【回调函数】
49 0
|
前端开发 API
19 # promisify:将回调方法 promise 化
19 # promisify:将回调方法 promise 化
41 0
|
API C++
回顾C++回调函数
回顾C++回调函数
「C/C++」C/C++ 回调函数
「C/C++」C/C++ 回调函数
123 0
|
Java C语言 C++
c++ 回调函数的使用
java的回调函数可能都不陌生,使用接口interface的方式,在接口中定义回调函数。函数参数可以是interfance。调用函数的时候,实现这个interface的函数即可。
195 0
c++ 回调函数的使用
回调函数是异步吗?回调函数和异步操作的关系
回调函数是异步吗?回调函数和异步操作的关系