首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用resnet50模型进行微调?

如何使用resnet50模型进行微调?
EN

Stack Overflow用户
提问于 2017-10-11 16:58:13
回答 1查看 2.1K关注 0票数 2

我在互联网上看到了许多关于如何微调VGG16和InceptionV3的例子。例如,一些人会在微调VGG16时将前25层设置为冻结。对于InceptionV3,头172个层将被冻结。但是resnet呢?当我们进行微调时,我们将冻结一些基本模型的层,如下所示:

代码语言:javascript
复制
from keras.applications.resnet50 import ResNet50

base_model = ResNet50(include_top=False, weights="imagenet", input_shape=(input_dim, input_dim, channels))

..............

for layer in base_model.layers[:frozen_layers]:
    layer.trainable = False

那么我应该如何设置frozen_layers呢?实际上,当我使用VGG16、VGG19、ResNet50、InceptionV3 .etc进行微调时,我不知道应该冻结多少层。有人能给我关于如何微调这些模型的建议吗?特别是当人们对这些模型进行微调时,会冻结多少层呢?

EN

回答 1

Stack Overflow用户

发布于 2017-10-11 17:36:17

这很奇怪..。VGG16模型共有23层.(https://github.com/fchollet/keras/blob/master/keras/applications/vgg16.py)

所有这些模型都有类似的结构:

  • 一系列卷积层
  • 接下来是几层稠密的层

这几个密集的层就是keras所称的top。(如include_top参数中的那样)。

通常,这种微调只发生在最后的密集层。您让卷积层(它们理解图像和定位功能)完成它们的工作,并创建适合您的个人类的顶级部分。

人们常常创造他们自己的顶端部分,因为他们没有完全相同的课程,原来的模型被训练。所以他们调整了最后一部分,只训练了最后一部分。

所以,使用include_top=False创建一个模型,然后将其完全冻结。

现在,您添加您自己的密集层,并留下这些可训练。

这是最常见的适应这些模式。

对于其他类型的微调,可能没有明确的规则。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46693776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档