我拥有的代码(我无法更改)将Resnet与my_input_tensor
用作input_tensor。
model1 = keras.applications.resnet50.ResNet50(input_tensor=my_input_tensor, weights='imagenet')
研究source code时,ResNet50函数使用
my_input_tensor
创建一个新的keras输入层,然后创建模型的其余部分。这是我要用自己的模型复制的行为。我从h5文件加载我的模型。model2 = keras.models.load_model('my_model.h5')
由于此模型已经具有输入层,因此我想用
my_input_tensor
定义的新输入层替换它。如何替换输入层?
最佳答案
使用以下方法保存模型时:
old_model.save('my_model.h5')
它将保存以下内容:
因此,当您加载模型时:
res50_model = load_model('my_model.h5')
您应该返回相同的模型,可以使用以下命令验证相同的模型:
res50_model.summary()
res50_model.get_weights()
现在,您可以弹出输入层,并使用以下命令添加自己的输入层:
res50_model.layers.pop(0)
res50_model.summary()
添加新的输入层:
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()
关于python - Keras替换输入层,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49546922/