Tensorflow中的可区分操作列表

时间:2017-06-15 16:05:16

标签: python tensorflow

Tensorflow操作的主列表是否可以区分(即会自动区分)?

另外两种表达方式:

  • 未设置ops.NoGradient的操作列表。
  • 不会触发LookupError的操作列表。

例如,我假设所有控制流操作都不可区分(例如,tf.where)。除了通过tf.gradients手动运行它们以查看它们是否抛出LookupError之外,我还能找到这个。

“常识”不是一个有效的答案。

感谢。

编辑:

tf.where是可以区分的,所以我的直觉是错误的。也许这里正确的问题是Tensorflow中的哪些操作可区分。

感谢。

3 个答案:

答案 0 :(得分:4)

不,没有列表(你可以成为第一个创建它的人)。另据我所知,每个函数的文档也没有告诉它(tf.size是不可区分的,但没有告诉它。)

除了您建议的方式,您还可以从源代码中提取此数据。例如,所有已实现渐变的op都在方法声明前面有@ops.RegisterGradient。对于没有渐变的操作,您将拥有ops.NotDifferentiable(

不相关,但是probably helpful

答案 1 :(得分:2)

看来,对于 TensorFlow 2,documentation for the tf.raw_ops module 中提供了这样的列表。

答案 2 :(得分:1)

我使用python代码设计了可区分和不可区分操作的整个列表。

您将在此处找到紧凑列表。还有生成它的代码。

https://github.com/Mainak431/List-of-Differentiable--OPs-and-Non-differentiable-OPs--in-Tensorflow