1. 程式人生 > >Keras的dense層及其各種初始化方法

Keras的dense層及其各種初始化方法

keras.layers.core.Dense(
units, #代表該層的輸出維度
activation=None, #啟用函式.但是預設 liner
use_bias=True, #是否使用b
kernel_initializer='glorot_uniform', #初始化w權重,keras/initializers.py
bias_initializer='zeros', #初始化b權重
kernel_regularizer=None, #施加在權重w上的正則項,keras/regularizer.py
bias_regularizer=None, #施加在偏置向量b上的正則項
activity_regularizer=None, #施加在輸出上的正則項
kernel_constraint=None, #施加在權重w上的約束項
bias_constraint=None #施加在偏置b上的約束項
)

# 所實現的運算是output = activation(dot(input, kernel)+bias)
# model.add(Dense(units=64, activation='relu', input_dim=784))

# keras初始化所有啟用函式,activation:
# keras\activations.py
# keras\backend\cntk_backend.py
# import cntk as C
# 1.softmax:
#             對輸入資料的最後一維進行softmax,一般用在輸出層;
#     ndim == 2,K.softmax(x),其實呼叫的是cntk,是一個模組;
#     ndim >= 2,e = K.exp(x - K.max(x)),s = K.sum(e),return e / s
# 2.elu
#     K.elu(x)
# 3.selu: 可伸縮的指數線性單元
#     alpha = 1.6732632423543772848170429916717
#     scale = 1.0507009873554804934193349852946
#     return scale * K.elu(x, alpha)
# 4.softplus
#     C.softplus(x)
# 5.softsign
#     return x / (1 + C.abs(x))
# 6.relu
#     def relu(x, alpha=0., max_value=None):
#         if alpha != 0.:
#             negative_part = C.relu(-x)
#         x = C.relu(x)
#         if max_value is not None:
#             x = C.clip(x, 0.0, max_value)
#         if alpha != 0.:
#             x -= alpha * negative_part
#         return x
# 7.tanh
#     return C.tanh(x)
# 8.sigmoid
#     return C.sigmoid(x)
# 9.hard_sigmoid
#     x = (0.2 * x) + 0.5
#     x = C.clip(x, 0.0, 1.0)
#     return x
# 10.linear
#     return x

# keras初始化所有方法,initializer:
# Zeros
# Ones
# Constant(固定一個值)
# RandomNormal(正態分佈)
# RandomUniform(均勻分佈)
# TruncatedNormal(截尾高斯分佈,神經網路權重和濾波器的推薦初始化方法)
# VarianceScaling(該初始化方法能夠自適應目標張量的shape)
# Orthogonal(隨機正交矩陣初始化)
# Identiy(單位矩陣初始化,僅適用於2D方陣)
# lecun_uniform(LeCun均勻分佈初始化)
# lecun_normal(LeCun正態分佈初始化)
# glorot_normal(Glorot正態分佈初始化)
# glorot_uniform(Glorot均勻分佈初始化)
# he_normal(He正態分佈初始化)
# he_uniform(He均勻分佈初始化,Keras中文文件寫錯了)

# keras正則化,regularizer:
# import backend as K
# L1: regularization += K.sum(self.l1 * K.abs(x))
# L2: regularization += K.sum(self.l2 * K.square(x))


原文:https://blog.csdn.net/u011311291/article/details/79820073