keras训练出现IndexError: tuple index out of range

我报该错误是因为:

triplet_loss = Lambda(self.cal_triplet_loss, name="triplet")(feature)
sim_model.compile(optimizer=optimizer,
                  loss={
                       "triplet": lambda y_true, y_pred: y_pred,
                        "output": "sparse_categorical_crossentropy",},
                        metrics=["accuracy"])

模型编译时, “triplet”层的输出是1d的,而metrics的计算在源码中需要至少两个维度。解决方案是,给triplet层的输出加一个维度从(batch_size, ) →(batch_size, 1)
另一个解决方案就是去掉metrics,自己实现训练过程的指标计算(继承 keras.callbacks.Callback,实现其中的on_epoch_end, on_batch_end)。

你可能感兴趣的:(踩过的坑,keras,AI)