NN學習中的技巧之(一) 引數的最優化之Adam

2021-09-26 08:08:40 字數 3444 閱讀 4835

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上曾有朋友讓我寫一些除錯技巧方面的文章.除錯對於軟體是十分重要的,但卻不是一篇二篇文章能講清楚的.有很多除錯技巧都是零零碎碎的東西,用...