歡迎您光臨本站 註冊首頁

關於Keras Dense層整理

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

我就廢話不多說了,大家還是直接看代碼吧!

  '''  Created on 2018-4-4    '''  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:  # kerasactivations.py  # kerasackendcntk_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))

 

補充知識:keras.layers.Dense()方法及其參數

一、Dense層
 

  keras.layers.Dense(units,     activation=None,     use_bias=True,     kernel_initializer='glorot_uniform',     bias_initializer='zeros',     kernel_regularizer=None,     bias_regularizer=None,      activity_regularizer=None,     kernel_constraint=None,     bias_constraint=None)

 

二、參數

units: 神經元節點數數,雞輸出空間維度。

activation: 激活函數,若不指定,則不使用激活函數 (即線性激活: a(x) = x)。

use_bias: 布爾值,該層是否使用偏置向量。

kernel_initializer: kernel 權值矩陣的初始化器

bias_initializer: 偏置向量的初始化器

kernel_regularizer: 運用到 kernel 權值矩陣的正則化函數

bias_regularizer: 運用到偏置向的的正則化函數

activity_regularizer: 運用到層的輸出的正則化函數 (它的 “activation”)。

kernel_constraint: 運用到 kernel 權值矩陣的約束函數

bias_constraint: 運用到偏置向量的約束函數

三、示例

例1:

  from keras.layers import Dense    # 作為 Sequential 模型的第一層  model = Sequential()  model.add(Dense(32, input_shape=(16,)))  # 現在模型就會以尺寸為 (*, 16) 的數組作為輸入,  # 其輸出數組的尺寸為 (*, 32)    # 在第一層之後,你就不再需要指定輸入的尺寸了:  model.add(Dense(32))

 

注意在Sequential模型的第一層要定義Dense層的形狀,此處定義為input_shape=(16,)

例2:

  from keras.layers import Dense    model = Sequential()  model.add(Dense(512, activation= 'sigmoid', input_dim= 2, use_bias= True))

 

這裡定義了一個有512個神經元節點,使用sigmoid激活函數的神經層,此時輸入形狀參數為input_dim,注意它與input_shape參數的區別。

input_shape:即張量的形狀,從前往後對應由外向內的維度

[[1],[2],[3]] 這個張量的shape為(3,1)

[[[1,2],[3,4]],[[5,6],[7,8]],[[9,10],[11,12]]]這個張量的shape為(3,2,2),

[1,2,3,4]這個張量的shape為(4,)

input_dim:代表張量的維度,之前3個例子的input_dim分別為2,3,1。

常見的一種用法:只提供了input_dim=32,說明輸入是一個32維的向量,相當於一個一階、擁有32個元素的張量,它的shape就是(32,)。因此,input_shape=(32, )

 

   


[techdo ] 關於Keras Dense層整理已經有208次圍觀

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