【发布时间】:2023-03-28 11:54:01
【问题描述】:
我似乎找不到这个问题的具体答案。我目前正在从 VGG19 网络进行迁移学习,我的目标领域是文档分类(仅通过视觉分类或使用 CNN 的特征提取用于另一个模型)。 我想了解在哪些情况下需要保留模型的所有全连接层,在哪些情况下我应该删除全连接层并在最后一个卷积层之上创建一个新的全连接层。这些选择中的每一个对训练、预测等意味着什么?
这些是使用 Keras 的代码示例:
提取最后一个全连接层:
original_model = VGG19(include_top=True, weights='imagenet', input_shape=(224, 224, 3))
layer_name = 'fc2'
x = Dropout(0.5)(original_model.get_layer(layer_name).output)
x = BatchNormalization()(x)
predictions = Dense(num_classes, activation='softmax')(x)
features_model = Model(inputs=original_model.input, outputs=predictions)
adam = optimizers.Adam(lr=0.001)
features_model.compile(optimizer=adam, loss='categorical_crossentropy', metrics=['accuracy'])
features_model.summary()
return features_model
在最后一个卷积层之后添加一个全连接层:
original_model = VGG19(include_top=False, weights='imagenet', input_shape=(224, 224, 3))
x = Flatten()(base_model.output)
x = Dense(4096, activation='relu')(x)
x = Dropout(0.5)(x)
x = BatchNormalization()(x)
predictions = Dense(num_classes, activation='softmax')(x)
head_model = Model(input=base_model.input, output=predictions)
adam = optimizers.Adam(lr=0.001)
head_model.compile(optimizer=adam, loss='categorical_crossentropy', metrics=['accuracy'])
head_model.summary()
return head_model
在进行迁移学习时选择什么有经验法则吗?
【问题讨论】:
标签: machine-learning keras deep-learning conv-neural-network data-science