使用 Keras 和 CNN 进行迁移学习:收到标签值 46,超出 [0, 5) 的有效范围

Transfer learning with Keras and CNN: Received a label value of 46 which is outside the valid range of [0, 5)

我已经使用具有 43 classes 的数据集训练了一个顺序模型;每个 class 名称都是 0 - 43,它们来自目录的名称。现在我想使用迁移学习在先前训练的模型之上创建一个新模型,新数据的 classes 为 43 - 47。现在问题是当我添加 5(我的标签数43-47) 作为密集层中 classes 的数量,它显示此错误:

tensorflow.python.framework.errors_impl.InvalidArgumentError: 收到标签值 46,超出 [0, 5] 的有效范围。

那么如何在 Dense 层中添加 classes 的数量从 44 开始,而不是零 (0)?

这是我的传输模型代码:

model_old = load_model('model.h5')

model_new = tf.keras.models.Sequential()

for layer in model_old.layers[:-1]:
    layer.trainable = False
    model_new.add(layer)

model_new.add(tf.keras.layers.Dense(5, activation="softmax"))
model_new.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) 

请检查您是否调用了 tf.keras.utils.to_categorical(y, num_classes=None, dtype='float32') 函数来转换您的 Y 向量连接标签 (43- 47) 转换为从 0 到 num_classes = 5 的整数矩阵 (0,1,2,3,4)。 希望这会有所帮助。