**如下:
#效果圖:梯度下降法模擬
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 梯度...