问题标签 [automatic-differentiation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
308 浏览

python - tf.GradientTape() 的 __exit__ 函数的参数是什么?

根据文档tf.GradientTape它的__exit__()方法需要三个位置参数:typ, value, traceback.

这些参数究竟是什么?

with陈述如何推断它们?

我应该在下面的代码中给它们什么值(我没有使用with语句):

0 投票
0 回答
73 浏览

tensorflow - Tensorflow 在哪里存储*实际* Jacobians?

正如这里所讨论的,Tensorflow 的梯度不是真正的雅可比矩阵——Y 对 X 的“梯度”实际上只是sum( Y ) 对X的梯度。同样,当输出不是标量时,Pytorch 根本不显示雅可比行列式。

但是计算肯定需要完整的雅可比行列式(在链式法则的应用中)。

在内部,它存储在哪里?即是否有一些隐藏在 GradientTape 中的对象可以访问?

0 投票
1 回答
298 浏览

neural-network - PyTorch - 正确计算神经切线内核(每个数据点的雅可比)

在 PyTorch 中,我有一个固定x的形状数据集(batch size, input dimension)和一个前馈网络network。如果我调用yhat = network(x)shape网络的输出(batch size, output dimension),如何分别计算每个数据点yhat相对于的参数的梯度?network

0 投票
1 回答
111 浏览

tensorflow - 计算稀疏Hessian的边缘推送算法

我正在尝试自己实现一些 AD 算法,但我不太了解 Gower 和 Mello 用于计算稀疏 Hessian 的边缘推动算法

是否需要生成“原始梯度”的新计算图(例如,在计算 (x^2) 时是否应该生成图 (2*x) 以便找到二阶导数 (2)),因为论文指出虚线弧代表“非线性相互作用”,伴随物是如何累积形成二阶导数的?

此外,如果需要一个新图,这与符号微分有何不同?谢谢!

0 投票
1 回答
271 浏览

algorithm - 在 Haskell 中表示计算图

我正在尝试在 Haskell 中编写一个简单的自动微分包。

在 Haskell 中表示类型安全(有向)计算图的有效方法是什么?我知道广告包为此使用了“data-reify”方法,但我不太熟悉。谁能给我一些见解?谢谢!

0 投票
1 回答
593 浏览

python - 为什么 Pytorch autograd 需要另一个向量来向后而不是计算雅可比?

backward在 Pytorch 中执行,我们可以使用可选参数y.backward(v)来计算 Jacobian 矩阵乘以v

我认为计算雅可比矩阵的成本相同,因为仍然计算 AD 图中计算雅可比矩阵所需的每个节点。那么为什么 Pytorch 不想给我们雅可比矩阵呢?

0 投票
0 回答
163 浏览

python - 没有为任何变量提供梯度 - 具有随机权重的自定义损失函数,具体取决于 Softmax 输出

我很难编写自定义损失函数,该函数使用根据 Softmax 输出预测的类/状态生成的一些随机权重。所需的属性是:

  • 该模型是一个简单的前馈神经网络,输入维数为 1,输出维数为 6。
  • 输出层的激活函数是 Softmax,它打算使用 Argmax 估计实际的类或状态数。
  • 请注意,训练数据仅包含 X(没有 Y)。
  • 损失函数是根据基于每个输入样本 X 的预测状态数采样的随机权重(即 Weibull 分布)定义的。

如下,我提供了一个最小的例子来说明。为简化起见,我仅根据 state/class-1 的随机权重定义损失函数。我得到:“ValueError:没有为任何变量提供渐变:['dense_41/kernel:0', 'dense_41/bias:0', 'dense_42/kernel:0', 'dense_42/bias:0']。”

如下面的帖子所示,我发现 argmax 是不可微的,softargmax 函数会有所帮助(正如我在下面的代码中实现的那样)。但是,我仍然遇到同样的错误。 绕过不可微分的 tf.argmax

0 投票
1 回答
230 浏览

julia - 如何在 Julia 中使用提升规则?

我正在尝试编写一个结构来计算梯度(遵循https://www.youtube.com/watch?v=rZS2LGiurKY)这是我到目前为止所拥有的:

我想计算A*g(应该是A*ones())的梯度,但是当我这样做时

convert(GRAD, A) * g我得到了正确的结果。

我究竟做错了什么?

0 投票
0 回答
95 浏览

python - sympy 解决方案与 tensorflow GradientTape 兼容吗?

我想使用 sympy solve 为 Vo 求解 p,这是一种求解没有初始值的方程的算法。然后,我想使用 TensorFlow 的自动微分找到 p 对 Vo 的导数。我写了下面的代码,值计算得很好。但是,它最终无法转换为 tensorflow dtype。有没有办法使用与 sympy 兼容的 TensorFlow 张量?

TypeError:无法将值 21897084140.095097 转换为 TensorFlow DType。

0 投票
2 回答
76 浏览

python - TensorFlow 如何计算 vgg19.preprocess_input 的梯度?

我正在关注关于神经风格迁移的教程。风格转移是通过最小化图像的损失函数来完成的(用内容图像初始化)。让我感到困惑的是以下代码:

这是类中call方法的一部分StyleContentModel。TensorFlow 是如何知道这个操作的梯度的?我已经检查了这个操作是否get_gradient_function在模块tensorflow.python.framework.ops中使用了渐变函数,据我所知没有。