import tensorflow.keras.backend as K # 自定义学习率的变化 def scheduler(epoch): # 每隔1个epoch,学习率减小为原来的1/10 # if epoch % 1 == 0 and epoch != 0: # lr = K.get_value(model.optimizer.lr) # K.set_value(model.optimizer.lr, lr * 0.1) # print("lr changed to {}".format(lr * 0.1)) if epoch % 20 == 19 and epoch != 0: # 每测试20轮,学习率降低一半 lr = K.get_value(model.optimizer.lr) K.set_value(model.optimizer.lr, lr * 0.5) print("lr changed to {}".format(lr * 0.5)) return K.get_value(model.optimizer.lr) model = tf.keras.Model(inputs=inputs, outputs=outputs) model.summary() model.compile(optimizer=tf.keras.optimizers.Adam(lr=3e-5, beta_1=0.5, beta_2=0.99), loss=v_loss, metrics='accuracy') # 自定义学习率 reduce_lr = LearningRateScheduler(scheduler) # reduce_lr = tf.keras.callbacks.ReduceLROnPlateau(monitor='val_loss', patience=50, mode='auto') history = model.fit(x_train, y_train, batch_size=1024, epochs=800, initial_epoch=1, validation_data=(x_test, y_test), callbacks=[reduce_lr])
TensorFlow在model.fit自定义学习率变化
最新推荐文章于 2023-09-07 21:59:50 发布
该文段展示了一个使用TensorflowKeras的自定义学习率调度器。模型训练过程中,学习率会在每个epoch的特定时刻调整:每过20个epoch减半,每隔1个epoch减至原来的1/10。模型使用了Adam优化器,初始学习率为3e-5,并在训练时应用了这个学习率调度器来改进优化过程。
摘要由CSDN通过智能技术生成