我使用迁移学习用 keras 训练了一个模型。由于整个代码几乎很大,我只带来重要的部分。
对于学习率,我从 github 克隆了一些代码以便能够使用循环学习率。并将其作为回调传递给模型。
这是我定义学习率的方法。
from tensorflow.keras.optimizers import RMSprop
opt = RMSprop()
def get_lr_metric(optimizer):
def lr(y_true, y_pred):
return optimizer.lr
return lr
lr_track = get_lr_metric(opt)
MIN_LR = 1e-7
MAX_LR = 1e-3
CLR_METHOD = "triangular"
clr = CyclicLR(
mode= CLR_METHOD,
base_lr= MIN_LR,
max_lr= MAX_LR,
step_size= steps_per_epoch)
Run Code Online (Sandbox Code Playgroud)
和我的模型:
def vgg16_fine_tune():
vgg16_model = VGG16(weights='imagenet', include_top=False)
x = vgg16_model.output
x = GlobalAveragePooling2D()(x)
x = Dense(256, activation='relu')(x)
x = Dropout(0.3)(x)
x = Dense(128, activation='relu')(x)
x = Dropout(0.3)(x)
x = Dense(128, activation='relu')(x)
x = Dropout(0.3)(x) …Run Code Online (Sandbox Code Playgroud)