首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从预先训练的NASnet网络中转移学习。如何知道需要冻结的层数?

从预先训练的NASnet网络中转移学习。如何知道需要冻结的层数?
EN

Stack Overflow用户
提问于 2018-02-02 06:38:52
回答 1查看 2.4K关注 0票数 3

为了训练图像分类模型(使用Keras或Tensorflow),我想使用我自己的图像数据集重新训练NASNetMobile的一定数量的层。

在本文:https://arxiv.org/pdf/1707.07012.pdf (第A.7节)中,我们可以这样理解:“此外,所有模型都使用位于网络上方2/3处的辅助分类器”。

下面是我想要进行迁移学习的NasNetMobile层:https://gist.github.com/didacroyo/a451c890b1f02822c7dd67c6f270f1d6

那么,在前面的基础上,我应该冻结底部1/3的层吗?(这是前250层)

EN

回答 1

Stack Overflow用户

发布于 2018-04-18 02:43:53

考虑到Aux分支的开始位置,我会尝试在activation_166之前冻结各层。如下所示:

代码语言:javascript
运行
复制
model = NASNetLarge((img_rows, img_cols, img_channels),dropout=0.5, use_auxiliary_branch=True, include_top=True, weights=None, classes=nb_classes)

model.load_weights('weights/NASNet-large.h5', by_name=True, skip_mismatch=True)

# Freeze original layers
model.trainable = True    
set_trainable = False
for layer in model.layers:
  if layer.name == 'activation_166':
    set_trainable = True
  if set_trainable:
    layer.trainable = True
  else:
    layer.trainable = False
  print("layer {} is {}".format(layer.name, '+++trainable' if layer.trainable else '---frozen'))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48572918

复制
相关文章

相似问题

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