Softmax函数无法预测

时间:2019-12-22 17:09:37

标签: python deep-learning neural-network softmax

我有一个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用这种代码格式折磨了我,如果帖子看起来很奇怪,对不起)

1 个答案:

答案 0 :(得分:1)

不确定其他事情,但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形层。