首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Keras中加载卷积神经网络前几层的权值,删除预训练模型?

如何在Keras中加载卷积神经网络前几层的权值,删除预训练模型?
EN

Stack Overflow用户
提问于 2020-08-19 11:15:00
回答 1查看 351关注 0票数 0

我在凯拉斯有个受过训练的模特。

我正在尝试在另一个任务中使用该模型,但我不需要所有的层,而只需要前4个conv层。

我把模型保存在"keras_pretrained_model.h5“里

是否可以使用“.h5”文件中预训练模型的前4个conv层的权重来初始化新模型的前4个conv层?

是否必须先加载整个预先训练过的模型??

预训练模型实际上占用了很大的空间,我不知道在我用权值初始化新模型之后如何删除预训练模型。据我所知,使用tf.keras.backend.clear_session()将清除与旧模型一起创建的新模型。

所以,我的问题是

  1. 是否有任何方法来初始化新的模型层中的权重,而不加载整个预先训练的模型?
  2. 如果我要加载整个预训练模型,如何在不损害新模型的情况下只删除预训练模型?
EN

回答 1

Stack Overflow用户

发布于 2020-08-20 13:54:47

我想到了两个过程

  1. 如果新模型的前4层的层名与预训练模型中的4层相同,那么new_model.load_weights(path_to_old_model_file, by_name = True)
  2. 如果名称不计算,则可以通过从旧模型h5文件中的对应层中提取权重并使用set_weights()方法设置权重来进行分层权重初始化。我已经写了一个代码,我已经上传到github,这里

我将非常感谢,如果任何人看到这方面的反馈意见!!

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

https://stackoverflow.com/questions/63485780

复制
相关文章

相似问题

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