当前位置: 首页 > 面试题库 >

数值稳定的softmax

幸经艺
2023-03-14
问题内容

下面有没有一种数值稳定的方法来计算softmax函数?我得到的价值在神经网络代码中变成Nans。

np.exp(x)/np.sum(np.exp(y))

问题答案:

softmax exp( x )/ sum(exp( x
))实际上在数字上表现良好。它只有正数项,因此我们不必担心重要性下降,并且分母至少与分子一样大,因此可以保证结果介于0到1之间。

唯一可能发生的事故是指数溢出或溢出。 x 的单个元素的上溢或所有元素的下溢将使输出或多或少地无用。

但是很容易通过使用对任何标量c都成立的恒等式softmax( x* )= softmax( x + c)来防范这一点:从 x
减去max( x )会留下一个只有非正项的向量,排除上溢和至少一个为零的元素排除了消失的分母(某些但并非全部入口的下溢是无害的)。
*

脚注:从理论上说,在和灾难性事故是可能的,但你需要一个 荒谬的 条款数。例如,即使使用只能解析3个小数的16位浮点数(相比于“正常”
64位浮点数的15个小数点),我们也需要2 ^ 1431(〜6 x 10 ^ 431)和2 ^
1432得到的总和减少两倍



 类似资料:
  • 有没有一种数值稳定的方法来计算下面的softmax函数?我得到的值在神经网络代码中变成了Nans。

  • 理解了正向传播与反向传播以后,我们来讨论一下深度学习模型的数值稳定性问题以及模型参数的初始化方法。深度模型有关数值稳定性的典型问题是衰减(vanishing)和爆炸(explosion)。 衰减和爆炸 当神经网络的层数较多时,模型的数值稳定性容易变差。假设一个层数为$L$的多层感知机的第$l$层$\boldsymbol{H}^{(l)}$的权重参数为$\boldsymbol{W}^{(l)}$,输

  • 我有一个很长的浮点正数列表(

  • 本文向大家介绍Java版基数排序[稳定]相关面试题,主要包含被问及Java版基数排序[稳定]时的应答技巧和注意事项,需要的朋友参考一下 原理:分配加收集 复杂度: O(d(n+r)) r为基数d为位数 空间复杂度O(n+r)

  • 我正在为Android开发一款游戏。游戏:有一个身体(比如说小盒子)。我想:玩家和它碰撞,玩家会跳。在每次碰撞中,它都会跳,但不会跳到相同的高度(在我的代码100px中)!我的代码如下: 盒体的特点是: 和玩家: