keras 加载预训练模型权重和保存模型权重,以及迁移学习finetuning

  1. keras 加载backbone网络训练权重
    一般神经网络的首次训练时,backbone网络一般采用成熟的特征提取网络,比如Alex net,VGG16,resnet,inception,densenet等,为了加速训练,可以直接加载这些backbone网络的训练权重进行训练,这些模型权重一般都在大型数据集中训练得到的,主要利用他们的强大的特征提取能力。透过keras的load_weights函数,透过by_name=True利用tensor name加载name相同的预训练权重,不同名的不加载。model.trainable = True,表示加载的权重都可以参与训练。可以根据需要冻结部分层参与训练。
model.load_weights(r'.\keras权重\resnet50_weights_tf_dim_ordering_tf_kernels.h5',
                   by_name=True)
model.trainable = True
  1. keras 保存模型权重
    经过多个epoch训练后,都要保存模型或者权重,方便后续训练及预测predict。
    利用kears的callbacks里面的ModelCheckpoint实现。
modelcheck = ModelCheckpoint('./unet_'+ label +'_20.h5', monitor='dice_coef', save_best_only=True, mode='max')

callable = [modelcheck]
H = model.fit_generator(generator=generateData(BS,train_set,data_format='channels_last'),steps_per_epoch=train_numb//BS,epochs=EPOCHS,verbose=1,
                validation_data=generateValidData(BS,val_set,data_format='channels_last'),validation_steps=valid_numb//BS,callbacks=callable,max_q_size=1)
  1. keras 加载预训练权重
    对已经训练的模型权重加载进行再训练或者预测,都要加载。
pretrained_weights = './unet_'+label +'_20.h5'
if (os.path.exists(pretrained_weights)):
    model.load_weights(pretrained_weights)

你可能感兴趣的:(AI)