首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用没有权重的预训练模型的模型架构

如何使用没有权重的预训练模型的模型架构
EN

Stack Overflow用户
提问于 2020-08-12 08:08:09
回答 1查看 1.3K关注 0票数 2

我想使用ResNet模型架构,并想要更改最后几层;我如何才能只使用Tensorflow中模型动物园的模型架构?

EN

回答 1

Stack Overflow用户

发布于 2020-08-12 11:16:09

要使用ResNet模型,您可以从tensorflow.keras.applications中选择几个,包括ResNet50ResNet101ResNet152。然后,如果您想要进行迁移学习,则需要更改一些默认参数。对于您的问题,您需要将weights参数设置为等于None。否则,将提供'imagenet'权重。此外,您需要将include_top设置为False,因为针对您的问题的类的数量可能与ImageNet不同。最后,您需要在input_shape中提供数据的形状。这看起来像这样。

代码语言:javascript
复制
base = tf.keras.applications.ResNet50(include_top=False, weights=None, input_shape=shape)

要获取模型的摘要,您可以执行以下操作

代码语言:javascript
复制
base.summary()

要添加自己的head,可以使用Functional API。您将需要添加一个Input层和您自己的Dense层,这将与您的任务相对应。这可能是

代码语言:javascript
复制
input = tf.keras.layers.Input(shape=shape)
base = base(input)
out = tf.keras.layers.Dense(num_classes, activation='softmax')(base)

最后,要构造一个模型,您可以这样做

代码语言:javascript
复制
model = tf.keras.models.Model(input, out)

Model构造函数有两个参数。第一个是模型的输入,第二个是输出。请注意,调用model.summary()会将ResNet基础显示为一个单独的层。要查看ResNet基础的所有层,您可以执行model.layers[1].summary(),或者您可以修改构建模型的代码。第二种方法是

代码语言:javascript
复制
out = tf.keras.layers.Dense(num_classes, activation='softmax')(base.output)
model = tf.keras.models.Model(base.input, out)

现在,您只需使用model.summary()即可查看所有图层。

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

https://stackoverflow.com/questions/63367995

复制
相关文章

相似问题

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