输出层的单元数(softmax)和数据中的标签数不匹配?

number of units of the output layer( softmax) and the number of labels in the data do not match?

我在用数据训练深度学习模型时遇到了以下问题。作为新手,我没有找到合适的答案。我希望你们能帮助我! !非常感谢!

For the first image, I extracted 1, 2, 4, 5, 6, 7, 12, 14, 18 from the dataset (there are 20 labels) as labels. Normally, I only need to enter 10 in the softmax layer and the model will function properly; the error shows that we need to set the number of units in the softmax layer to 19 for the model to function properly, and this is exactly what happened.第二张图,我只把最后一个标签改成16,然后我们需要将softmax中的单元数设置为17,模型才能正常运行。 那么为什么输出层的单元数(softmax)和数据中的标签数不匹配!! 虽然我可以通过改变softmax层的单元数来让模型正常工作,但是我不确定这是否会对模型的准确率有影响!

类 的数量由出现在您的数据中的最大标签数量决定。在您的情况下,由于最大标签为 18,因此您将 类 0、1、2、...、18,因此总共有 19 类(与错误中指定的完全相同)。

要解决它,您需要将 类 标签 [1,2,4,5,6,7,12,14,18] 重新映射到 [0,1,2,3,4,5,6,7,8]。它可以使用字典手动完成,也可以自动完成,例如这可能有效:

train_data1['faultNumber'] = train_data1['faultNumber'].astype("category").cat.codes

然后可以使用 train_data1['faultNumber'] 恢复原始标签,因为它现在有 category 类型。