溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

keras如何實現(xiàn)權(quán)重初始化

發(fā)布時間:2020-07-22 17:04:18 來源:億速云 閱讀:353 作者:小豬 欄目:開發(fā)技術(shù)

小編這次要給大家分享的是keras如何實現(xiàn)權(quán)重初始化,文章內(nèi)容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

在神經(jīng)網(wǎng)絡(luò)訓(xùn)練中,好的權(quán)重 初始化會加速訓(xùn)練過程。

下面說一下kernel_initializer 權(quán)重初始化的方法。

不同的層可能使用不同的關(guān)鍵字來傳遞初始化方法,一般來說指定初始化方法的關(guān)鍵字是kernel_initializer 和 bias_initializer

model.add(Dense(64, kernel_initializer=initializers.random_normal(stddev=0.01)))
 
# also works; will use the default parameters.
model.add(Dense(64, kernel_initializer='random_normal'))

幾種初始化方法

keras.initializers.Zeros()#全0
keras.initializers.Ones()#全1
keras.initializers.RandomNormal(mean=0.0, stddev=0.05, seed=None))#指定均值和方差的正態(tài)分布初始化
keras.initializers.RandomUniform(minval=-0.05, maxval=0.05, seed=None)#指定下邊界和上邊界的均勻分布初始化
keras.initializers.TruncatedNormal(mean=0.0, stddev=0.05, seed=None)#截尾高斯分布初始化,位于均值兩個標(biāo)準(zhǔn)差以外的數(shù)據(jù)將會被丟棄并重新生成,形成截尾分布

自定義初始化

def my_init(shape, dtype=None):
 return K.random_normal(shape, dtype=dtype)
 
model.add(Dense(64, init=my_init))

補充知識:Keras中權(quán)重weight的初始化

Keras 的原始構(gòu)造模塊是模型,最簡單的模型稱為序貫?zāi)P停?Keras 的序貫?zāi)P褪巧窠?jīng)網(wǎng)絡(luò)層的線性管道 ( 堆棧) 。

以下代碼段定義了 一個包含 12 個人工神經(jīng)元的單層 網(wǎng)絡(luò),它預(yù)計有 8 個輸入變量 ( 也稱為特征):

from keras.models import Sequential
 
model =Sequential()
model.add(12,input_dim=8,kernel_initializer='random_uniform')

每個神經(jīng)元可以用特定的權(quán)重進(jìn)行初始化 。 Keras 提供了 幾個選擇 , 其中最常用的選擇如下所示。

random_unifrom:權(quán)重被初始化為(-0.5,0.5)之間的均勻隨機的微小數(shù)值,換句話說,給定區(qū)間里的任何值都可能作為權(quán)重 。

random_normal:根據(jù)高斯分布初始化權(quán)重,其中均值為0,標(biāo)準(zhǔn)差為0.05。

zero:所有權(quán)重被初始化為0。

看完這篇關(guān)于keras如何實現(xiàn)權(quán)重初始化的文章,如果覺得文章內(nèi)容寫得不錯的話,可以把它分享出去給更多人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI