我使用resnet50来解决多类分类问题。该模型输出每个类的概率。我应该为我的模型选择哪种损失函数?
以上结果适用于具有不同损失函数的同一模型。该模型应该将图像分类为 26 个类别,因此分类交叉熵应该起作用。 此外,在第一种情况下,准确率约为 96%,但损失却如此之高。为什么?
最佳答案
你肯定需要使用categorical_crossentropy
对于多分类问题。 binary_crossentropy
将以一种不清楚的方式将您的问题简化为二元分类问题,无需进一步研究。
我想说,您在第一种情况(以及在某种程度上第二种情况)中看到高精度的原因是因为您过度拟合。您要添加的第一个密集层包含 800 万个参数(!!!看到这样做 model.summary()
),并且您只有 70k 图像来训练它 8 个时期。这种架构选择对计算能力和数据要求都非常高。您还使用了一个非常基本的优化器( SGD
)。尝试使用更强大的 Adam
.
最后,我对您选择 'sigmoid'
感到有点惊讶输出层的激活函数。为什么不来个更经典的'softmax'
?
关于machine-learning - 需要帮助选择损失函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55991658/