问题标签 [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.

0 投票
1 回答
108 浏览

python - 重塑numpy数组

我要做的是获取一个表示 3D 图像数据的 numpy 数组并计算每个体素的粗麻布矩阵。我的输入是一个形状矩阵 (Z,X,Y),我可以轻松地沿 z 进行切片并检索单个原始图像。

我可以按如下方式访问单个体素的粗麻布:

但这很麻烦,我不能轻易地对数据进行切片。

我尝试使用 reshape 如下

但是当我通过检索特定体素的粗麻布来测试这一点时,从重新整形的数组返回的值与原始数组完全不同。

我想我可以以某种方式使用 zip 但我只能找到用于制作元组列表的方法。

  • 奖励:如果有更快的方法来完成这个,请告诉我,我基本上需要为 3D 数据集中的每个体素计算 hessian 矩阵的三个特征值。计算粗麻布值非常快,但找到单个 2D 图像切片的特征值大约需要 20 秒。是否有任何用于图像处理的 GPU 或张量流加速库?
0 投票
1 回答
166 浏览

matlab - fmincon中不等式约束的粗麻布

我试图通过提供梯度向量和 Hessian 矩阵来帮助 fmincon 更快地收敛。我正在使用内点算法,并且我意识到在这种情况下,我必须使用对分配给我的 OPTIOINS 的 HessFcn 的另一个函数的调用来提供 Hessian。我只有不等式约束(C)。它是二次形式。

gbee_r_i,p_in,nel,nhp 是已知的矩阵或变量。

我定义约束如下:

定义如下选项:

`@(x)hessinterior(x,lambda,gbee_r_i,p_in,nel,nhp)

是 HessFcn,定义如下。

运行程序后显示此错误

使用 @(x)hessinterior(x,lambda,gbee_r_i,p_in,nel,nhp) 时出错
输入参数太多。

C:\Program Files\MATLAB\R2013a\toolbox\optim\optim\private\computeHessian.p>computeHessian 中的错误(第 36 行)

C:\Program Files\MATLAB\R2013a\toolbox\optim\optim\barrier.p>barrier 中的错误(第 300 行)

fmincon 错误(第 900 行)[X,FVAL,EXITFLAG,OUTPUT,LAMBDA,GRAD,HESSIAN] = barrier(funfcn,X,A,B,Aeq,Beq,l,u,confcn,options.HessFcn, ...

0 投票
1 回答
1079 浏览

python - 关于张量流中的几个变量计算粗麻布

在 tensorflow 中计算 Hessian 非常简单:

这正确返回

x在我的真实案例中,我需要将其拆分为两个变量,而不是使用一个保存三个值的变量:(x保存前两个)和y(保存最后一个)。

我尝试了一个天真的

但我得到:[[ 8., 20.], [20., 34.]], [[2.]]

我也试过:

但是在定义粗麻布时

我得到一个非常糟糕的错误:

​</p>

0 投票
1 回答
221 浏览

r - How can I get standard errors for my 4 parameters when the Hessian matrix from solnp is 5 by 5?

I'm using the solnp() function in the R package Rsolnp to solve a nonlinear regression with constraints. It works well, converges with no problem. I want to use the Hessian matrix to calculate standard errors of the four parameter estimates, but the Hessian is not 4 by 4 as I had expected, but 5 by 5. I looked around on SO and didn't see anyone else with an unexpected Hessian size. All the examples I found with the Hessians printed showed them to be the expected size of p by p (e.g., 2x2, 3x3, and 4x4).

How can I get standard errors for my 4 parameters from this 5 by 5 Hessian?

0 投票
0 回答
578 浏览

tensorflow - 如何在 Tensorflow 急切模式下使用梯度带获得损失函数关于神经网络参数的二阶导数

我正在使用 TensorFlow Eager 模式为 MNIST 数据集创建一个基本的自动编码器。我想观察我的损失函数在训练时相对于网络参数的二阶偏导数。目前,调用返回的tape.gradient()输出(嵌套在外部称为磁带的地方,我在下面包含了我的代码)in_tape.gradientNonein_tapeGradientTapeGradientTape

我试过tape.gradient()直接在in_tape.gradient()没有返回的情况下调用。我的下一个方法是迭代输出in_tape.gradient()并分别应用于tape.gradient()每个梯度(相对于我的模型变量),None每次都返回。

None对于任何调用,我都会收到一个值tape.gradient(),而不是我认为会指示None单个偏导数的 None 值列表,这在某些情况下是可以预期的。

我目前只尝试获得第一组权重(从输入到隐藏层)的二阶导数,但是,一旦我完成这项工作,我将对其进行缩放以包含所有权重。

我的最终目标是针对我的网络的所有参数形成损失函数的 hessian 矩阵。

感谢您的任何帮助!

0 投票
1 回答
241 浏览

image-processing - Hessian 矩阵,如何将 Ixx 和 Iyy 结合在一起?

“在提取线之前,您需要检测它们上的潜在点。首先应用高斯滤波器并使用 Sobel 滤波器作为导数算子。阈值 Hessian 的行列式,然后在 3 × 3 邻域中应用非极大值抑制。忽略像素任何过滤器甚至部分落在图像边界之外。”

我理解首先对图像进行高斯化以消除噪声,然后分别使用 Sobel_x 和 Sobel_y 进行两次,这在 Hessian 中变为 Ixx 和 Iyy,这将在图像中显示水平线和垂直线。但是我想如何获得 Ixxyy?但是我如何将这两个图像组合在一起以使 Ixxyy 作为 Hessian 矩阵的右下角?

0 投票
0 回答
358 浏览

matlab - 为什么通过 lsqcurvefit 和 fminunc 函数获得的标准误差不同?

我正在将模型拟合到 Matlab 中的实验数据。对于这个模型,我想通过最小化实验数据集和模型数据集之间的平方残差之和来找到参数。该模型的形式如下图所示:

G(x) = G0/(1+(x/x_c)^(2m))

其中 G0、x_c 和 m 是要优化的参数。

为了识别参数,我在 Matlab 上使用了 lsqcurvefit 和 fminunc 工具。对于 lsqcurvefit,我使用输出雅可比矩阵和 nlparci 工具来确定 95% 置信区间并回溯以计算标准误差,如下所示。

然后,我使用 fminunc 函数通过最小化残差平方和来计算标准误差。通过这个过程可以得到一个hessian矩阵。使用hessian矩阵确定标准误差,如下所示:

问题是我从 lsqcurvefit 和 fminunc 获得的标准误差不同。我假设不同方法中的标准误差会略有不同,但是当我使用 fminunc 时,我得到的误差要大得多。但是,使用各个工具获得的优化参数是相同的。

为什么使用 fminunc 时误差大得多?我是否使用正确的方法来计算错误?

0 投票
1 回答
2463 浏览

python - 将 Hessian 定义为零

在使用 scipy.optimize.minimize 和 trust-constr 方法时,我得到了这个 UserWarning:

我有一个线性函数,所以我想尝试将粗麻布设置为零。但这是如何工作的?我尝试了使用“hess = None”作为参数的最简单方法。好吧,一个糟糕的尝试。

这是调用求解器的行:

0 投票
1 回答
423 浏览

python - Sympy:解决 Hessian 矩阵中的条目以获得更好的可读性?

说到这,我很绿色sympy,我不知道如何以格式良好的方式生成输出。现在我已经计算了我的潜在函数的 Hessian 矩阵:

V = 1/2*kOH*(r1)**2 +1/2*kOH*(r2)**2 +1/2*kHH*(r3)**2

三个谐振子项的一般形式为:

1/2*k*r**2.

所有变量都是正数和实数。

对我来说问题是,当我打印我的矩阵时,条目还没有解决,只以功能方式显示。我希望在已经执行偏导数之后将条目放在表格中,而不仅仅是显示在矩阵中的每个点需要执行哪些推导。

附加:这实际上不是事物计算方面的一部分,因此也不是问题的一部分,但是如果有人在事物的科学方面知道他们的东西:你能告诉我如何 a (3,3)潜在依赖于三个距离的 Hessian 矩阵应该乘以 (9,9) 质量矩阵?如果您有兴趣,函数的注释包含科学背景。

0 投票
0 回答
462 浏览

python - Sympy:计算(9,9)矩阵的特征值需要很长时间

我正在尝试计算一个矩阵的特征值F,它包含 9 个变量,它们是三个向量的笛卡尔坐标。的执行时间F.eigenvals()至少需要 15 分钟,而且我没有足够的耐心等待程序完成更长时间。我的怀疑是我做错了可怕的事情,这导致了很长的计算。也许是 numpy 和 sympy 对象的混合导致了这个问题。

M我有三个水原子和它们各自的质量,我使用函数计算一个所谓的质量矩阵Mmat

该质量矩阵需要根据公式F = M*H*M与 Hessian 矩阵相乘,H以生成 (9,9) 矩阵F,从中提取特征值。Hessian 矩阵本身由V三个原子 O、H1 和 H2 的笛卡尔坐标的势的偏导数定义。

矩阵F本身的计算只需要一秒钟,但应用该.eigenvals()方法需要很长时间。这是计算的函数H

真正的问题只出现在最后:

我是否不恰当地混合了对象类?质量矩阵(6.022e26)中有大量数字是事实吗?这种大小的矩阵运行如此缓慢是否正常?

先感谢您。