问题标签 [hessian-matrix]
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.
tensorflow - Tensorflow:相对于高秩张量计算 Hessian 矩阵(仅对角线部分)
我想计算我指定的损失的一阶和二阶导数(Hessian 的对角线部分)关于 vgg16 conv4_3 层的内核的每个特征图,它是一个 3x3x512x512 维矩阵。如果根据如何计算 Tensorflow 中的所有二阶导数(仅 Hessian 矩阵的对角线),我知道如何计算导数,如果它尊重低阶导数? 但是,当它转向更高级别时,我完全迷路了。
请帮助我检查我的理解。因此,对于conv4_3_kernel
,每个 dim 代表 [Kx, Ky, in_channels, out_channels],因此Grad
应该是Loss
每个特征图中每个元素(像素)的偏导数。并且Hessian
是二阶导数。
但是,Hessian
计算所有导数,我怎么能只计算对角线部分?我应该使用tf.diag_part()
吗?提前谢谢了!
r - Hessian矩阵的变换Pareto分布拟合与计算
我想拟合变换帕累托分布,然后需要计算以下数据的 Hessian 矩阵。
此代码的结果仅提供一个不正确的值,我也需要 2 x 2 hessian 矩阵。提前致谢。
matlab - 如何在 matlab 中计算 3-D 图像的粗麻布矩阵?
我在我的项目中使用 matlab,该项目涉及 3-D 肺部 CT 扫描中的结节检测。我需要获取 3-D 肺部 CT 扫描的 hessian 矩阵的特征值以应用选择性点增强滤波器。我已经使用 imgradientxyz 函数计算了 Fxx、Fxy 等。据我了解,我需要形成矩阵:
并在其上运行 eig 函数。但是我在构造这个矩阵时遇到了内存不足的错误,因为 Fxx、Fxy 等都是与原始 3D 图像具有相同维度的矩阵。还有其他方法吗?还是我错过了什么?
感谢我能得到的任何帮助。
编辑:为关于内存不足部分的问题添加了一些细节。
python - 在 DNN 训练结束时返回 Hessian 逆矩阵和输入的偏导数
使用 Keras 和 Tensorflow 作为后端,我构建了一个 DNN,它以恒星光谱作为输入(7213 个数据点)并输出三个恒星参数(温度、重力和金属度)。网络在我的测试集上训练得很好并且预测得很好,但是为了让结果在科学上有用,我需要能够估计我的错误。这样做的第一步是获得逆 Hessian 矩阵,这似乎仅使用 Keras 是不可能的。因此,我尝试使用 scipy 创建一个解决方法,使用 scipy.optimize.minimize 和 BFGS、L-BFGS-B 或 Netwon-CG 作为方法。其中任何一个都将返回 Hessian 逆矩阵。
这个想法是使用 Adam 优化器训练模型 100 个时期(或直到模型收敛),然后运行 BFGS 的一次迭代或函数(或其他函数之一)以返回我的模型的 Hessian 矩阵。
这是我的代码:
1)模型训练得非常好,但是当尝试使用先前训练的权重运行 scipy 最小化器进行单次迭代时,我遇到了问题。
尝试方法时输出=BFGS:
尝试方法时的输出=L-BFGS-B:
尝试方法时的输出=Newton-CG
2)下一个任务是获得模型输出相对于模型输入的导数。例如,对于一个恒星参数(输出之一),比如温度,我需要找到关于 7213 输入中的每一个的偏导数。然后对 3 个输出中的每一个执行相同的操作。
所以基本上,我的第一个任务(1)是找到一种方法来返回我的模型的逆 Hessian 矩阵,接下来(2)我需要找到一种方法来返回我的输出相对于我的输入的一阶偏导数.
有人对这两个任务中的任何一个有一些见解吗?谢谢。
编辑
我正在尝试使用 theano.gradient.jacobian() 来返回我的输出的雅可比矩阵 wrt 我的输入。我已经将我的模型变成了模型权重的函数,并将该函数用作 theano.gradient.jacobian() 中的第一个参数。当我尝试使用我的模型权重和输入数据的形式的多维数组运行梯度时,我的问题就出现了。
最后一行给出了错误:
但是当我将输入更改为:
我从这条线上得到一个错误:
阅读:
关于如何解决这个问题的任何想法?
tensorflow - 使用 tf.gradients 和 tf.hessian 时出现 Tensorflow 错误:TypeError: Fetch argument None has invalid type
我刚开始学习 tensorflow,在使用 tf.gradients 和 tf.hessain 函数时遇到了以下错误。下面给出了 tf.gradients 的代码和错误。
最后一行出现以下错误
关于如何调试它的任何想法?
python - Keras & TensorFlow:得到 f(x) wrt x 的二阶导数,其中 dim(x) = (1, n)
我正在使用 TensorFlow 在 Keras 工作。我有一个深度神经模型(预测自动编码器)。我正在做一些类似于此的事情:https ://arxiv.org/abs/1612.00796——我试图了解给定层中变量对输出的影响。
为此,我需要找到损失(L)相对于特定层(s)输出的二阶导数(Hessian):
对角线条目就足够了。L 是标量,s 是 1 × n。
我首先尝试的是:
我也试过:
我无法改变 s 的形状,因为它是神经网络的一部分(LSTM 的状态)。第一个维度 (batch_size) 已经设置为 1,我认为我无法摆脱它。
我不能重塑 s 因为它破坏了渐变的流动,例如:
给出:
关于在这种情况下我能做什么的任何想法?
r - R: optim 和 nlme 错误
运行上面的代码会给我错误和警告:
我的目标是获取 hessian 矩阵并调查为什么我的nlme
模型可能不合适。我试图最大化我的目标函数,因此我设置fnscale = -1
(文档说它应该是负数以便optim
执行最大化)。但是,我不确定如何处理错误消息。有没有办法optim
输出粗麻布矩阵?似乎是一个错误nlme
阻止了它这样做。
tensorflow - Tensorflow,如何计算 2 个梯度的广播产品?
我正在尝试H
按如下方式计算矩阵:
其中L
是一个张量的形状(?,N)
,z
是一个可变的向量形状(M)
。的每个元素H
是 2 个梯度的广播乘积,L
其中两个梯度相对于 vector 的两个元素z
。tf.gradients(L,z[i]) * tf.gradients(L,z[j])
不起作用,因为它返回两个总和的乘积,而我需要一个明智产品的总和。以前有人这样做过,请帮助我。
r - 两条曲线之间的统计差异
我有两个物种的猎物消耗数据,我试图确定它们的功能响应曲线不同的程度。
这是我的数据的一个小例子(每个物种一个单独的 Excel 文件,非本地的每个密度重复 6 次而不是 5 次):
然后,我尝试为“a”和“h”设置不同的值(1.2 和 0.015 是默认值),但出现了相同的错误消息。
我在 Windows 10 上使用 R v3.4.2。
r - 最大似然法中的 Hessian 矩阵 - 高斯与 R
我正在努力解决以下问题。简而言之:两个不同的软件包(Aptech 的 Gauss 和 R)在最大似然过程中产生完全不同的 Hessian 矩阵。我使用相同的程序(BFGS),完全相同的数据,相同的最大似然公式(它是一个非常简单的 logit 模型)具有完全相同的起始值,令人困惑的是,我得到了相同的参数和 log- 结果可能性。只有 Hessian 矩阵在两个程序中不同,因此标准误差和统计推断的估计不同。
在这个具体的例子中并没有出现太大的偏差,但是模型的每一个增加的复杂性都会增加差异,所以如果我尝试估计我的最终模型,两个程序都会产生完全错误的结果。
有谁知道,这两个程序在计算 Hessian 的方式以及可能获得相同结果的正确方法方面有何不同?
编辑:在 R (Gauss) 代码中,向量X ( alt ) 是自变量,由一个双列向量组成,第一列完全是 1,第二列是受试者的反应。向量y ( itn ) 是因变量,由包含受试者反应的一列组成。示例(R 代码和数据集)取自http://www.polsci.ucsb.edu/faculty/glasgow/ps206/ps206.html,仅作为重现和隔离问题的示例。
我附上了代码(高斯和 R 语法)和输出。
任何帮助将不胜感激。谢谢 :)
高斯:
回复:
高斯输出:
高斯黑森:
输出:
R 黑森州: