温馨提示×

Keras中如何使用预训练模型

小樊
57
2024-03-22 19:55:47
栏目: 深度学习

Keras中可以使用预训练模型来进行迁移学习或者微调。以下是使用预训练模型的一般步骤:

  1. 导入所需的预训练模型,比如VGG16、ResNet50、InceptionV3等。这些模型可以在Keras的applications模块中找到。
from keras.applications import VGG16
  1. 实例化预训练模型,并指定是否包含顶层分类器。通常情况下,我们会去掉顶层分类器,因为我们要根据自己的数据集重新训练一个新的分类器。
base_model = VGG16(weights='imagenet', include_top=False)
  1. 在实例化的模型上添加新的分类器层。这个新的分类器层将会根据你的数据集进行训练。
x = base_model.output
x = GlobalAveragePooling2D()(x)
x = Dense(1024, activation='relu')(x)
predictions = Dense(num_classes, activation='softmax')(x)

model = Model(inputs=base_model.input, outputs=predictions)
  1. 冻结预训练模型的权重。通常情况下,我们会先冻结预训练模型的权重,只训练新添加的分类器层。
for layer in base_model.layers:
    layer.trainable = False
  1. 编译模型并进行训练。
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))
  1. 如果需要微调模型,可以解冻部分或全部预训练模型的层,并重新编译模型。
for layer in base_model.layers[:100]:
    layer.trainable = True

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))

通过以上步骤,你就可以使用预训练模型来进行迁移学习或者微调。

0