我试图在模型中使用最后一层(旧模型)并创建一个只有一层(新模型)的新模型,该模型与旧模型的最后一层具有完全相同的参数。我想以一种与旧模型的最后一层恰好相关的方式做到这一点。我尝试使用此代码进行操作,但收到错误。
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
知道我在这里做错了什么吗?
答案 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:]))