【深度学习入门】梯度实现

梯度实现

一、什么是梯度
关于梯度就是全部向量的偏导数汇总而成的向量。梯度会指向函数的"最低处(最小值)"。虽然梯度会指向最低处,但并非任何时候都这样。实际上,梯度指示的方向是各点处函数值减少最多的方向。更严格的讲,梯度指示的方向是各点处的函数值减少最多的方向。

二、代码

import  numpy as np
import  matplotlib.pylab as plt
def numerical_diff(f,x):#定义数值微分函数
    h = 1e-4 # 0.0001
    return (f(x+h)-f(x-h))/(2*h) # 利用中心差分,x为中心计算左右差分,减小误差
def function_1(x): #定义 y=0.01x^2+0.1x 函数
return  0.01*x**2+0.1*x
def tangent_line(f,x): #定义切线导数
    d = numerical_diff(f,x)    
    print(d)
    y = f(x)-d*x # 与y轴的交点
    return lambda t:d*t+y # 切线函数,t为参量
x = np.arange(0.0,20.0,0.1)#0.1为单位,从0到20的数组x
y = function_1(x)#Y就是0.01x^2+0.1x,function_1无括号直接返回函数
plt.xlabel("x")#x轴坐标名称是X
plt.ylabel("f(x)") #y轴坐标名称是f(x)
tf = tangent_line(function_1,5) # 返回的函数缺少参量t
y2 = tf(x)#参量t进行赋值
plt.plot(x,y)
plt.plot(x,y2)
plt.show()

三、显示图像
在这里插入图片描述
输出图像plt.plot(x,y)、plt.plot(x,y2)

在这里插入图片描述
这个结果是上式代码中的d = numerical_diff(f,x) ;print(d),输出的微分。

制作人:只识闲人不识君
日期:2020.05.16

猜你喜欢

转载自blog.csdn.net/weixin_46069678/article/details/106162240