softmax结果输出为1
- 一些解决方法reference:csdn《tensorflow softmax输出只有0或1》
- 但实际我的程序是因为输入数据方差太大,比如说一个是-10000,一个是+110000,计算精度不够的时候,前者就被舍入到0,后者就被舍入到1了,我采取的解决方法就是数据归一化
softmax和sigmoid的关联
- reference
- 知乎:Softmax函数和Sigmoid函数的区别与联系
-
三个角度看待softmax:
- softmax将输入向量归一化映射到一个类别概率分布
- softmax可以当max的一种平滑近似
- 概率图的理解,暂时还不是很理解
-
diff
- 模型输出为非互斥类别,且可以同时选择多个类别,则采用Sigmoid函数计算该网络的原始输出值;模型输出为互斥类别,且只能选择一个类别,则采用Softmax函数计算该网络的原始输出值。所以,Sigmoid函数可以用来解决多标签问题,Softmax函数用来解决单标签问题。
- 对于某个分类场景,当Softmax函数能用时,Sigmoid函数一定可以用
如果是非互斥标签,放在一起softmax意义是不大的。
-
二分类场景下,softmax可以退化成sigmoid,但是输入层(前者是2个,后者是一个)还是不一样的,对应的物理意义也是不一样的
全部讲解看这个 stackExchange,简易版讲解看如下:
总结来说,二分类的时候,softmax和sigmoid的建模能力是一样的,但是softmax会有更多的参数,所以还不如直接用sigmoid更有利于优化。
-