我正在Google Colab TPU上按以下方法训练Keras模型-
using System;
using MySql.Data.MySqlClient;
namespace feedback_app_backend.Disposables
{
public class CustomQuestionnaireDB : IDisposable
{
MySqlConnection conn = new MySqlConnection("server=localhost;user id=user;password=mypass;database=mydb");
public MySqlConnection Connection { get; }
public CustomQuestionnaireDB()
{
Connection = new MySqlConnection(conn.ConnectionString);
}
public void Dispose() => Connection.Dispose();
}
}
在培训期间,即使损失随着当前学习率值的增加而改善,我的学习率也会降低0.5倍。您可以在下面的代码段中看到,学习率从0.0020降低到0.0010到0.0005。
adam = Adam(lr=0.002)
model.compile(loss='mse', metrics=[PSNRLoss, SSIMLoss], optimizer=adam)
checkpoint = ModelCheckpoint("model_{epoch:02d}.hdf5", monitor='loss', verbose=1, save_best_only=True,
mode='min')
reduce_lr = ReduceLROnPlateau(monitor='loss', factor=0.5,
patience=5, min_lr=0.00002)
csv_logger = CSVLogger('history.log')
callbacks_list = [checkpoint,reduce_lr,csv_logger]
model.fit(traindb, batch_size=1024,
callbacks=callbacks_list,shuffle=True,epochs=100, verbose=2, validation_data = validdb)
谢谢您的期待:)请指出我要去哪里了?我是否应该监视其他合适的值。
答案 0 :(得分:1)
CPropertySheet
对象具有一个名为ReduceLROnPlateau
的参数,该参数是用于测量新最优值的阈值。 min_delta
的默认值为min_delta
。因此,尽管您的日志输出表明损失有所改善,但如果损失小于0.0001
,则可以避免这种损失。因此,在min_delta
个时期之后,学习率降低了。