Keras 深度學習框架的優化器(optimizers)

optimizers(優化器)。

機器學習包括兩部份內容,一部分是如何構建模型,另外一部分就是如何訓練模型。訓練模型就是經過挑選最佳的優化器去訓練出最優的模型。 Keras包含了不少優化方法。好比最經常使用的隨機梯度降低法(SGD),還有Adagrad、Adadelta、RMSprop、Adam等。下面經過具體的代碼介紹一下優化器的使用方法。最重要的就是SGD,其餘的優化器有興趣的能夠自行了解一下。算法

1、優化器的使用方法

在編譯一個Keras模型時,優化器是2個參數之一(另一個是損失函數)。看以下代碼:機器學習

model = Sequential()  
    model.add(Dense(64, init='uniform', input_dim=10))  
    model.add(Activation('tanh'))  
    model.add(Activation('softmax'))  
       
    sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True)  
    model.compile(loss='mean_squared_error', optimizer=sgd)
這個例子中是在調用compile以前實例化了一個優化器。咱們也能夠經過傳遞名字的方式調用默認的優化器。代碼以下:
# passoptimizer by name: default parameters will be used  
    model.compile(loss='mean_squared_error', optimizer='sgd')

2、基類

keras.optimizers.Optimizer(**kwargs)
全部的優化器都繼承自上面這個帶有keyword參數的類。固然基類是不能用來訓練模型的。

3、SGD(隨機梯度降低優化器,性價比最好的算法)

keras.optimizers.SGD(lr=0.01, momentum=0., decay=0., nesterov=False)  

     參數:

    lr :float>=0,學習速率
    momentum :float>=0 參數更新的動量
    decay : float>=0 每次更新後學習速率的衰減量
    nesterov :Boolean 是否使用Nesterov動量項

4、Adagrad(參數推薦使用默認值)

keras.optimizers.Adagrad(lr=0.01, epsilon=1e-6)  

 參數:

lr : float>=0,學習速率
epsilon :float>=0

5、Adadelta(參數推薦使用默認值)

keras.optimizers.Adadelta(lr=1.0, rho=0.95, epsilon=1e-6)  

 參數:

lr :float>=0,學習速率
rho : float>=0
epsilon :float>=0 模糊因子

6、RMSprop(參數推薦使用默認值)

keras.optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=1e-6)  

參數:

lr:float>=0,學習速率
rho : float>=0
epsilon : float>=0 模糊因子

7、Adam(參數推薦使用默認值)

keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-8)  

 參數:

lr : float>=0,學習速率
beta_1, beta_2:floats, 0 < beta < 1 一般都是接近於1
epsilon :float>=0 模糊因子
相關文章
相關標籤/搜索