loading...
pytorch中的log_softmax
Published in:2022-11-29 | category: 人工智能

pytorch中的log_softmax

softmax

softmax是用于归一化的函数,其作用是让所有的值都限制在范围0~1内。

其公式为
$$
\begin{gather}
\Large x_i’=\frac{e^{x_i}}{\sum_{j=1}^ne^{x_j}}
\end{gather}
$$

log_softmax

为什么用log_softmax

在虽然softmax可以完成归一化的目的,但当x中存在一个特别大的值时,或每个x都特别小时,会出现上溢(下溢)的情况,因此,为了解决这种特殊情况带来的问题,我们可以用log_softmax来解决。

公式

log_softmax的公式如下
$$
\begin{gather}
\Large x_i’=\ln{\frac{e^{x_i-x_{max}}}{\sum_{j=1}^ne^{x_j-x_{max}}}}\\
\Large =e^{x_i-x_{max}}-\ln{\sum_{j=1}^ne^{x_j-x_{max}}}
\end{gather}
$$
经过简单的计算后可得出一个显然的结论:log_softmax和softmax的值最终并无差别。

Next:
梯度校验