繁体   English   中英

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

[英]How to use model architecture of pretrained models but no weights

我想使用 ResNet model 架构并想更改最后几层; 我怎样才能只使用 Tensorflow 中 model 动物园的 model 架构?

To use a ResNet model, you can choose a select few from tensorflow.keras.applications including ResNet50 , ResNet101 , and ResNet152 . 然后,如果要进行迁移学习,则需要更改一些默认的 arguments。 对于您的问题,您需要将weights参数设置为None 否则,会提供'imagenet'权重。 此外,您需要将include_top设置为False ,因为您的问题的类数可能与 ImageNet 不同。 最后,您需要在input_shape中提供数据的形状。 这看起来像这样。

base = tf.keras.applications.ResNet50(include_top=False, weights=None, input_shape=shape)

要获得 model 的摘要,您可以执行以下操作

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,你可以做

model = tf.keras.models.Model(input, out)

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

out = tf.keras.layers.Dense(num_classes, activation='softmax')(base.output)
model = tf.keras.models.Model(base.input, out)

现在您可以仅使用model.summary()查看所有层。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM