สามารถทำได้อย่างง่ายดาย
สร้างโมเดลด้วยคลาส 10 อันดับแรกและบันทึกโมเดลเป็น base_model
โหลด base_model และกำหนดรูปแบบใหม่ที่ชื่อว่า new_model as-
new_model = Sequential()
จากนั้นเพิ่มเลเยอร์ของ base_model ให้กับ new_model -
# getting all the layers except the last two layers
for layer in base_model.layers[:-2]: #just exclude the last two layers from base_model
new_model.add(layer)
ตอนนี้ทำให้เลเยอร์ของโมเดลใหม่ไม่สามารถฝึกได้เนื่องจากคุณไม่ต้องการให้โมเดลของคุณได้รับการฝึกฝนอีกครั้ง
# prevent the already trained layers from being trained again
for layer in new_model.layers:
layer.trainable = False
ตอนนี้เมื่อคุณถ่ายโอนการเรียนรู้เมื่อคุณลบเลเยอร์สุดท้ายรูปแบบของการลืมเกี่ยวกับ 10 คลาสดังนั้นเราจึงต้องรักษาน้ำหนักของ base_model ให้เป็น new_model -
weights_training = base_model.layers[-2].get_weights()
new_model.layers[-2].set_weights(weights_training)
ตอนนี้เพิ่มเลเยอร์หนาแน่นที่ท้ายและเราจะฝึกเลเยอร์หนาแน่นนี้ในตัวอย่างนี้เท่านั้น
new_model.add(Dense(CLASSES, name = 'new_Dense', activation = 'softmax'))
ตอนนี้ฝึกโมเดลและฉันหวังว่ามันจะให้ผลลัพธ์ที่ถูกต้องสำหรับคลาส 11 ทั้งหมด
เรียนรู้อย่างมีความสุข