momentum參照小球在碗中滾動的物理規則進行移動
adagrad為每個引數適當調整更新步伐
adam是2023年提出的新方法,它是momentum和adagrad的結合體,,融合了兩種方法的優勢
)# 轉換為ndarray
grad = np.zeros_like(x)
for idx in
range
(x.size)
: temp = x[idx]
x[idx]
= temp + h
fxh1 = f(x)
x[idx]
= temp - h
fxh2 = f(x)
grad[idx]
=(fxh1 - fxh2)/(
2* h)
x[idx]
= temp
return grad
deffunc2
(x):
return
(x[0]**
2)/20
+ x[1]
**2defadam_update
(init_x, stepnum)
: x = init_x
x_history =
for i in
range
(stepnum)
:list
(x.copy(
).values())
))grad = numerical_gradient(func2, x)
x = m.update(x, grad)
return x, np.array(x_history)
init_x =
# 起始點
init_x[
'0']=-
7.0init_x[
'1']
=2.0
learning_rate =
0.25
m = adam(lr=learning_rate)
stepnum =
40x, x_history = adam_update(init_x=init_x, stepnum=stepnum)
axis_range =
10x = np.arange(
-axis_range, axis_range,
0.05
)y = np.arange(
-axis_range, axis_range,
0.05
)x, y = np.meshgrid(x, y)
z = np.array(
[x, y]
)# 畫等高線
plt.figure(
)plt.contour(x, y, func2(z)
,np.arange(0,
10,2)
, zdir=
'z', cmap=
'binary'
)# 畫所有由梯度下降找到的點
plt.plot(x_history[:,
0], x_history[:,
1],'+'
, color=
'blue'
)# 畫點間連線
for i in
range
(x_history.shape[0]
-2):
tmp = x_history[i:i+2]
tmp = tmp.t
plt.plot(tmp[0]
, tmp[1]
, color=
'blue'
)# 標註最小值位置
CSharp學習筆記之一 C 中的型別
在c 中,有且僅有兩種資料型別 值型別和引用型別。換言之,乙個變數要麼是值型別,要麼是引用型別。像我們常見的資料型別 int,float,double 結構 列舉等等都屬於值型別,而像類 介面 委託等都屬於引用型別。所以,要想深入的了解.net framework的一些原理性的知識,值型別與引用型別...
flash FMS的一些最優引數設定
對任何使用影音串流的 flashcom 程式來說,影音串流的品質是極重要的,但調校相關引數卻需要非常好的技巧及多次測試,無意間逛到國外有人已寫好乙個計算建議值的小程式,應該對引數的決定有很大幫助。引數的設定可能因以下因素而不同 並非只看這些因素 使用者連線至主機的頻寬,是使用 adsl 一般的區域網...
MTK除錯入門之一 TRACE使用的技巧
zzjltx 發表於 2009 12 23 11 49 00mtk除錯入門之一 trace使用的技巧 懶書生 發表於 2009 10 29 20 13 00 52rd上曾有朋友讓我寫一些除錯技巧方面的文章.除錯對於軟體是十分重要的,但卻不是一篇二篇文章能講清楚的.有很多除錯技巧都是零零碎碎的東西,用...