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 + dx 和 x - 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 处每个维度上的变化率。
