Jquery中文网 www.jquerycn.cn
Jquery中文网 >  Python编程  >  Python入门  >  正文 Python中如何用numpy解决梯度下降最小值

Python中如何用numpy解决梯度下降最小值

发布时间:2021-01-23   编辑:www.jquerycn.cn
jquery中文网为您提供Python中如何用numpy解决梯度下降最小值等资源,欢迎您收藏本站,我们将为您提供最新的Python中如何用numpy解决梯度下降最小值资源

有的小伙伴不会解决numpy梯度下降最小值的问题,今天小编就来带大家一起看看吧。

问题描述:求解y1 = xx -2 x 3 0.01*(-1到1的随机值) 与 y2 = 0 的最小距离点(x,y)

给定x范围(0,3)

不使用学习框架,手动编写梯度下降公式求解,提示:x = x - alp*(y1-y2)导数(alp为学习率)


函数图像为:



代码内容:


import numpy as np import matplotlib.pyplot as plt def get_loss(x):    c,r = x.shape    loss = (x**2 - 2*x 3) (0.01*(2*np.random.rand(c,r)-1))    return(loss) x = np.arange(0,3,0.01).reshape(-1,1) """plt.title("loss") plt.plot(get_loss(np.array(x))) plt.show()""" def get_grad(x):    grad = 2 * x -2    return(grad) np.random.seed(31415) x_ = np.random.rand(1)*3 x_s = [] alp = 0.001 print("X0",x_) for e in range(2000):    x_ = x_ - alp*(get_grad(x_))    x_s.append(x_)    if(e0 == 0):        print(e,"steps,x_ = ",x_) plt.title("loss") plt.plot(get_loss(np.array(x_s))) plt.show()


运行结果:


X0 [1.93745582] 0 steps,x_ =  [1.93558091] 100 steps,x_ =  [1.76583547] 200 steps,x_ =  [1.6268875] 300 steps,x_ =  [1.51314929] 400 steps,x_ =  [1.42004698] 500 steps,x_ =  [1.34383651] 600 steps,x_ =  [1.28145316] 700 steps,x_ =  [1.23038821] 800 steps,x_ =  [1.18858814] 900 steps,x_ =  [1.15437199] 1000 steps,x_ =  [1.12636379] 1100 steps,x_ =  [1.1034372] 1200 steps,x_ =  [1.08467026] 1300 steps,x_ =  [1.06930826] 1400 steps,x_ =  [1.05673344] 1500 steps,x_ =  [1.04644011] 1600 steps,x_ =  [1.03801434] 1700 steps,x_ =  [1.03111727] 1800 steps,x_ =  [1.02547157] 1900 steps,x_ =  [1.02085018]

图片


今天的numpy解决梯度下降最小值的讲解到这里就结束了。更多Python学习推荐:JQ教程网Python大全。                                            

您可能感兴趣的文章:
Python中如何用numpy解决梯度下降最小值
Python在共轭梯度法中的运用
python数据挖掘需要学什么
python数据分析用什么软件
cython与python的不同有哪些
python numpy是什么库
10行代码入门机器学习
python numpy是什么
python自带numpy吗?如何安装与使用?
python如何安装cvxopt

[关闭]