kus*_*sur 5 precision neural-network tensorflow pytorch
我正在浏览 Pytorch 和 Tensorflow 中的交叉熵文档。据我所知,他们正在修改交叉熵的简单实现,以解决潜在的数字上溢/下溢问题。然而,我根本无法理解这些修改有何帮助。
Pytorch 中交叉熵的实现遵循以下逻辑 -
现在,我们将它与 Tensorflow 的实现进行对比(我从 Github 的讨论中得到它。这可能是完全错误的) -
让
是所有 k 个原始 Logit 分数的向量。
虽然这解决了溢出问题,但它遇到了下溢问题,因为有可能
这将导致更小的
有人可以帮助我理解这里发生了什么吗?
小智 1
为了社区的利益,通过结合评论部分的答案来回答这里。
由于您已经解决了PyTorch中的数字溢出问题,因此可以通过减去最大值来处理,如下所示(来自此处)。
scalar_t z = std::exp(input_data[d * dim_stride] - max_input);
Run Code Online (Sandbox Code Playgroud)
对于 TensorFlow 的交叉熵实现来说,下溢问题并不是那么严重,因为在数值上它在占主导地位的大值中被忽略了。
| 归档时间: |
|
| 查看次数: |
1007 次 |
| 最近记录: |