automatic-differentiation相关内容

tf.GradientTape 为梯度返回 None

我正在使用 tf.GradientTape().gradient() 来计算 代表点,其中可用于计算“影响"给定测试示例上的给定训练示例.给定测试示例 x_t 和训练示例 x_i 的表示点计算为其特征表示的点积,f_t 和 f_i,乘以权重alpha_i. 注意:这种方法的细节对于理解问题不是必需的,因为主要问题是让梯度胶带起作用.话虽如此,我已经为感兴趣的任何人提供了以下一些细节的屏幕截图 ..

Pytorch Autograd:什么是运行时错误“只能为标量输出隐式创建grad"?吝啬的

我正在尝试深入了解 Pytorch autograd;我想通过如下 sigmoid 函数观察一个简单张量的梯度: 导入火炬从火炬进口 autogradD = torch.arange(-8, 8, 0.1, requires_grad=True)使用 autograd.set_grad_enabled(True):S = D.sigmoid()S.backward() 我的目标是获得 D.gr ..

张量流如何在梯度计算过程中处理不可微节点?

我理解自动微分的概念,但是找不到任何解释来说明张量流如何计算不可微函数的误差梯度,例如损失函数中的tf.where或图形中的tf.cond.它工作得很好,但是我想了解张量流如何通过这些节点反向传播错误,因为没有公式可以根据它们计算梯度. 解决方案 对于tf.where,您有一个具有三个输入的函数,条件C,值为true T,值为false 和一个输出Out.渐变接收一个值,并且必须返回三个值 ..

为什么C ++编译器的常数折叠效果更好?

我正在研究加速大部分C ++代码的方法,这些C ++代码具有用于自动计算jacobian的派生工具.这涉及在实际残差中做一些工作,但是大部分工作(基于分析的执行时间)是在计算jacobian. 这让我感到惊讶,因为大多数雅各布派人都是从0和1向前传播的,所以工作量应该是函数的2-4倍,而不是10到12倍.为了建模大量的jacobian工作,我举了一个超级极小的示例,其中仅给出了一个点积(而不 ..

正向自动,数值与符号微分的计算效率

我正在尝试解决使用C语言中的Newton-Raphson(NR)方法查找函数根的问题.我想找到根的函数主要是多项式函数,但也可能包含三角函数和对数函数. NR方法需要找到函数的微分.实施差异化的方法有3种: 符号 数字 自动(子类型为正向模式和反向模式.对于这个特定问题,我想重点介绍正向模式) 我有成千上万个这样的功能,所有这些功能都需要在最快的时间内找到根. 据我所知 ..

使用Autograd的偏导数

我有一个接受多变量参数x的函数.这里x = [x1,x2,x3].假设我的函数如下所示: f(x,T)= np.dot(x,T)+ np.exp(np.dot(x,T),其中T是常数. 我对找到df/dx1,df/dx2和df/dx3函数很感兴趣. 我使用scipy diff取得了一些成功,但是我有点怀疑,因为它使用了数值差异.昨天,我的同事向我指出了Autograd (github) ..

避免在Python模块Sympy中对args进行排序

我目前正在为sympy开发差分运算符可以以矩阵形式放置. 在这种情况下,创建Mul对象时args列表的顺序对于确保仅在需要时进行区分非常重要. 问题在于,完成以下操作后: input = (t,z,x) Mul(*input).args 它返回(t, x, z),因为args中发生了一些重新排列.如何避免args进行排序? 解决方案 为什么arg排序对它正确才重要? ..
发布时间:2020-05-06 10:41:02 Python

Java - 使用Apache Commons Mathematic Library计算派生

我在使用apache commons数学库时遇到问题。 我只想创建像f(x)= 4x ^ 2 + 2x这样的函数,我想计算这个函数的导数 - > f'(x)= 8x + 2 我读过有关差异化的文章( http://commons.apache.org/proper/commons-math/userguide/analysis.html ,第4.7节)。 有一个我不明白的例子: ..

如何从自动分化中获得更多性能?

我很难优化一个依赖 ad s conjugateGradientDescent 函数的大部分程序工作。 基本上我的代码是一个旧的论文代码,它是用Matlab和C编写的。我没有测量它,但是代码每秒钟运行几次。 Mine每次迭代的次数为... 代码在这个版本库中可用: https://github.com/fhaust/aer https://github.com/fhaust/a ..
发布时间:2018-06-04 17:24:05 其他开发

Numeric.AD和打字问题

我正在尝试使用Numeric.AD和一个自定义Expr类型。我希望计算 用户输入表达式的符号梯度。具有恒定 表达式的第一次试验效果很好: calcGrad0 :: [Expr Double] calcGrad0 = grad df vars 其中 df [x,y] = eval(env [x,y])(EVar“x”* EVar“y”) env vs = zip varName ..
发布时间:2018-06-04 15:34:23 其他开发