首页 > 解决方案 > GPU 确定性与 TensorFlow 双线性插值

问题描述

我希望将 TensorFlow Addons (9.1) 与 TensorFlow (2.2-stable) 一起使用。我希望使用一个函数 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 确定性的人都可以确认吗?

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

标签: tensorflowcudagpudeterministic

解决方案


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


推荐阅读