Tensorflow操作的主列表是否可以区分(即会自动区分)?
另外两种表达方式:
ops.NoGradient
的操作列表。LookupError
的操作列表。例如,我假设所有控制流操作都不可区分(例如,tf.where
)。除了通过tf.gradients
手动运行它们以查看它们是否抛出LookupError
之外,我还能找到这个。
“常识”不是一个有效的答案。
感谢。
编辑:
tf.where
是可以区分的,所以我的直觉是错误的。也许这里正确的问题是Tensorflow中的哪些操作不可区分。
感谢。
答案 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