== 对于sigmoid和softmax看这篇足够了==
(1)分类:2分类,多分类,对应输出为一个预测向量,可以是1个,两个,多个
(2)目标检测:对应二维矩阵mn,m行代表有m个目标,n列代表n个特征预测值,x,y,类别类型。
(3)语义分割:mn*k(宽,高,类别数)
看下面的博客介绍
(11条消息) 深度学习原理23——激活函数_xiaotiig的博客-CSDN博客_激活函数原理
https://blog.csdn.net/xiaotiig/article/details/111257822
输出通道维度是1,用sigmoid
输出通道维度是2,用softmax
多分类用softmax,同时注意算不算背景,多分类考虑不考虑其它,语义分割考虑不考虑背景,考虑的话需要在类别的基础上加1,比如20+1
sigmoid和softmax的区别就是互斥与否
同样输出10类,输出通道是10,
(1)用sigmoid的话,表示这10类互不相关,得到的10个概率值中的每个值代表输入这类的概率和不属于这类的概率,0-1之间的值。
比如第4个值,代表输入第4类的值概率和不属于第4类的概率,和其它9个值没关系。
经过sigmoid输出的10个值互不影响,只关注某一类的可能性概率是多大,每一类都是二分类,所以加起来也不等于1,可以是第一类得到的值0.9,第二个也是0.9。
(2)用softmax就不一样了,它要综合考虑10个类,属于每个类的概率,这10个类相互影响,加起来是等于1的。
进一步理解:
(1)可以从网络角度来理解,输出维度是2和输出维度是3,4,5等都叫多分类,输出维度是1才叫2分类。
(2)sigmoid用到10分类中,相当于10个分类器,10个人来判断自己负责的类,都是相互独立的,每个人只负责判断自己对应位置的类别是不是,都比较自私,没有宏观能力。输出为10,用了10个sigmoid函数,1个sigmoid对应1个输入,一个输出,10个sigmoid分类器各自独立计算,得到10个输出。
softmax用到10分类中,相当于1个分类器,1个人来判断属于10个类别的概率,这样就有了宏观思维,能考虑全局,所以多分类中用softmax比较好。输出为10个,输入为10个,1个softmax分类器综合计算。
(3)多分类任务中我们不是就不能用sigmiod,可以用,只不过它不能考虑多个类别的综合情况,所以效果一半较差,我们不用它。
损失函数softmax_cross_entropy、binary_cross_entropy、sigmoid_cross_entropy之间的区别与联系 - 灰信网(软件开发博客聚合)
https://www.freesion.com/article/7062261412/
(2条消息) 一分钟理解softmax函数(超简单)_L.Z.的博客-CSDN博客_softmax
https://blog.csdn.net/lz_peter/article/details/84574716
(1)分类任务中,输出为1,用sigmoid,输出不为1,用softmax
(2)语义分割中,输出为1,用sigmoid,输出不为1,用softmax
(3)特殊情况,二分类任务和二分类语义分割,输出通道维度可以是1,也可以是2。输出为1,用sigmoid,输出为2,用softmax。一半情况下,二分类任务输出通道为1,用sigmoid。二分类语义分割输出维度通道设为2,用softmax。
当然二分类任务和二分类语义分割输出通道为1或为2都行,效果都差不多。
(4)多标签任务中,就是一个图像可以包括人,猫,房子等多标签任务,一般用sigmoid,因为它们互不影响,究其本质还是看类别之间概率是不是相互影响来确定用sigmoid还是softmax,这是由它们的计算公式来区别的,sigmoid计算公式只用到了1个输入,softmax的输入是多个。
logits代表没有经过softmax或者sigmoid的计算。pre = logits+softmax或者pre = logits+sigmoid。
3种情况一般按这样做就行:
(1)二分类任务
(2)输出通道设为1
(3)用sigmoid
(1)二分类语义分割
(2)输出通道设为2
(3)用softmax
(1)多分类任务和多分类语义分割
(2)输出通道为n>2
(3)用softmax
二分类和多分类都叫交叉熵损失函数,一个是sigmoid交叉熵损失函数,一个是softmax交叉熵损失函数
用的是sigmoid,就用binary_cross_entropy
用的是softmax,就用softmax_cross_entropy
损失函数softmax_cross_entropy、binary_cross_entropy、sigmoid_cross_entropy之间的区别与联系 - 你的雷哥 - 博客园
https://www.cnblogs.com/henuliulei/p/13742376.html
3个决定(1)任务决定模型的输出通道维度,(2)输出通道维度决定用sigmoid还是softmax(不考虑多标签),(3)sigmoid和softmax决定损失函数。
(11条消息) sigmoid、softmax和交叉熵损失函数_xiaohuihui1994的博客-CSDN博客_sigmoid损失函数和softmax损失函数
https://blog.csdn.net/xiaohuihui1994/article/details/94179698?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-1.no_search_link&utm_relevant_index=1