這篇文章主要介紹Python中用numpy解決梯度下降最小值的方法,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
創(chuàng)新互聯(lián)IDC提供業(yè)務(wù):達(dá)州電信機(jī)房,成都服務(wù)器租用,達(dá)州電信機(jī)房,重慶服務(wù)器租用等四川省內(nèi)主機(jī)托管與主機(jī)租用業(yè)務(wù);數(shù)據(jù)中心含:雙線機(jī)房,BGP機(jī)房,電信機(jī)房,移動(dòng)機(jī)房,聯(lián)通機(jī)房。問(wèn)題描述:求解y1 = xx -2 x +3 + 0.01*(-1到1的隨機(jī)值) 與 y2 = 0 的最小距離點(diǎn)(x,y)
給定x范圍(0,3)
不使用學(xué)習(xí)框架,手動(dòng)編寫(xiě)梯度下降公式求解,提示:x = x - alp*(y1-y2)導(dǎo)數(shù)(alp為學(xué)習(xí)率)
函數(shù)圖像為:
代碼內(nèi)容:
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(e%100 == 0): print(e,"steps,x_ = ",x_) plt.title("loss") plt.plot(get_loss(np.array(x_s))) plt.show()
運(yùn)行結(jié)果:
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]
圖片
以上是Python中用numpy解決梯度下降最小值的方法的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
分享文章:Python中用numpy解決梯度下降最小值的方法-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://m.newbst.com/article4/dpidoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、企業(yè)建站、網(wǎng)站導(dǎo)航、微信小程序、App開(kāi)發(fā)、定制網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容