如何从另一个训练有素的模型中提取模型

时间:2019-04-05 18:41:27

标签: python tensorflow keras

我训练了一个看起来像这样的模型:

Input -> Dense_1 -> Dense_2 -> Dense_3 -> Dense_4 -> Output

我想提取一个模型,以便可以将输入直接传递给Dense_2,这样我的模型就可以了

Input (In the correct shape for Dense_2) -> Dense_2 -> Dense_3 -> Dense_4 -> Output

我看到的所有技术都是初始化顺序模型并将这些模型连接在一起,例如

Input -> Dense_1 -> Sequential

但这不适用于我的情况。

1 个答案:

答案 0 :(得分:1)

使用Keras功能API可以轻松实现。首先定义一个模型:

inp = Input(shape=(...))
d1 = Dense(..., name='d1')(inp)
d2 = Dense(..., name='d2')(d1)
d3 = Dense(..., name='d3')(d2)
out = Dense(..., name='d4')(d3)

model = Model(inp, out)

然后获取图层的输入并构建新模型。

inp_d2 = model.get_layer('d2').input

sub_model = Model(inp_d2, model.output)

请注意我如何手动放置图层名称,以便您可以使用get_layer找到它们。