The code that I have (that I can't change) uses the Resnet with my_input_tensor
as the input_tensor.
model1 = keras.applications.resnet50.ResNet50(input_tensor=my_input_tensor, weights='imagenet')
Investigating the source code, ResNet50 function creates a new keras Input Layer with my_input_tensor
and then create the rest of the model. This is the behavior that I want to copy with my own model. I load my model from h5 file.
model2 = keras.models.load_model('my_model.h5')
Since this model already has an Input Layer, I want to replace it with a new Input Layer defined with my_input_tensor
.
How can I replace an input layer?
When you saved your model using:
old_model.save('my_model.h5')
it will save following:
So then, when you load the model:
res50_model = load_model('my_model.h5')
you should get the same model back, you can verify the same using:
res50_model.summary()
res50_model.get_weights()
Now you can, pop the input layer and add your own using:
res50_model.layers.pop(0)
res50_model.summary()
add new input layer:
newInput = Input(batch_shape=(0,299,299,3)) # let us say this new InputLayer
newOutputs = res50_model(newInput)
newModel = Model(newInput, newOutputs)
newModel.summary()
res50_model.summary()