tensorflow - 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 原子加法。因此,对于确定性(并且可以说对于稳定的非确定性训练),原子加法不适用于此函数的反向传播。
解决方案
解决了我的问题。请参阅问题 39751。问题是反向传播上的 tfa.dense_image_warp 使用 CUDA 原子加法。因此,对于确定性(并且可以说对于稳定的非确定性训练),原子加法不适用于此函数的反向传播。
推荐阅读
- python - `int() 的无效文字,以 10 为基数:'null' ` 同时将对象转换为整数
- vba - Excel VBA,将信息复制到其他工作表但名称随机
- mysql - 如何在 MySQL 中按特定模式搜索?
- xcode - UIWebView 在 ios-11、iPhone-X、Xcode-9 中显示重叠的状态栏
- python - 如何在 Tensorflow 对象检测 API 中使用两个模型
- c# - 如何使用反射来序列化和反序列化(通用方式)。不使用 dll
- google-bigquery - 如何删除 BQ 中的空行
- android - 用于数字液晶显示器的 Firebase MLkit 文本识别
- php - PHP preg_match_all not working on large data
- java - 子类到超类的 JSON 序列化