首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何创建一个类似于Imagenet或Noisy student的预训练权重模型?

如何创建一个类似于Imagenet或Noisy student的预训练权重模型?
EN

Stack Overflow用户
提问于 2020-06-29 10:07:04
回答 1查看 439关注 0票数 0

我正在尝试创建一个预训练的权重模型文件,该文件可用于初始化类似于imagenet预训练的权重文件或噪声学生的模型。

我有足够大的数据集,这些数据集非常多样化,但特定于我感兴趣的领域。我希望创建一个通用的预训练权重文件,该文件特定于我感兴趣的领域。

我知道我不能训练和保存模型权重,因为在生成的预训练权重文件和我试图使用该预训练权重的网络之间,类的数量不会匹配(因此不会匹配层数)。

我在互联网上找不到任何关于创建自定义预训练体重文件的信息,所以任何提示或建议都会非常有帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-29 10:19:45

当您定义用于在数据集上进行训练的模型时,它的头部应该是一个全局池化层,后面是一个密集层。密集层将用于根据您的数据集进行分类。模型完成训练后,您可以基于训练模型的图形创建不同的模型,但不包括其头部。然后,你可以保存这个新模型的权重,它可以用于迁移学习。下面是我使用Tensorflow的函数式API所解释的内容的简化视图。

代码语言:javascript
运行
复制
inputs = Input(shape)
# All hidden layers
x = (...)(inputs)
# Final pooling layer
x = GlobalAveragePooling2D()(x)
# Prediction layer
x = Dense(num_classes)(x)

model = Model(inputs, x)

一旦你训练了这个模型,创建一个不同的模型,连接除头部之外的所有部分,并保存权重。

代码语言:javascript
运行
复制
new_model = Model(inputs, model.layers[-2])
new_model.save_weights(file_path)

这个新模型包含与前一个模型相同的输入,但输出是GlobalAveragePooling2D()层之前的层。

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

https://stackoverflow.com/questions/62630203

复制
相关文章

相似问题

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