为了账号安全,请及时绑定邮箱和手机立即绑定

重新训练自定义 VGGFace 模型产生随机结果

重新训练自定义 VGGFace 模型产生随机结果

白衣非少年 2022-11-18 20:52:07
我正在尝试将使用 VGGFace 权重的微调 VGGFace 模型与完全重新训练的模型进行比较。当我使用微调模型时,我得到了不错的准确率分数。然而,当我通过解冻权重重新训练整个模型时,准确度变得接近随机。我在猜测这是否是由于使用了小数据集?我知道 VGGFace 是在数百万个样本上训练的,而我的数据集只有 1400 个样本(对于二进制分类问题,每个类 700 个)。但我只是想确定我是否正确地加入了 VGGFace 模型和我的自定义模型。会不会也是学习率太快的原因?使用以下代码设置模型。def Train_VGG_Model(train_layers=False):    print('='*65);K.clear_session()    vggface_model=VGGFace(model='vgg16')    x=vggface_model.get_layer('fc7/relu').output    x=Dense(512,name='custom_fc8')(x)    x=Activation('relu',name='custom_fc8/relu')(x)    x=Dense(64,name='custom_fc9')(x)    x=Activation('relu',name='custom_fc9/relu')(x)    x=Dense(1,name='custom_fc10')(x)    out=Activation('sigmoid',name='custom_fc10/sigmoid')(x)    custom_model=Model(vggface_model.input,out,                       name='Custom VGGFace Model')    for layer in custom_model.layers:        if 'custom_' not in layer.name:            layer.trainable=train_layers        elif 'custom_' in layer.name:            layer.trainable=True        print('Layer name:',layer.name,              '... Trainable:',layer.trainable)    print('='*65);opt=optimizers.Adam(lr=1e-5)    custom_model.compile(loss='binary_crossentropy',                         metrics=['accuracy'],                         optimizer=opt')    custom_model.summary()    return custom_modelcallbacks=[EarlyStopping(monitor='val_loss',patience=1,mode='auto')]model=Train_VGG_Model(train_layers=train_layers)model.fit(X_train,y_train,batch_size=32,epochs=100,callbacks=callbacks,validation_data=(X_valid,y_valid))
查看完整描述

1 回答

?
慕勒3428872

TA贡献1848条经验 获得超6个赞

如果你已经有一个很好的重量,并且已经用足够大的数据集训练过,那么最好只微调/训练最后几层并冻结前面的层。

对于任何 conv NN,初始层用作特征提取器,一个好的预训练模型已经为足够好的数据集学习了最好的特征。

一旦您尝试重新训练整个模型,您就会丢掉所有东西。该模型将尝试转向您拥有的新数据集(可能它更小并且没有像原始数据集那样良好的分布)。这可能会使模型表现不佳。

如果你真的想训练整个模型,你可以尝试的另一件事是对于初始层,选择一个非常小的学习率(1e-5 到 1e-6),并为最后一层选择类似(1e-3)的东西.


查看完整回答
反对 回复 2022-11-18
  • 1 回答
  • 0 关注
  • 129 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号