为什么我在 sparse_categorical_crossentropy 和 categorical_crossentropy 中得到 2 个不同的损失?
why did i got 2 different losses for sparse_categorical_crossentropy and categorical_crossentropy?
我训练了一个多类分类模型。一共有三个类。在第一种方法中,我通过将 类 转换为单热向量并训练具有损失函数、分类交叉熵的模型来训练模型,我在 1000 个 epoch 中实现了 0.07 的损失。但是当我使用相同的方法时,但这次我没有将 类 转换为 one-hot vectors 并使用 sparse_categorical_crossentropy 作为损失函数,这次我在 1000 个 epochs 中实现了 0.05 的损失.. 这是否意味着 sparse_categorical_crossentropy 优于 categorical_crossentropy?
谢谢!
您不能根据损失来比较两个损失函数,因为损失的定义本身发生了变化。您可以比较相同测试数据集上的性能。
一般使用 sparse_categorical_crossentropy
当你的 class 是互斥的(例如当每个样本完全属于一个 class 时)和 categorical_crossentropy
当一个样本可以有多个 classes 或标签是软概率(如 [0.5, 0.3, 0.2])。
你得到了不同的损失,因为标签的表示发生了变化,实际上在 keras 中 sparse_categorical_crossentropy
被定义为具有整数目标
的分类 crossentropy
我训练了一个多类分类模型。一共有三个类。在第一种方法中,我通过将 类 转换为单热向量并训练具有损失函数、分类交叉熵的模型来训练模型,我在 1000 个 epoch 中实现了 0.07 的损失。但是当我使用相同的方法时,但这次我没有将 类 转换为 one-hot vectors 并使用 sparse_categorical_crossentropy 作为损失函数,这次我在 1000 个 epochs 中实现了 0.05 的损失.. 这是否意味着 sparse_categorical_crossentropy 优于 categorical_crossentropy?
谢谢!
您不能根据损失来比较两个损失函数,因为损失的定义本身发生了变化。您可以比较相同测试数据集上的性能。
一般使用 sparse_categorical_crossentropy
当你的 class 是互斥的(例如当每个样本完全属于一个 class 时)和 categorical_crossentropy
当一个样本可以有多个 classes 或标签是软概率(如 [0.5, 0.3, 0.2])。
你得到了不同的损失,因为标签的表示发生了变化,实际上在 keras 中 sparse_categorical_crossentropy
被定义为具有整数目标
crossentropy