如何解决如何使用预训练模型但没有权重的模型架构
我想使用ResNet模型架构,并希望更改最后几层;如何仅使用Tensorflow中的模型动物园中的模型架构?
解决方法
要使用ResNet模型,您可以从tensorflow.keras.applications
中选择少数几个,包括ResNet50
,ResNet101
和ResNet152
。然后,如果要进行转移学习,则需要更改一些默认参数。对于您的问题,您需要将weights
参数设置为等于None
。否则,将提供'imagenet'
权重。另外,您需要将include_top
设置为False
,因为问题的类别数量可能与ImageNet不同。最后,您将需要在input_shape
中提供数据的形状。看起来像这样。
base = tf.keras.applications.ResNet50(include_top=False,weights=None,input_shape=shape)
要获取模型摘要,您可以
base.summary()
要添加自己的头像,可以使用功能性API。您将需要添加一个Input
图层和一个自己的Dense
图层,以与您的任务相对应。这可能是
input = tf.keras.layers.Input(shape=shape)
base = base(input)
out = tf.keras.layers.Dense(num_classes,activation='softmax')(base)
最后,您可以构建模型
model = tf.keras.models.Model(input,out)
Model
构造函数带有2个参数。第一个是模型的输入,第二个是输出。请注意,调用model.summary()
将把ResNet基础显示为单独的层。要查看ResNet基础的所有层,可以执行model.layers[1].summary()
,也可以修改有关如何构建模型的代码。第二种方式是
out = tf.keras.layers.Dense(num_classes,activation='softmax')(base.output)
model = tf.keras.models.Model(base.input,out)
现在您可以仅使用model.summary()
来查看所有图层。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。