85. Keras Model Transfer-Learning

  1. Load model
    model_A = keras.models.load_model("model_A.h5")
    
  2. Clone Architecture
    model_A_clone = keras.models.clone_model(model_A)
    
  3. Clone Weights
    model_A_clone.set_weights(model_A.get_weights())
    
  4. Delete Last Layer
    model_B = keras.models.Sequential(model_A_clone.layers[:-1])
    
  5. Add Final layer => Change to Binary classifier
    model_B.add(keras.layers.Dense(1, activation="sigmoid"))
    

You can prevent copied layers to be affected when training for another task

for layer in model_B.layers[:-1]:
    layer.trainable = False

Finally, before you do anything, you should always remember to compile the model

model_B.compile(loss="binary_crossentropy",
                    optimizer=keras.optimizers.SGD(learning_rate=1e-3),
                    metrics=["accuracy"])

References:
Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow, 2nd Edition