python實現簡單的梯度下降法

2022-08-03 07:39:11 字數 1307 閱讀 6638

**如下:

#

梯度下降法模擬

import

numpy as np

import

matplotlib.pyplot as plt

plot_x = np.linspace(-1,6,141)

#計算損失函式對應的導數,即對y=(x-2.5)**2-1求導

defdj(theda):

return 2*(theda-2.5)

#計算theda對應的損失函式值

defj(theda):

try:

return (theda-2.5)**2-1

except

:

return float('

inf')#

梯度下降法開始

theda_history = #

用來記錄梯度下降的過程

theda = 0.0 #

以0作為開始點

eta = 0.1 #

設定學習率

#epsilon = 1e-8 由於導數可能達不到0,

#所以設定epsilon,表示損失函式值每次減小不足1e-8就認為已經達到最小值了

#n_itera 用來限制迭代的次數,預設為10000次

#梯度下降函式

def gradient_descent(initial_theda,eta,n_itera=1e4,epsilon=1e-8):

theda =initial_theda

i_itera =0

while i_itera

gradient =dj(theda)

last_theda =theda

theda = theda - eta *gradient

if(abs(j(theda)-j(last_theda))

break

i_itera += 1

defplot_theda_history():

plt.plot(plot_x,j(plot_x))

plt.plot(np.array(theda_history),j(np.array(theda_history)),color='

r',marker='+'

) plt.show()

gradient_descent(theda,eta)

plot_theda_history()

效果圖:

梯度下降的python實現

梯度下降 gradient descent 是最基礎的優化演算法。在微積分中,梯度表示函式增長速度最快的方向。在機器學習問題中,我們的目標常常是求極大值或者極小值。梯度下降法就是沿著梯度的不斷走的方法,當求極小值時沿與梯度相反的方向 用通俗的話說,梯度下降法就像下山,我們會沿著當前最快下降的道路走,...

梯度下降演算法的簡單Python原理實現

梯度下降 導數值下降 import matplotlib.pyplot as plt import numpy as np 目標函式 f x x 2 梯度函式 一階導數函式 f x 2 x 梯度下降演算法是乙個方法,是幫助我們找極值點的方法cost 梯度下降 導數值下降 import matplot...

簡單的梯度下降展示 python

概念 梯度下降是迭代法的一種,可以用於求解最小二乘問題 線性和非線性都可以 二維的 梯度下降 導數值下降 import matplotlib.pyplot as plt import numpy as np f x x 2,目標函式 f x 2 x 梯度函式 一階導數函式 f x1,x2.xn 梯度...