迁移学习冻结部分网络层及修改网络层方法

本文介绍了在迁移学习中如何冻结部分网络层以进行微调。通过设置模型的可训练状态,可以固定前六层网络不进行训练。同时,针对不同任务的分类数量,展示了如何删除和新增网络层,如从9分类到5分类的结构调整过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

part1
model.trainable = True
fine_tune_at = 6
for layer in model.layers[:fine_tune_at]:
    layer.trainable = False
    pass

迁移学习一般都是用源域数据训练好模型之后再用目标域数据微调部分网络层参数。想要冻结部分网络层只需要将训练好的模型设置为可训练

model.trainable = True

再将你想冻结的网络层设置为不可训练即可,本次例子就是冻结网络模型的前六层。

part2

迁移网络模型时往往需要对网络模型顶层做一些修改,比如用凯斯西储大学数据集训练的9分类网络模型,迁移到西交大数据集的5分类时,就需要对最后的分类层修改。使用pop()方法可删除最顶层网络层

model = models.load_model('weights.best.hdf5')
model.summary()
model.pop()
model.add(Dense(5,activation='softmax',name='dense_output'))
model.summary()

模型结构如下:

删除之前:

max_pooling1d_4 (MaxPooling1 (None, 32, 4)             0         
_________________________________________________________________
global_average_pooling

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值