重复使用经过训练的Keras模型的零件

时间:2018-10-04 08:58:52

标签: python tensorflow keras

我想加载经过训练的Keras模型,并希望在其他模型中使用它的一部分。该模型由FUNCTIONAL API定义。

我的模型如下:

  Input
    |
    |
    V
Embedding
    |
    |
    V
  Core
    |
    |
    V
 Output

例如,Core是具有池化功能以及其他所有功能的CNN。我尝试使用model.layers.pop()删除“输出”,“输入”和“嵌入”,但这没有用,因为它不会更新图形。 我还尝试使用Core的第一层和最后一层来构建新模型,但这没有用,因为Core的第一层不是输入层。

我还试图弹出旧的Input and Embedding层并使用

input = Input(shape)
embedding = Embedding(...)
output = model(embedding)

new_model = Model(input, output)

定义新模型。但是,效果也不理想。 当我只删除输入并将其替换为新输入时,

是否可以使用弹出和更新图形或类似方法或重置图层的输入? 我认为问题在于,如果您从模型中删除图层,这些图层仍然会存储其输入,因此不会更新模型的内部结构。

我正在使用python 3.6,tensorflow作为后端和keras 2.2.2

感谢您的帮助

0 个答案:

没有答案