在Keras中复制图层的参数

时间:2016-12-10 21:56:11

标签: keras keras-layer

我试图在模型中使用最后一层(旧模型)并创建一个只有一层(新模型)的新模型,该模型与旧模型的最后一层具有完全相同的参数。我想以一种与旧模型的最后一层恰好相关的方式做到这一点。我尝试使用此代码进行操作,但收到错误。

newModel = Sequential()
newModel.add(type(oldModel.layers[-1])(oldModel.layers[-1].output_shape,
                                            activation=oldModel.layers[-1].activation,
                                            input_shape=oldModel.layers[-1].input_shape))

产生以下错误:

TypeError: __init__() missing 1 required positional argument: 'output_dim'

如果我检查oldModel中的最后一层,它会显示我:

full_model.model.layers[-1]
>>>> <keras.layers.core.Dense at 0x7fe22010e128>

我尝试将output_dim添加到我以这种方式复制的参数列表中,但这似乎没有帮助。当我这样做时,它给了我这个错误:

Exception: Input 0 is incompatible with layer dense_8: expected ndim=2, found ndim=3

知道我在这里做错了什么吗?

1 个答案:

答案 0 :(得分:0)

自己找到答案。如果不是使input_shape与旧模型的最后一层的input_shape相同,而是使其成为旧模型的倒数第二层的output_shape,并且仅指定该输出数组的[1:],它可以工作。有效的代码如下:

newModel.add(type(oldModel.layers[-1])(oldModel.layers[-1].output_shape,
                                        activation=oldModel.layers[-1].activation,
                                        input_shape=oldModel.layers[-2].output_shape[1:]))