Softmax溢出

机器算法验证 软最大 数字
2022-01-27 17:27:13

在 Coursera 上等待 Andrew Ng 的下一门课程时,我正在尝试在 Python 上编写一个分类器,在最后一层使用 softmax 函数来获得不同的概率。但是,当我尝试在 CIFAR-10 数据集(输入:(3072, 10000))上使用它时,我在计算指数时遇到了溢出。事实上,我有 5000、10000 或 25000 这样的数字。

我已经尝试了两件事:

  • 在计算指数之前减去一个常数到矩阵,但我的数字之间有很大的差异,所以我不能这样做。
  • 计算矩阵对数的指数,但它仍然溢出。

有人可以帮我避免这个问题吗?

谢谢

编辑:https ://github.com/Kentena/softmax/

1个回答

观察 对于任何常数

exijexj=ememexijexj=eximjexjm
m

显然是不正确的,但标准化版本是相同的。你的问题是太大了,所以在你使用 softmax 之前从所有这些中有时人们将设置为所有的最大值。exi=eximximmxi