歡迎您光臨本站 註冊首頁

keras之權重初始化方式

←手機掃碼閱讀     bom485332 @ 2020-06-11 , reply:0

在神經網絡訓練中,好的權重 初始化會加速訓練過程。

下面說一下kernel_initializer 權重初始化的方法。

不同的層可能使用不同的關鍵字來傳遞初始化方法,一般來說指定初始化方法的關鍵字是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))#指定均值和方差的正態分佈初始化  keras.initializers.RandomUniform(minval=-0.05, maxval=0.05, seed=None)#指定下邊界和上邊界的均勻分佈初始化  keras.initializers.TruncatedNormal(mean=0.0, stddev=0.05, seed=None)#截尾高斯分佈初始化,位於均值兩個標準差以外的數據將會被丟棄並重新生成,形成截尾分佈

 

自定義初始化

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

 

補充知識:Keras中權重weight的初始化
 

Keras 的原始構造模塊是模型,最簡單的模型稱為序貫模型, Keras 的序貫模型是神經網絡層的線性管道 ( 堆棧) 。

以下代碼段定義了 一個包含 12 個人工神經元的單層 網絡,它預計有 8 個輸入變量 ( 也稱為特徵):

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

 

每個神經元可以用特定的權重進行初始化 。 Keras 提供了 幾個選擇 , 其中最常用的選擇如下所示。

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

random_normal:根據高斯分佈初始化權重,其中均值為0,標準差為0.05。

zero:所有權重被初始化為0。 


[bom485332 ] keras之權重初始化方式已經有213次圍觀

http://coctec.com/docs/python/shhow-post-237978.html