keras_14_初始化Initializers
1. 模型初始化
初始化定義了設置 Keras 各層權重隨機初始值的方法。用來將初始化器傳入 Keras 層的參數名取決于具體的層。通常關鍵字為 kernel_initializer 和 bias_initializer:
model.add(Dense(64,kernel_initializer='random_uniform',bias_initializer='zeros'))內置的初始化工具 (是 keras.initializers 模塊的一部分)
Initializer
- 初始化器基類:所有初始化器繼承這個類。
Zeros
- 將張量初始值設為 0 的初始化器。
Ones
- 將張量初始值設為 1 的初始化器。
Constant
- 將張量初始值設為 constant的初始化器。
RandomNormal
- 按照正態分布生成隨機張量
RandomUniform
- 按照均勻分布生成隨機張量
TruncatedNormal
- 截尾正態分布。生成的隨機值與 RandomNormal 生成的類似,但是在距離平均值兩個標準差之外的隨機值將被丟棄并重新生成。這是用來生成神經網絡權重和濾波器的推薦初始化器。
VarianceScaling
初始化器能夠根據權值的尺寸調整其規模。
使用 distribution="normal" 時,樣本是從一個以 0 為中心的截斷正態分布中抽取的,stddev = sqrt(scale / n),其中 n 是:
- 權值張量中輸入單元的數量,如果 mode = "fan_in"。
- 輸出單元的數量,如果 mode = "fan_out"。
- 輸入和輸出單位數量的平均數,如果 mode = "fan_avg"。
使用 distribution="uniform" 時,樣本是從 [-limit,limit] 內的均勻分布中抽取的,其中 limit = sqrt(3 * scale / n)。
Orthogonal
- 生成一個隨機正交矩陣
Identity
- 生成單位矩陣
lecun_uniform
- LeCun 均勻初始化器。它從 [-limit,limit] 中的均勻分布中抽取樣本, 其中 limit 是 sqrt(3 / fan_in), fan_in 是權值張量中的輸入單位的數量。
glorot_normal (cs231n推薦):也稱為 Xavier 正態分布初始化器。
- 它從以 0 為中心,標準差為 stddev = sqrt(2 / (fan_in + fan_out)) 的截斷正態分布中抽取樣本, 其中 fan_in 是權值張量中的輸入單位的數量, fan_out 是權值張量中的輸出單位的數量。
glorot_uniform:Glorot 均勻分布初始化器,也稱為 Xavier 均勻分布初始化器。
- 它從 [-limit,limit] 中的均勻分布中抽取樣本, 其中 limit 是 sqrt(6 / (fan_in + fan_out)), fan_in 是權值張量中的輸入單位的數量, fan_out 是權值張量中的輸出單位的數量。
he_normal
- He 正態分布初始化器。它從以 0 為中心,標準差為 stddev = sqrt(2 / fan_in) 的截斷正態分布中抽取樣本, 其中 fan_in是權值張量中的輸入單位的數量,
lecun_normal
- LeCun 正態分布初始化器。它從以 0 為中心,標準差為 stddev = sqrt(1 / fan_in) 的截斷正態分布中抽取樣本, 其中 fan_in是權值張量中的輸入單位的數量。
he_uniform
- He 均勻方差縮放初始化器。它從 [-limit,limit] 中的均勻分布中抽取樣本, 其中 limit 是 sqrt(6 / fan_in), 其中 fan_in 是權值張量中的輸入單位的數量。
2. 自定義初始化器
如果傳遞一個自定義的可調用函數,那么它必須使用參數 shape(需要初始化的變量的尺寸)和 dtype(數據類型):
from keras import backend as Kdef my_init(shape, dtype=None):return K.random_normal(shape, dtype=dtype)model.add(Dense(64, kernel_initializer=my_init))
轉載于:https://www.cnblogs.com/LS1314/p/10380676.html
總結
以上是生活随笔為你收集整理的keras_14_初始化Initializers的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网络:NAT使用场景
- 下一篇: Leetcode 583.两个字符串的删