#梯度下降 == 導數值下降
#import matplotlib.pyplot as plt
import numpy as np
'''目標函式:f(x) = x^2
梯度函式:一階導數函式
f'(x) = 2*x
梯度下降演算法是乙個方法,是幫助我們找極值點的方法cost
'''#梯度下降 == 導數值下降
import matplotlib.pyplot as plt
import numpy as np
'''目標函式:f(x) = x^2
梯度函式:一階導數函式
f'(x) = 2*x
梯度下降演算法是乙個方法,是幫助我們找極值點的方法cost
'''def
targetfunc
(p):
return p**
2pass
defgradientfunc
(p):
return2*p
pass
#猜測的過程
defgradientcal
(targetfunc,gradintefunc,
*args,rating=
0.001
,tolent=
0.000001):
''' :param initx: 猜測的點
:param targetfunc: 目標函式
:param gradintefunc: 導函式
:param rating: 步進係數
:param tolent: 收斂條件
:return: 返回極值點的x
'''print
(args)
p= np.array(args)
result = targetfunc(p)
#計算出點的實際值
gradientrestlt = gradintefunc(p)
#計算出點的導數也就是斜率
reresult = np.inf
newx = p - rating*gradintefunc(p)
newresult = targetfunc(newx)
reresult = np.
abs(result - newresult)
print
(reresult)
reresultlen = reresult > tolent
while np.
any(reresultlen)
: p=newx
result=newresult
print
(newx[reresultlen]
) newx[reresultlen]
=newx[reresultlen]
- rating* gradintefunc(newx[reresultlen]
) newresult = targetfunc(newx)
reresult = np.
abs(result - newresult)
reresultlen = reresult > tolent
print
(reresultlen)
return p
pass
if __name__ ==
'__main__'
:print
(gradientcal(targetfunc,gradientfunc,
10000,10
))pass
梯度下降演算法 梯度下降演算法為何叫梯度下降?
首先,我們知道乙個演算法的名字可以很好地去解釋乙個演算法,那麼梯度下降演算法是什麼呢?很明顯的,就是用梯度這個工具來解決問題的一種演算法。解決什麼問題呢?如何在乙個函式曲面的某一點,找到乙個函式值變化最大的方向。比如 我們站在山上的某一點,我們想要以最快的速度上山,但是我們的步子大小是一定的,那麼最...
簡單隨機梯度下降演算法
import numpy as np import matplotlib as plt import os os.environ tf cpp min log level 2 x np.arange 50 0 50 np.random.seed 1 每次生成的隨機數相同 randomarray np...
簡單的梯度下降展示 python
概念 梯度下降是迭代法的一種,可以用於求解最小二乘問題 線性和非線性都可以 二維的 梯度下降 導數值下降 import matplotlib.pyplot as plt import numpy as np f x x 2,目標函式 f x 2 x 梯度函式 一階導數函式 f x1,x2.xn 梯度...