欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Keras SGD 隨機(jī)梯度下降優(yōu)化器參數(shù)設(shè)置方式

 更新時(shí)間:2020年06月19日 15:37:26   作者:DexterLeiX  
這篇文章主要介紹了Keras SGD 隨機(jī)梯度下降優(yōu)化器參數(shù)設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

SGD 隨機(jī)梯度下降

Keras 中包含了各式優(yōu)化器供我們使用,但通常我會(huì)傾向于使用 SGD 驗(yàn)證模型能否快速收斂,然后調(diào)整不同的學(xué)習(xí)速率看看模型最后的性能,然后再?lài)L試使用其他優(yōu)化器。

Keras 中文文檔中對(duì) SGD 的描述如下:

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

隨機(jī)梯度下降法,支持動(dòng)量參數(shù),支持學(xué)習(xí)衰減率,支持Nesterov動(dòng)量

參數(shù):

lr:大或等于0的浮點(diǎn)數(shù),學(xué)習(xí)率

momentum:大或等于0的浮點(diǎn)數(shù),動(dòng)量參數(shù)

decay:大或等于0的浮點(diǎn)數(shù),每次更新后的學(xué)習(xí)率衰減值

nesterov:布爾值,確定是否使用Nesterov動(dòng)量

參數(shù)設(shè)置

Time-Based Learning Rate Schedule

Keras 已經(jīng)內(nèi)置了一個(gè)基于時(shí)間的學(xué)習(xí)速率調(diào)整表,并通過(guò)上述參數(shù)中的 decay 來(lái)實(shí)現(xiàn),學(xué)習(xí)速率的調(diào)整公式如下:

LearningRate = LearningRate * 1/(1 + decay * epoch)

當(dāng)我們初始化參數(shù)為:

LearningRate = 0.1
decay = 0.001

大致變化曲線如下(非實(shí)際曲線,僅示意):

當(dāng)然,方便起見(jiàn),我們可以將優(yōu)化器設(shè)置如下,使其學(xué)習(xí)速率隨著訓(xùn)練輪次變化:

sgd = SGD(lr=learning_rate, decay=learning_rate/nb_epoch, momentum=0.9, nesterov=True)

Drop-Based Learning Rate Schedule

另外一種學(xué)習(xí)速率的調(diào)整方法思路是保持一個(gè)恒定學(xué)習(xí)速率一段時(shí)間后立即降低,是一種突變的方式。通常整個(gè)變化趨勢(shì)為指數(shù)形式。

對(duì)應(yīng)的學(xué)習(xí)速率變化公式如下:

LearningRate = InitialLearningRate * DropRate^floor(Epoch / EpochDrop)

實(shí)現(xiàn)需要使用 Keras 中的 LearningRateScheduler 模塊:

from keras.callbacks import LearningRateScheduler
# learning rate schedule
def step_decay(epoch):
 initial_lrate = 0.1
 drop = 0.5
 epochs_drop = 10.0
 lrate = initial_lrate * math.pow(drop, math.floor((1+epoch)/epochs_drop))
 return lrate

lrate = LearningRateScheduler(step_decay)

# Compile model
sgd = SGD(lr=0.0, momentum=0.9, decay=0.0, nesterov=False)
model.compile(loss=..., optimizer=sgd, metrics=['accuracy'])

# Fit the model
model.fit(X, Y, ..., callbacks=[lrate])

補(bǔ)充知識(shí):keras中的BGD和SGD

關(guān)于BGD和SGD

首先BGD為批梯度下降,即所有樣本計(jì)算完畢后才進(jìn)行梯度更新;而SGD為隨機(jī)梯度下降,隨機(jī)計(jì)算一次樣本就進(jìn)行梯度下降,所以速度快很多但容易陷入局部最優(yōu)值。

折中的辦法是采用小批的梯度下降,即把數(shù)據(jù)分成若干個(gè)批次,一批來(lái)進(jìn)行一次梯度下降,減少隨機(jī)性,計(jì)算量也不是很大。 mini-batch

keras中的batch_size就是小批梯度下降。

以上這篇Keras SGD 隨機(jī)梯度下降優(yōu)化器參數(shù)設(shè)置方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論