Softmax函数不能预测

2024-04-20 09:54:09 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 函数答案精度原因数字nn事实区分
1条回答
网友
1楼 · 发布于 2024-04-20 09:54:09

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

例如,如果您对多标签分类感兴趣,可以尝试使用sigmoidlayer

相关问题 更多 >