溫馨提示×

Keras中的預訓練模型怎么使用

小億
125
2024-03-19 13:05:36
欄目: 深度學習

在Keras中使用預訓練模型有兩種常見的方法:遷移學習和模型微調。

  1. 遷移學習: 遷移學習是指使用預訓練模型的特征提取器來提取新數據集的特征,并將這些特征輸入到自定義的分類器中進行訓練。在Keras中,可以通過加載預訓練模型的權重并凍結其所有層來實現遷移學習。下面是一個示例代碼:
from keras.applications import ResNet50
from keras.preprocessing import image
from keras.applications.resnet50 import preprocess_input
from keras.models import Model
from keras.layers import Dense, GlobalAveragePooling2D

# 加載ResNet50預訓練模型
base_model = ResNet50(weights='imagenet', include_top=False)

# 添加自定義的分類層
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)

# 凍結預訓練模型的所有層
for layer in base_model.layers:
    layer.trainable = False

# 編譯模型并訓練
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit_generator(...)

  1. 模型微調: 模型微調是指解凍預訓練模型的一部分層,并重新訓練這些層以適應新數據集。在Keras中,可以通過解凍預訓練模型的部分層來實現模型微調。下面是一個示例代碼:
# 解凍預訓練模型的部分層
for layer in model.layers[:100]:
    layer.trainable = False
for layer in model.layers[100:]:
    layer.trainable = True

# 編譯模型并繼續訓練
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
model.fit_generator(...)

通過這兩種方法,您可以靈活地使用預訓練模型,并根據自己的需求進行遷移學習或模型微調。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女