使用softmax和sigmoid激活函数来做多类分类和多标签分类
在实际应用中,softmax用于多类分类,而sigmoid用于多标签分类较为普遍。 在图像处理中,网络模型提取图像特征的机制基本相同,但只有按任务变更了全连接层的输出层。 本节介绍如何使用softmax和sigmoid完成相应的分类任务。
softmax激活函数应用于多类分类
假设神经网络模型最后一层的全连通层输出一维向量logits=[1、2、3、4、5、6、7、8、9、10],这里假设总类别数为10,使用softmax分类器进行多
通过tensorflow实现:
TF.argmax(TF.softmax ) logits ) )首先在softmax中将logits转换为概率分布,其次将概率值最大的作为样本的分类。 softmax的主要作用其实是在计算交叉熵方面,把logits转换成一个概率分布再计算,把概率分布中最大的作为最终的分类结果。 这就是将softmax激活函数应用于多分类。
categorical_crossentropy损失函数
sigmoid一般用于二分类,而不是多类分类。 它将标量数字在[ 0,1 ]之间转换,如果概率阈值[通常大于0.5,则认为它属于某个类,否则不属于某个类。 该属性适用于多标签分类,多标签分类多使用sigmoid激活函数应用于多标签分类。 标量数字在[ 0,1 ]之间的转换,如果大于概率阈值(通常为0.5 ),则被认为属于某个类别。 本质上,这是对logits中的每个分类计算的结果分别作用一个sigmoid分类器,分别判定样本是否属于某一类别的相同假说。 神经网络模型的最后一个输出是这样的向量logits=[1、2、3、4、5、6、7、8、9、10],并且是神经网络的最终所有连接的输出。 这里假设共有10个分类。 路径:
TF.sigmoid(logits ) sigmoid应该将logits中的每个数字转换为[ 0,1 ]之间的概率值。 假设结果为[ 0.01、0.05、0.4、0.6、0.3、0.1、0.5、0.4、0.06、0.06 ],即一个样本具有多个标签。
现在,如果将sigmoid激活函数应用于多标签分类,则强调必须将损耗函数设置为binary_crossentropy。
参考博客:
3359 blog.csdn.net/legalhighhigh/article/details/81409551
3359 blog.csdn.net/uncle _ ll/article/details/82778750