[知乎作答]·关于在Keras中多标签分类器训练准确率问题
本文来自知乎问题 关于在CNN中文本预测sigmoid分类器训练准确率的问题?中笔者的作答,来作为Keras中多标签分类器的使用解析教程。
一、问题描述
二、问题回复
问题中提出的解决多标签多分类问题的解决方法是正确的。但是要注意几点,keras里面使用这种方式的acc是二进制acc,会把多标签当做单标签计算。
什么意思呢?举个例子,输入一个样本训练,共有十个标签,其中有两个为1,而你预测结果为全部是0,这时你得到准确率为0.8。最后输出的ac是所有样本的平均。可以看出这个准确率是不可信的。
解决方法如下:重写acc评价指标,笔者自己写了一个多标签分类的acc,一个样本里,只有全部标签都对应上才acc为1,有一个不对就为0。
acc是keras输出acc,my_acc是多标签acc,因为使用了数据增强,valacc更高。
由于每个label的比例不同,又测试不同权重重写loss来对比。发现通过调整合适权重可以,相同参数下可以达到更优效果。
设置合适的权重值,val_acc上升了,val多标签acc也达到了更高。