NumPy 函数梯度计算 实例

NumPy 函数梯度计算 实例

import numpy as np


def my_function(x_value, y_value):
    """定义函数z=x**2+y"""
    return x_value**2 + y_value


def cal_gradient(x):
    """计算函数的偏导"""
    h = 1e-4  # 0.0001作为增值
    f_gradient = np.zeros_like(x, dtype='float32')  # 保存梯度值
    x_values = x[:, 0]  # 函数的x值
    y_values = x[:, 1]  # 函数的y值

    for i in range(len(x[:, 0])):
        f_values = my_function(x_values[i], y_values[i])
        f_values_h1 = my_function(x_values[i]+h, y_values[i])
        f_gradient_x = (f_values_h1 - f_values) / h
        f_gradient[:, 0][i] = f_gradient_x

        f_values_h2 = my_function(x_values[i], y_values[i]+h)
        f_gradient_y = (f_values_h2 - f_values) / h
        f_gradient[:, 1][i] = f_gradient_y
    return f_gradient


if __name__ == '__main__':
    x = np.array([[1, 2], [2, 3], [3, 4], [4, 5]])
    print(cal_gradient(x))

运行结果:

在这里插入图片描述

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值