Keras“冻结”层

本文介绍了Keras中‘冻结’层的概念及其应用场景,如在预训练模型fine-tune时保持模型前层参数不变,以及在获取模型中间层embedding时不更新这些层。通过设置层的trainable属性可以控制参数是否更新。以ResNet50为例,展示了如何调整模型,使预训练部分冻结,仅训练新增的顶层,从而实现模型的微调。
摘要由CSDN通过智能技术生成

“冻结”层指的是该层不参加网络训练,即该层的参数不会更新。“冻结”层主要有以下两个应用场景:

1)使用预训练模型进行fine-tune时,我们需要在预训练模型后面添加几层进行训练,而前面的预训练模型不进行参数更新;

2)当我们训练好模型,需要取出中间层的embedding再进行后续处理的时候,也需要这个操作。

Keras层是否进行参数更新可通过属性trainable来控制。我们可以直接在定义网络层的时候来指定trainable属性,

frozen_layer = Dense(32,trainable=False)

但是这种方法我没有找到什么应用场景,因为网络参数都是随机初始化的,如果不进行参数更新,那么该层的作用是什么?

下面还是以上述两种常用的场景做Keras“冻结”层的用法的分析。以导入预训练模型为例,

from keras.layers import Dropout, Flatten, Dense, Input
from keras.applications.resnet50 import ResNet50
from keras.models import Model, optimizers

def create_model(nb_class):
    input_shape = (197, 197, 3)
    inputs = Input(shape=input_shape)
    # 预训练模型
    pretrained_model = ResNet50(include_top=False,
                          weights&
  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值