欢迎访问宙启技术站
智能推送

compute_gradient()函数的详细用法及示例

发布时间:2023-12-28 09:22:16

compute_gradient() 函数是用于计算梯度的工具函数。梯度是函数在某一点的变化率,可以帮助我们确定函数在给定点的最陡下降方向。在机器学习和优化算法中,梯度是非常重要的一个概念。

compute_gradient() 函数的详细用法如下:

def compute_gradient(f, x):
    """
    计算函数 f 在点 x 处的梯度
    
    参数:
    f: 函数 f(x)
    x: 数值型变量或者向量
    
    返回:
    g: 函数 f 在点 x 处的梯度
    """
    g = []
    h = 1e-6  # 微小的数值
    dim_x = len(x)
    
    for i in range(dim_x):
        dx = [0.0] * dim_x
        dx[i] = h
        
        df = (f(x + np.array(dx)) - f(x - np.array(dx))) / (2 * h)
        g.append(df)
    
    return np.array(g)

上面的 compute_gradient() 函数接受两个参数:函数 f 和变量 x。函数 f 是一个接受数值型变量或者向量 x 作为输入的函数。函数中的 f(x) 返回一个数值,表示函数在点 x 处的取值。

函数 compute_gradient() 首先初始化一个空列表 g 用来存储梯度值。然后,通过给定的微小数值 h,计算变量 x 维度的个数 dim_x

接下来,通过循环遍历 x 的每个维度,计算函数在点 x 上沿着当前维度的变化率。首先,初始化一个与 x 同维度的零向量 dx,然后将 dx 的当前维度的值设置为 h

接着,计算函数 f 在点 x + dxx - dx 处的取值,并通过差分来估计函数在点 x 处在当前维度上的变化率 df

最后,将 df 添加到梯度列表 g 中。循环结束后,将梯度列表 g 转换为一个 numpy 数组,并返回该数组作为函数的输出。

以下是一个使用 compute_gradient() 函数的示例:

import numpy as np

def f(x):
    return np.sum(x ** 2)

x = np.array([1.0, 2.0, 3.0])
gradient = compute_gradient(f, x)

print(gradient)

在上面的示例中,我们定义了一个简单的函数 f,它将输入向量的每个元素平方并求和。然后,我们使用 numpy 创建一个维度为3的输入向量 x = [1.0, 2.0, 3.0]

最后,我们使用 compute_gradient() 函数计算函数 f 在点 x 处的梯度,并将结果打印出来。输出将是一个与输入向量 x 同维度的向量,表示函数在点 x 处每个维度上的变化率。