【问题标题】:Finding gradients in tensorflow without sum在没有总和的情况下在张量流中查找梯度
【发布时间】:2020-02-22 16:23:35
【问题描述】:

上下文:我正在使用 CNN 求解 PDE。我需要 P w.r.t X 的梯度。

P=[p1 p2 ; p3 p4 ], X= [x1 x2; x3 x4]

我需要 P w.r.t X 的梯度。但是 Tensorflow 给了我所有部分的总和。

Stackoverflow 不允许我以乳胶格式发帖。所以这是我可以在 Math.Stachexchange 上发布的相同问题。请点击此链接以获得更清晰的信息:

https://math.stackexchange.com/questions/3408736/finding-gradients-in-tensorflow-without-sum

我需要做什么才能获得我需要的渐变?我真的很感谢你的帮助。在此处搜索类似问题没有帮助。

【问题讨论】:

    标签: tensorflow gradient


    【解决方案1】:

    【讨论】:

    • 谢谢。但我不需要雅可比行列式。如果您单击该链接,您会看到它。我实际上需要 (partial p_i)/(partial x_i)。
    • 你不能取雅可比的对角线,然后将其从 (16) 重塑为 (4, 4) 吗?
    • 这是个好主意。在我的例子中,P 是 2x2,X 是 2x2。因此,在 tensorflow 中执行 Z=Jacobian(P,X) 会返回一个 [2,2,2,2] 张量,它具有 (partial p_i)/(partial x_j)。所以现在做对角线运算并没有太大帮助。我需要通过切片 Z 来提取所需的(部分 p_i)/(部分 x_i),这变得非常慢,因为这个过程必须在训练期间多次完成。如果你有更好的方法,我真的很感激!
    • 这实际上不应该太慢,因为您在图形构建时执行一次切片,而不是在运行时连续执行 - 您是否运行过它并发现它很慢?
    • 是的,你是对的。我观察到第一次评估需要很长时间。在那之后,它还不错。不过,我有一个后续问题。我真正需要的是所有部分 (partial p_i)/(partial x_i) 的总和。现在,如果我从 sum=0 开始。并且在 for 循环中继续执行 sum=sum+partial,这是否会为每个循环创建一个新的 sum-increment Op?
    猜你喜欢
    • 2017-08-18
    • 1970-01-01
    • 2016-08-20
    • 2017-02-20
    • 1970-01-01
    • 2023-03-27
    • 2021-05-12
    • 1970-01-01
    • 2017-02-21
    相关资源
    最近更新 更多