【发布时间】:2020-03-06 14:37:29
【问题描述】:
我的模型是 2 个不同的 keras 模型的集合,这些模型连接到相同的输入层,并在组合时具有 2 个输出层。 这两个模型都是预训练的,我正在尝试创建一个并行架构。 我的架构是: `
model_input = Input(shape=(224,224,3), name="model_input")
gender_model_copy.layers.pop(0)
color_model_copy.layers.pop(0)
color_model_ens1 = color_model_copy(model_input)
gender_model_ens1 = gender_model_copy(model_input)
model_f = Model(input=[model_input], output=[color_model_ens1,gender_model_ens1])
model_f.save('path')
`
模型已编译,我也可以进行预测,但是当我保存它并尝试重新加载它时,我得到了:
ValueError: Invalid input_shape argument (None, 224, 224, 3): model has 0 tensor inputs.
完整跟踪:Github gist link.
我有一个使用custom_objects={'Scale':Scale()} 添加的自定义层
keras.models.load_model 中的参数
我的keras版本是2.2.5,tensorflow版本是1.15
编辑:我意识到问题在于我让layer.trainable=False 无法训练层,如果不这样做,我就能够加载模型而不会出现错误。我仍然想知道为什么会这样。
【问题讨论】:
-
好吧,你在弹出时删除了输入层,你为什么要这样做?完全没必要
-
@MatiasValdenegro,我用较新的替换它,我尝试不删除它,但结果相同。
-
然后做一个可重现的例子
-
同意 Matias ......没有理由弹出层。 (而且我确实相信弹出是根本没有得到很好支持的东西,尤其是在模型的开头)
标签: python tensorflow keras keras-layer keras-2