【问题标题】:List of Differentiable Ops in TensorflowTensorflow 中的可微操作列表
【发布时间】:2021-01-05 03:34:02
【问题描述】:

是否存在可微分(即自动微分)的 Tensorflow 操作的主列表?

另外两种表达方式:

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

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

“常识”不是有效答案。

谢谢。

编辑:

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

谢谢。

【问题讨论】:

    标签: python tensorflow


    【解决方案1】:

    我已经使用 python 代码设计了可微和不可微操作的完整列表。

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

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

    【讨论】:

    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
    • 它的文字量很大。答案将是巨大的。将近 800 多条线路。
    • 非常感谢这项工作!扫描你的列表为我节省了很多时间来浏览不断膨胀的 tensorflow 源代码。
    • 请问,可微操作和不可微操作是什么意思,谁能帮忙理解这些术语?
    【解决方案2】:

    不,没有列表(您可以是第一个创建它的人)。另外据我所知,每个函数的文档也没有说明(tf.size 是不可微分的,但没有说明)。

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

    不相关,但probably helpful

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-02-15
        • 2020-12-30
        • 2021-01-26
        • 2018-02-06
        • 1970-01-01
        • 2020-07-22
        • 2018-06-18
        相关资源
        最近更新 更多