用代码举例子
时间: 2024-02-24 09:54:56 浏览: 17
好的,以下是一个使用Keras库和VGG16预训练模型进行迁移学习的示例代码:
```python
# 导入Keras库和预训练模型
from keras.applications.vgg16 import VGG16
from keras.layers import Dense, Flatten
from keras.models import Model
# 加载预训练模型(不包括顶部的全连接层)
base_model = VGG16(weights='imagenet', include_top=False, input_shape=(224, 224, 3))
# 冻结预训练模型
for layer in base_model.layers:
layer.trainable = False
# 添加新的全连接层
x = base_model.output
x = Flatten()(x)
x = Dense(1024, activation='relu')(x)
predictions = Dense(10, activation='softmax')(x)
# 构建新的模型
model = Model(inputs=base_model.input, outputs=predictions)
# 编译模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
# 训练模型
model.fit(train_data, train_labels, epochs=10, batch_size=32, validation_data=(test_data, test_labels))
# 评估模型
score = model.evaluate(test_data, test_labels, verbose=0)
print('Test loss:', score[0])
print('Test accuracy:', score[1])
# 使用模型进行预测
predictions = model.predict(test_data)
```
在这个例子中,我们使用VGG16预训练模型,并在其顶部添加了一个新的全连接层。我们冻结了预训练模型的权重,并只训练了新添加的层,以避免过度拟合。最后,我们编译,训练和评估了模型,并使用它进行了预测。