我在互联网上看到过很多关于如何微调VGG16和InceptionV3的示例,例如,有些人在微调VGG16时会将前25层设置为冻结。对于InceptionV3,将冻结前172层。但是resnet呢?进行微调时,将冻结基本模型的某些层,如下所示:

from keras.applications.resnet50 import ResNet50

base_model = ResNet50(include_top=False, weights="imagenet", input_shape=(input_dim, input_dim, channels))

..............

for layer in base_model.layers[:frozen_layers]:
    layer.trainable = False


那么我应该如何设置Frozen_layers?实际上,当我使用VGG16,VGG19,ResNet50,InceptionV3等进行微调时,我不知道应该设置多少层冻结。谁能给我一些关于如何微调这些模型的建议?特别是当人们对这些模型进行微调时,他们将冻结多少层?

最佳答案

很好奇。...VGG16模型共有23层...(https://github.com/fchollet/keras/blob/master/keras/applications/vgg16.py



所有这些模型都具有类似的结构:


一系列卷积层
随后是几层致密层


这几个密集层就是keras所说的top。 (与include_top参数相同)。

通常,这种微调仅发生在最后的密集层中。您让卷积层(理解图像并定位特征)不变地完成其工作,并创建适合您的个人班级的顶层。

人们通常会创建自己的顶部,因为他们没有与原始模型完全相同的课程。因此他们改编了最后一部分,只训练了最后一部分。

因此,您可以使用include_top=False创建模型,然后将其完全冻结。
现在,您可以添加自己的致密层并使它们可训练。

这是这些模型的最常见的改编。

对于其他类型的微调,可能没有明确的规则。

关于machine-learning - 如何使用resnet50模型进行微调?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46693776/

10-12 19:15