如何在他们之间加载模型多次,不分享权重,在顶部构建新模型并保存新模式?
我做了什么:
def loadPretrainedModel(minuslayers, addStr):
model = model_from_json(myModelJson)
model.load_weights(weightsfile)
for i in range(minusLayers):
model.layers.pop()
model.outputs = [model.layers[len(model.layers) - 1].output]
model.layers[len(model.layers) - 1].outbound_nodes = []
for layer in model.layers:
layer.name = layer.name + addStr
model.name = model.name + addStr
return model
pt_model1 = loadPretrainedModel(3, "")
pt_model1 = pt_model1([newInput1])
pt_model2 = loadPretrainedModel(3, "_mod2")
pt_model2 = pt_model2([newInput2])
newModel = Concatenate(axis=1)([pt_model1, pt_model2])
newModel = Dense(180, activation='tanh')(newModel)
... More Layers ..
newModel = Model(input=[newInput1, newInput2],outputs=myOutputs)
我无法使用newModel.save(myPath)
保存新模型
Keras抛出
{KeyError}:' out-ib_0'
模型编译和训练,但似乎pt_model1和pt_model2之间的权重是共享的,因为调试模式下的权重名称是相同的。