我有一个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函数不能学习这样一个简单的东西,并且总是给出(在对输出执行“argmax”之后)的答案
[0 0 0 0 0 0 0 0 0 ...]
有趣的是,当输入的正数作为0
的预测器,负数作为1
的预测器时,它不会出错,并获得100%
精度
更有趣的是,当两组的数字都是正数时,它也会犯错误
现在,我唯一的问题是-为什么我的softmax很难区分2
类型的类,而人类却很清楚。我觉得我在softmax中犯了一些基本的错误
我错过了什么
谢谢你
(是的,很抱歉第一个问题,stackoverflow用这个代码格式折磨我,如果帖子看起来很奇怪,很抱歉)
不确定其他事情,但softmax无法预测多个标签。softmax层的总和是1(通过softmax函数的数学设计),这意味着使用softmax只能有一个答案(输出时只有一个1和其他零)。因此,softmax的预期输出可以是
但是没有
例如,如果您对多标签分类感兴趣,可以尝试使用sigmoidlayer
相关问题 更多 >
编程相关推荐