Softmax函数无法预测

问题描述 投票:0回答:1

我有一个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对人类如此清晰的时候,为什么我的softmax很难区分2类型的类。我觉得我在softmax中犯了一些基本的错误。

我想念什么?

谢谢!

(是,对不起,这里是第一个问题,stackoverflow用这种代码格式折磨了我,所以如果帖子看起来很奇怪,对不起)

python deep-learning neural-network softmax
1个回答
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型层。

© www.soinside.com 2019 - 2024. All rights reserved.