python 迁移学习
时间: 2023-11-30 14:43:14 浏览: 33
迁移学习是指将已经在一个任务上训练好的模型应用于另一个相关任务的过程。在Python中,可以使用许多深度学习框架(如TensorFlow和PyTorch)来实现迁移学习。以下是一个使用TensorFlow实现图像分类的迁移学习的例子:
```python
import tensorflow as tf
from tensorflow import keras
# 加载预训练模型
base_model = keras.applications.MobileNetV2(input_shape=(224, 224, 3),
include_top=False,
weights='imagenet')
# 冻结预训练模型的权重
base_model.trainable = False
# 添加新的分类层
inputs = keras.Input(shape=(224, 224, 3))
x = base_model(inputs, training=False)
x = keras.layers.GlobalAveragePooling2D()(x)
outputs = keras.layers.Dense(10)(x)
model = keras.Model(inputs, outputs)
# 编译模型
model.compile(optimizer=keras.optimizers.Adam(),
loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=[keras.metrics.SparseCategoricalAccuracy()])
# 加载数据集
train_dataset = tf.keras.preprocessing.image_dataset_from_directory(
'path/to/train/directory',
validation_split=0.2,
subset="training",
seed=123,
image_size=(224, 224),
batch_size=32)
val_dataset = tf.keras.preprocessing.image_dataset_from_directory(
'path/to/train/directory',
validation_split=0.2,
subset="validation",
seed=123,
image_size=(224, 224),
batch_size=32)
# 训练模型
model.fit(train_dataset, epochs=10, validation_data=val_dataset)
```
在这个例子中,我们使用MobileNetV2模型作为预训练模型,并在其之上添加了一个新的分类层。我们冻结了预训练模型的权重,只训练新的分类层。最后,我们使用图像数据集对模型进行训练。