我的数据是整数目标类,范围是1-5,其中一个是最低的,五个是最高的。在这种情况下,我应该将其视为回归问题并在输出层中有一个节点吗?
我的处理方式是:
1-首先我将标签转换为二进制类矩阵
labels = to_categorical(np.asarray(labels))
2-在输出层,我有五个节点
main_output = Dense(5, activation='sigmoid', name='main_output')(x)
3-我在编译时使用'categorical_crossentropy和mean_squared_error
model.compile(optimizer='rmsprop',loss='categorical_crossentropy',metrics=['mean_squared_error'],loss_weights=[0.2])
另外,有人能告诉我:在这种情况下使用categorical_accuracy和'mean_squared_error有什么区别?
答案 0 :(得分:0)
回归和分类是截然不同的事情。如果你把它重新想象为一个回归任务而不是预测2的差异,当基础事实为4时,评分会比预测3而不是4更高。如果你有像汽车,动物,人这样的课你不关心排名这些课程之间。如果图像显示一个人,预测汽车就像动物一样错误。
指标根本不会影响您的学习。除了显示模型性能的损失外,还可以计算出一些东西。这里的准确性是有道理的,因为这主要是我们关心的指标。均方误差并不能告诉您模型的表现如何。如果你得到类似于0.0015均方误差的东西,那听起来不错,但很难想象它的表现如何。相比之下,使用准确度和达到95%的准确度是有意义的。
最后一件事你应该使用softmax而不是sigmoid作为最终输出来获得最后一层的概率分布。 Softmax将输出总计为1的每个类的百分比。然后,交叉熵计算网络输出的概率分布与基本事实的差异。