80得票2回答
Variable的backward()方法中的参数retain_graph是什么意思?

我正在学习PyTorch神经风格迁移教程,但是我对retain_variable(已弃用,现在称为retain_graph)的使用感到困惑。代码示例如下: class ContentLoss(nn.Module): def __init__(self, target, weight...

59得票3回答
为什么C++编译器不进行更好的常量折叠?

我正在研究加快一个大型C++代码段的方法,其中包含用于计算雅各比矩阵的自动导数。这涉及在实际残差中进行一定量的工作,但根据剖析执行时间,大部分工作都是在计算雅各比矩阵中完成的。 这让我感到惊讶,因为大多数雅各比矩阵是从0和1向前传播的,因此工作量应该是该函数的2-4倍,而不是10-12倍。为...

36得票3回答
符号微分和自动微分之间的区别是什么?

我似乎无法理解它们之间的区别。对我来说,它们看起来只是经过一个表达式并应用链规则.. 我错过了什么?

16得票1回答
如何提高自动微分的性能?

我正在努力优化一个程序,该程序依赖于ad的conjugateGradientDescent函数来完成大部分工作。 基本上,我的代码是一篇旧论文代码的翻译,这篇论文使用Matlab和C编写。虽然我没有测量过,但那个代码每秒可以运行多次迭代。而我的代码每次迭代需要几分钟... 这个代码可以在这...

14得票2回答
反向传播和反向自动微分有何相同之处(或不同之处)?

Wikipedia关于反向传播算法的页面中提到: 计算梯度的反向传播算法已经被发现多次,并且是一种称为反向累积模式下的自动微分技术的特殊情况。 能否有人用通俗易懂的语言解释一下这个声明?这里所微分的函数是什么?“特殊情况”是什么?使用的是伴随值本身还是最终梯度? 更新:自写此文以来,我发现...

14得票7回答
Scheme / Common Lisp / Clojure中的自动微分库

我听说 McCarthy 发明 Lisp 的一个最初的动力之一就是为了编写自动微分系统。尽管如此,我的谷歌搜索没有找到任何用于此目的的库/宏。是否存在任何Scheme/Common Lisp/Clojure库(宏)可接受函数 F 并返回计算 F 的导数 dF/dx 的函数? 我希望它支持具有...

12得票4回答
有没有Haskell语言的反向模式自动微分的可行实现?

我看过的最相关的Haskell实现是前向模式,位于http://hackage.haskell.org/packages/archive/fad/1.0/doc/html/Numeric-FAD.html。 最相关的研究似乎是针对Scheme相关另一种函数语言的反向模式,位于http://w...

11得票1回答
优化创建过多垃圾(非堆栈溢出)的列表函数。

我有一个Haskell函数,它导致程序大于50%的分配,并使60%的运行时间由GC占用。我使用小堆栈(-K10K)运行,因此没有堆栈溢出,但我能否使这个函数更快,分配更少? 这里的目标是计算矩阵乘以向量的积。例如,我不能使用hmatrix,因为这是使用ad自动微分包的更大函数的一部分,所以我...

10得票1回答
在Julia中浏览自动微分生态系统

朱莉娅拥有一个相当庞大的自动微分生态系统,可能现在已经有十几个不同的包涵盖了前向模式(ForwardDiff.jl, ForwardDiff2.jl),反向模式(ReverseDiff.jl, Nabla.jl, AutoGrad.jl)和源到源(Zygote.jl, Yota.jl, Enz...

10得票1回答
如何在PyTorch中手动应用渐变。

开始学习PyTorch,尝试做一些非常简单的事情,试图将一个随机初始化的大小为5的向量移动到目标向量[1,2,3,4,5]。 但是我的距离没有减小!而且我的向量x变得疯狂。不知道我漏掉了什么。 import torch import numpy as np from torch.autog...