Keras中可以使用预训练模型来进行迁移学习或者微调。以下是使用预训练模型的一般步骤:
导入所需的预训练模型,比如VGG16、ResNet50、InceptionV3等。这些模型可以在Keras的applications模块中找到。from keras.applications import VGG16实例化预训练模型,并指定是否包含顶层分类器。通常情况下,我们会去掉顶层分类器,因为我们要根据自己的数据集重新训练一个新的分类器。base_model = VGG16(weights='imagenet', include_top=False)在实例化的模型上添加新的分类器层。这个新的分类器层将会根据你的数据集进行训练。x = base_model.outputx = GlobalAveragePooling2D()(x)x = Dense(1024, activation='relu')(x)predictions = Dense(num_classes, activation='softmax')(x)model = Model(inputs=base_model.input, outputs=predictions)冻结预训练模型的权重。通常情况下,我们会先冻结预训练模型的权重,只训练新添加的分类器层。for layer in base_model.layers: layer.trainable = False编译模型并进行训练。model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])model.fit(X_train, y_train, epochs=10, batch_size=32, validation_data=(X_val, y_val))如果需要微调模型,可以解冻部分或全部预训练模型的层,并重新编译模型。for layer in base_model.layers[:100]: layer.trainable = Truemodel.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])model.fit(X_train, y_train, epochs=10, batch_size=32, validation_data=(X_val, y_val))通过以上步骤,你就可以使用预训练模型来进行迁移学习或者微调。




