GPU 确定性与 TensorFlow 双线性插值

GPU determinism with TensorFlow bilinear interpolation

我希望将 TensorFlow Addons (9.1) 与 TensorFlow(2.2 稳定版)结合使用。我想使用一个函数 tfa.image.dense_image_warp。但是,它使用双线性插值,我很难理解它是否是确定性的。

根据 pull-request,https://github.com/tensorflow/tensorflow/pull/39243,repo 的作者 NVIDIA/tensorflow-determinism(Duncan Riach - 再次感谢您!),双线性运算存在问题。

但是,据我从tfa.image.dense_image_warp的源代码中看到的,特别是:https://github.com/tensorflow/addons/blob/ad132da23a8162eb97c435676dd7426e622a0074/tensorflow_addons/image/dense_image_warp.py#L25,似乎双线性插值是自包含的。

这是否意味着 tfa.image.dense_image_warp 可以安全地被视为 GPU 确定性?任何更熟悉此操作或 GPU 确定性的人都可以确认吗?

编辑: 答案如下。请看我打开的Issue 39751。问题是 tfa.dense_image_warp 反向传播使用 CUDA 原子加法。因此,对于确定性(并且可以说是稳定的非确定性训练),原子加法不适合此函数的反向传播。

解决了我的问题。请参阅 Issue 39751。问题是 tfa.dense_image_warp 反向传播使用 CUDA 原子加法。因此,对于确定性(并且可以说是稳定的非确定性训练),原子加法不适合此函数的反向传播。