首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >求多维函数的Hessian矩阵

求多维函数的Hessian矩阵
EN

Stack Overflow用户
提问于 2021-11-07 13:13:26
回答 1查看 48关注 0票数 0

我正在尝试创建10维凸函数。我知道它的hessian矩阵的特征值必须是正的,函数才是凸的。我正在做下面的事情来寻找hessian矩阵,但它的输入是一个数组,我不知道如何将一个函数表示为数组。

代码语言:javascript
复制
def hessian(x):
    """
    Calculate the hessian matrix with finite differences
    Parameters:
       - x : ndarray
    Returns:
       an array of shape (x.dim, x.ndim) + x.shape
       where the array[i, j, ...] corresponds to the second derivative x_ij
    """
    x_grad = np.gradient(x) 
    hessian = np.empty((x.ndim, x.ndim) + x.shape, dtype=x.dtype) 
    for k, grad_k in enumerate(x_grad):
        # iterate over dimensions
        # apply gradient again to every component of the first derivative.
        tmp_grad = np.gradient(grad_k) 
        for l, grad_kl in enumerate(tmp_grad):
            hessian[k, l, :, :] = grad_kl
    return hessian

x = np.random.randn(100,100)
t=hessian(x)
EN

回答 1

Stack Overflow用户

发布于 2021-11-08 17:08:47

正如您从中获得此代码的question中所述,x是参数空间中等间距网格的节点处的函数值,而不是函数本身。

如果无法解析地计算函数的hessian,则必须使用finite difference formulas,如本示例代码中所示。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69872765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档