【发布时间】:2017-07-24 18:44:08
【问题描述】:
下面有计算softmax函数的数值稳定方法吗? 我得到的值在神经网络代码中变成了 Nans。
np.exp(x)/np.sum(np.exp(y))
【问题讨论】:
-
这里的答案显示了计算 softmax 的更好方法:stackoverflow.com/questions/34968722/softmax-function-python
-
@ajcr 此链接上接受的答案实际上是糟糕的建议。 Abhishek,即使他们最初似乎不明白为什么是正确的做法,OP 所做的事情也是如此。除了溢出之外,softmax 中没有数值上的困难步骤。因此,在数学上等价的同时将所有输入向左移动,消除了溢出的可能性,因此在数值上是一种改进。
-
是的,尽管该接受答案的作者在 cmets 中承认,减去最大值不会引入“必要项”,但实际上会提高数值稳定性(也许应该编辑答案......)。无论如何,数值稳定性的问题在其他几个答案中得到了解决。 @AbhishekBhatia:您认为该链接是否令人满意地回答了您的问题,或者这里的新答案是否有益?
标签: python numpy nan scientific-computing softmax