gpt4 book ai didi

Keras 模型 - 功能 API - 向现有模型添加层

转载 作者:行者123 更新时间:2023-12-03 22:18:27 26 4
gpt4 key购买 nike

我正在尝试学习使用 Keras 模型 API 来修改经过训练的模型,以便随时随地对其进行微调:

一个非常基本的模型:

inputs = Input((x_train.shape[1:]))
x = BatchNormalization(axis=1)(inputs)
x = Flatten()(x)
outputs = Dense(10, activation='softmax')(x)
model1 = Model(inputs, outputs)
model1.compile(optimizer=Adam(lr=1e-5), loss='categorical_crossentropy', metrics=['categorical_accuracy'])

它的架构是

InputLayer -> BatchNormalization -> Flatten -> Dense



在对它进行一些训练批次之后,我想在 Flatten 和输出之间添加一些额外的 Dense 层:

x = Dense(32,activation='relu')(model1.layers[-2].output)
outputs = model1.layers[-1](x)

但是,当我运行它时,我得到了这个:

ValueError: Input 0 is incompatible with layer dense_1: expected axis -1 of input shape to have value 784 but got shape (None, 32)



有人可以解释一下发生了什么以及如何/是否可以向已经训练好的模型添加层?

谢谢

最佳答案

一个 Dense层是严格为某个输入维度制作的。该维度在您定义后无法更改(它需要不同数量的权重)。

因此,如果您真的想在已使用的密集层之前添加层,则需要确保最后一个新层的输出与展平的输出具有相同的形状。 (它说你需要 784,所以你新的最后一个密集层需要 784 个单位)。

另一种方法

由于您要添加中间层,因此保留最后一层是没有意义的:它是专门针对某个输入进行训练的,如果您更改了输入,则需要再次对其进行训练。

嗯……既然要再练一遍,为什么要留着呢?只需创建一个适合您之前新图层形状的新图层即可。

关于Keras 模型 - 功能 API - 向现有模型添加层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48584962/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com