Keras.layers各种层介绍,网络层、卷积层、池化层 等
【轉載】Keras.layers各種層介紹 - 心冰之海 - bk園 https://www.cnblogs.com/lhxsoft/p/13534667.html
文章導航
- 一、網絡層
- 1、常用網絡層
- 1.1、Dense層(全連接層)
- 1.2、Activation層 ,激活層
- 1.3、dropout層,“隨機丟棄層”
- 1.4、Flatten層,“壓平層”
- 1.5、Reshape層,“重塑張量形狀 層”
- 2、卷積層Convolutional
- 2.1、Conv1D層,一維卷積層
- 3、池化層Pooling
- 3.1、MaxPooling1D層 最大值池化
- 3.2、AveragePooling1D層,平均值池化
- 4、循環層Recurrent
- 2.4.3、LSTM層
本文章向大家介紹KerasKeras.layers各種層介紹,主要包括Keras,Keras.layers各種層介紹使用實例、應用技巧、基本知識點總結和需要注意事項,具有一定的參考價值,需要的朋友可以參考一下。
一、網絡層
keras的層主要包括:
常用層(Core)、卷積層(Convolutional)、池化層(Pooling)、局部連接層(dense)、遞歸層(Recurrent)、嵌入層( Embedding)、高級激活層、規范層、噪聲層、包裝層,當然也可以編寫自己的層。
對于層的操作
layer.get_weights() #返回該層的權重(numpy array) layer.set_weights(weights)#將權重加載到該層 config = layer.get_config()#保存該層的配置 layer = layer_from_config(config)#加載一個配置到該層#如果層僅有一個計算節點(即該層不是共享層),則可以通過下列方法獲得輸入張量、輸出張量、輸入數據的形狀和輸出數據的形狀: layer.input layer.output layer.input_shape layer.output_shape#如果該層有多個計算節點??梢允褂孟旅娴姆椒?/span> layer.get_input_at(node_index) layer.get_output_at(node_index) layer.get_input_shape_at(node_index) layer.get_output_shape_at(node_index)1、常用網絡層
1.1、Dense層(全連接層)
keras.layers.core.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:大于0的整數,代表該層的輸出維度。
-
use_bias:布爾值,是否使用偏置項
-
kernel_initializer:權值初始化方法,為預定義初始化方法名的字符串,或用于初始化權重的初始化器。
-
bias_initializer:偏置向量初始化方法,為預定義初始化方法名的字符串,或用于初始化偏置向量的初始化器。
-
regularizer:正則項,kernel為權重的、bias為偏執的,activity為輸出的
-
constraints:約束項,kernel為權重的,bias為偏執的。
-
activation:激活函數,為預定義的激活函數名(參考激活函數),或逐元素(element-wise)的Theano函數。如果不指定該參數,將不會使用任何激活函數(即使用線性激活函數:a(x)=x)
-
input_dim:該層輸入的維度
本層實現的運算為
output=activation(dot(input,kernel)+bias)
個人理解,即:
輸出 = 激活函數【(輸入 點乘 * 卷積核 )+偏置】
1.2、Activation層 ,激活層
keras.layers.core.Activation(activation)激活層對一個層的輸出,施加激活函數(sigmod, relu 等等)
參數:
- activation:將要使用的激活函數,為預定義激活函數名或一個Tensorflow/Theano的函數。參考激活函數
輸入shape:任意,當使用激活層作為第一層時,要指定input_shape
輸出shape:與輸入shape相同
1.3、dropout層,“隨機丟棄層”
keras.layers.core.Dropout(rate, noise_shape=None, seed=None)為輸入數據施加Dropout操作。
Dropout將在訓練過程中每次更新參數時按一定概率(rate) 隨機斷開輸入神經元,Dropout層用于防止過擬合。
參數
-
rate:0~1的浮點數,控制需要斷開的神經元的比例
-
noise_shape:整數張量,為將要應用在輸入上的二值Dropout mask的shape,例如你的輸入為(batch_size, timesteps, features),并且你希望在各個時間步上的Dropout mask都相同,則可傳入noise_shape=(batch_size, 1, features)。
-
seed:整數,使用的隨機數種子
個人理解,注意:使用的隨機數種子seed固定,則每次進行的“隨機丟棄神經元”的操作也是固定的。
1.4、Flatten層,“壓平層”
keras.layers.core.Flatten()Flatten層用來將輸入“壓平”,即把多維的輸入一維化,常用在從卷積層到全連接層的過渡。Flatten不影響batch的大小。
例子:
model = Sequential() model.add(Convolution2D(64, 3, 3,border_mode='same',input_shape=(3, 32, 32))) # now: model.output_shape == (None, 64, 32, 32)model.add(Flatten()) # now: model.output_shape == (None, 65536)1.5、Reshape層,“重塑張量形狀 層”
keras.layers.core.Reshape(target_shape)Reshape層用來將輸入shape轉換為特定的shape
參數
- target_shape:目標shape,為整數的tuple,不包含樣本數目的維度(batch大小)
輸入shape:任意,但輸入的shape必須固定。當使用該層為模型首層時,需要指定input_shape參數
輸出shape:(batch_size,)+target_shape
2、卷積層Convolutional
2.1、Conv1D層,一維卷積層
keras.layers.convolutional.Conv1D(filters, kernel_size, strides=1, padding='valid', dilation_rate=1, 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)一維卷積層(即時域卷積),用以在一維輸入信號上進行鄰域濾波。當使用該層作為首層時,需要提供關鍵字參數input_shape。例如(10,128)代表一個長為10的序列,序列中每個信號為128向量。而(None, 128)代表變長的128維向量序列。
該層生成將輸入信號與卷積核按照單一的空域(或時域)方向進行卷積。如果use_bias=True,則還會加上一個偏置項,若activation不為None,則輸出為經過激活函數的輸出。
參數
- filters:卷積核的數目(即輸出的維度)
- kernel_size:整數或由單個整數構成的list/tuple,卷積核的空域或時域窗長度
- strides:整數或由單個整數構成的list/tuple,為卷積的步長。任何不為1的strides均與任何不為1的dilation_rate均不兼容
- padding:補0策略,為“valid”, “same” 或“causal”,“causal”將產生因果(膨脹的)卷積,即output[t]不依賴于input[t+1:]。當對不能違反時間順序的時序信號建模時有用。參考WaveNet: A Generative Model for Raw Audio, section 2.1.。“valid”代表只進行有效的卷積,即對邊界數據不處理?!皊ame”代表保留邊界處的卷積結果,通常會導致輸出shape與輸入shape相同。
- activation:激活函數,為預定義的激活函數名(參考激活函數),或逐元素(element-wise)的Theano函數。如果不指定該參數,將不會使用任何激活函數(即使用線性激活函數:a(x)=x)
- dilation_rate:整數或由單個整數構成的list/tuple,指定dilated convolution中的膨脹比例。任何不為1的dilation_rate均與任何不為1的strides均不兼容。
- use_bias:布爾值,是否使用偏置項
- kernel_initializer:權值初始化方法,為預定義初始化方法名的字符串,或用于初始化權重的初始化器。參考initializers
- bias_initializer:權值初始化方法,為預定義初始化方法名的字符串,或用于初始化權重的初始化器。參考initializers
- kernel_regularizer:施加在權重上的正則項,為Regularizer對象
- bias_regularizer:施加在偏置向量上的正則項,為Regularizer對象
- activity_regularizer:施加在輸出上的正則項,為Regularizer對象
- kernel_constraints:施加在權重上的約束項,為Constraints對象
- bias_constraints:施加在偏置上的約束項,為Constraints對象
輸入shape:形如(samples,steps,input_dim)的3D張量
輸出shape:形如(samples,new_steps,nb_filter)的3D張量,因為有向量填充的原因,steps的值會改變
【Tips】可以將Convolution1D看作Convolution2D的快捷版,對例子中(10,32)的信號進行1D卷積相當于對其進行卷積核為(filter_length, 32)的2D卷積。
3、池化層Pooling
3.1、MaxPooling1D層 最大值池化
keras.layers.pooling.MaxPooling1D(pool_size=2, strides=None, padding='valid')對時域1D信號進行最大值池化。
參數
- pool_size:整數,池化窗口大小
- strides:整數或None,下采樣因子,例如設2將會使得輸出shape為輸入的一半,若為None則默認值為pool_size。
- padding:‘valid’或者‘same’
輸入shape:形如(samples,steps,features)的3D張量
輸出shape:形如(samples,downsampled_steps,features)的3D張量
3.2、AveragePooling1D層,平均值池化
keras.layers.pooling.AveragePooling1D(pool_size=2, strides=None, padding='valid')對時域1D信號進行平均值池化
參數
- pool_size:整數,池化窗口大小
- strides:整數或None,下采樣因子,例如設2將會使得輸出shape為輸入的一半,若為None則默認值為pool_size。
- padding:‘valid’或者‘same’
輸入shape:形如(samples,steps,features)的3D張量
輸出shape:形如(samples,downsampled_steps,features)的3D張量
4、循環層Recurrent
2.4.3、LSTM層
keras.layers.recurrent.LSTM(output_dim, init='glorot_uniform', inner_init='orthogonal', forget_bias_init='one', activation='tanh', inner_activation='hard_sigmoid', W_regularizer=None, U_regularizer=None, b_regularizer=None, dropout_W=0.0, dropout_U=0.0)- forget_bias_init:遺忘門偏置的初始化函數,Jozefowicz et al.建議初始化為全1元素
- inner_activation:內部單元激活函數
總結
以上是生活随笔為你收集整理的Keras.layers各种层介绍,网络层、卷积层、池化层 等的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 科创板t0还是t1
- 下一篇: argsort()返回数据从小到大的“索