python 求偏导数 调用偏导数函数的输入

求偏导数函数如 numerical_gradient(f,x) 是根据

来求得的。它的输入x ,可以是1维的,也可以是多维的。

比如求x=np.array([1])处的偏导数

比如求x=np.array([1.0,2.0,3.0])处的偏导数

 

比如求x=np.array([[1.0,2.0,5.0],[3.0,4.0,6.0]])  是2*3矩阵,求x处的偏导数

 

# -*- coding: utf-8 -*-
"""
Created on Tue Jun 26 09:04:14 2019

@author: Administrator
"""
import sys, os
sys.path.append(os.pardir)
import numpy as np
from common.gradient import numerical_gradient
import matplotlib.pylab as plt

class simple:
    def __init__(self,x,y):
        self.x=x
        self.y=y     
        
    def f(self):
        z=np.sum((self.x**2)/20+self.y**2)
        return z
    
    
    def grad(self):
        grads={}  
        self.f()
        Func=lambda W:self.f()
        grads['x']=numerical_gradient(Func,self.x)
        grads['y']=numerical_gradient(Func,self.y)
        return grads


params={}
params['x']=np.array([1.0])

#params['x']=np.array([1.0,2.0,3.0])

#params['x']=np.array([[1.0,2.0,5.0],[3.0,4.0,6.0]])
print(params['x'])
params['y']=np.array([1.0])
Net=simple(params['x'],params['y'])
grads=Net.grad()
plt.plot(params['x'],grads['x'],"ro") 
plt.xlabel('x')
plt.ylabel('dx')
plt.title('gradient')
plt.show()  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值