【发布时间】:2020-04-14 05:06:23
【问题描述】:
我有一个神经网络,在 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 的输入是预测 ground truth 的一个很好的输入——每次这个数字都大于-1000——我们知道答案是0。
由于某种原因,softmax 函数无法学习这样简单的东西,并且总是给出答案(在对输出执行“argmax”之后)
[0 0 0 0 0 0 0 0 0 ...]
有趣的是,当输入有正数作为0 的预测变量和负数作为1 的预测变量时,它不会出错,并获得100% 的准确性。
更有趣的是,当两组中的数字都是正数时,它也会出错。
现在,我唯一的问题是 - 为什么我的 softmax 很难区分 2 类型的类,因为它对人类来说如此清晰。我觉得我在 softmax 中犯了一些基本错误。
我错过了什么?
谢谢!
(是的,很抱歉这里的第一个问题,stackoverflow 用这种代码格式折磨了我,如果帖子看起来很奇怪,很抱歉)
【问题讨论】:
标签: python deep-learning neural-network softmax