已經在 Github 上針對影像、NLP 等不同任務訓練了許多模型。我如何匯入這些模型的權重并在它們之上構建自定義模型?我應該從頭開始為他們建立一個模型并匹配每一層的數量和形狀,或者我應該如何進行?
例如,假設我訓練了下面的 CNN 模型,那么如何將其傳輸并稍后與其他自定義層(例如不同的輸入形狀)一起使用?
from tensorflow.keras import datasets, layers, models
import matplotlib.pyplot as plt
(train_images, train_labels), (test_images, test_labels) = datasets.cifar10.load_data()
# Normalize pixel values to be between 0 and 1
train_images, test_images = train_images / 255.0, test_images / 255.0
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
history = model.fit(train_images, train_labels, epochs=10,
validation_data=(test_images, test_labels))
uj5u.com熱心網友回復:
你應該能夠保存這樣的模型:model.save('my_model.h5')
并加載這樣的模型:new_model = tf.keras.models.load_model('my_model.h5')
所以總結你有一個來自例如 github 的 *.h5 格式的模型,只需加載它,然后你就可以new_model.summary()看到模型了。在進行遷移學習時,您通常希望凍結第一層并只訓練您可以使用的最后幾層:
new_model.trainable = False凍結整個模型并且:
for layer in new_model.layers[-3:]:
layer.trainable = True
解凍最后三層
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/522939.html
標籤:张量流喀拉斯迁移学习
