我有一个NN,在softmax之前的最后一层输出中,我有17
个数字(每个患者每个数字)。这些是数字:
[[ -534.2598 ]
[-255322.64 ]
[-251120.55 ]
[-248624. ]
[ -538.3214 ]
[-255104.42 ]
[-248609.89 ]
[-253180.05 ]
[-247280.56 ]
[ -539.3145 ]
[ -538.0261 ]
[ -540.1227 ]
[-254579.94 ]
[ -532.4342 ]
[ -531.34863]
[ -528.2402 ]
[-259635.69 ]]
现在,这些数字的基本事实是:
[[0 1 1 1 0 1 1 1 1 0 0 0 1 0 0 0 1]]
现在可以非常清楚地看到,softmax的输入对于预测基本事实是一个很好的输入-每当数字大于-1000
时,我们知道答案是0
。由于某种原因,softmax函数无法学习类似的简单内容,并且总是给出
[0 0 0 0 0 0 0 0 0 ...]
有趣的是,当输入具有正数作为0
的预测变量,而负数作为1
的预测变量,并获得100%
精度时,这不会出错。
更有趣的是,当两个组中的数字均为正时,它也会犯错。
[现在,我唯一的问题是-为什么当我的softmax对人类如此清晰的时候,为什么我的softmax很难区分2
类型的类。我觉得我在softmax中犯了一些基本的错误。
我想念什么?
谢谢!
(是,对不起,这里是第一个问题,stackoverflow用这种代码格式折磨了我,所以如果帖子看起来很奇怪,对不起)
不确定其他事情,但是softmax无法预测多个标签。 softmax层的总和为1(通过softmax函数的数学设计),这意味着使用softmax只能有一个答案(输出中只有一个1,其他零)。因此softmax的预期输出可以是
[[0,0,0,0,0,0,0,1,0,0,0]
但没有
[[0,0,0,0,1,0,0,1,0,0,1]
如果您对多标签分类感兴趣,请尝试例如选择S型层。