轉自:https://keras-cn.readthedocs.io/en/latest/layers/convolutional_layer/
https://keras-cn.readthedocs.io/en/latest/layers/pooling_layer/
1.con1D
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”
- activation:激活函數,為預定義的激活函數名。如果不指定該參數,將不會使用任何激活函數
- use_bias:布爾值,是否使用偏置項
- kernel_regularizer:施加在權重上的正則項
*可以將Convolution1D看作Convolution2D的快捷版,對例子中(10,32)的信號進行1D卷積相當於對其進行卷積核為(filter_length, 32)的2D卷積。
//以上這一句涉及到在1D的情況下的卷積計算過程。
2.Conv2D
keras.layers.convolutional.Conv2D(filters, kernel_size, strides=(1, 1), padding='valid', data_format=None, dilation_rate=(1, 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
參數。例如input_shape = (128,128,3)
代表128*128的彩色RGB圖像(data_format='channels_last'
)
//1D多用來對序列數據處理,比如自然語言和語音。2D多用來做圖像。
-
filters:卷積核的數目(即輸出的維度)
-
kernel_size:單個整數或由兩個整數構成的list/tuple,卷積核的寬度和長度。如為單個整數,則表示在各個空間維度的相同長度。
-
strides:單個整數或由兩個整數構成的list/tuple,為卷積的步長。如為單個整數,則表示在各個空間維度的相同步長。任何不為1的strides均與任何不為1的dilation_rate均不兼容
-
padding:補0策略,為“valid”, “same” 。“valid”代表只進行有效的卷積,即對邊界數據不處理。“same”代表保留邊界處的卷積結果,通常會導致輸出shape與輸入shape相同。
-
activation:激活函數,為預定義的激活函數名(參考激活函數),或逐元素(element-wise)的Theano函數。如果不指定該參數,將不會使用任何激活函數(即使用線性激活函數:a(x)=x)
- data_format:字符串,“channels_first”或“channels_last”之一,代表圖像的通道維的位置。該參數是Keras 1.x中的image_dim_ordering,“channels_last”對應原本的“tf”,“channels_first”對應原本的“th”。以128x128的RGB圖像為例,“channels_first”應將數據組織為(3,128,128),而“channels_last”應將數據組織為(128,128,3)。該參數的默認值是
~/.keras/keras.json
中設置的值,若從未設置過,則為“channels_last”。
3.最大池化1D層
keras.layers.pooling.MaxPooling1D(pool_size=2, strides=None, padding='valid')
-
pool_size:整數,池化窗口大小
-
strides:整數或None,下采樣因子,例如設2將會使得輸出shape為輸入的一半,若為None則默認值為pool_size。
-
padding:‘valid’或者‘same’
4.最大池化2D層
keras.layers.pooling.MaxPooling2D(pool_size=(2, 2), strides=None, padding='valid', data_format=None)
-
pool_size:整數或長為2的整數tuple,代表在兩個方向(豎直,水平)上的下采樣因子,如取(2,2)將使圖片在兩個維度上均變為原長的一半。為整數意為各個維度值相同且為該數字。
-
strides:整數或長為2的整數tuple,或者None,步長值。
-
border_mode:‘valid’或者‘same’
5.flatten展平
keras.layers.Flatten(data_format=None)
data_format:一個字符串,其值為 channels_last
(默認值)或者 channels_first。
model = Sequential() model.add(Conv2D(64, (3, 3), input_shape=(3, 32, 32), padding='same',)) # 現在:model.output_shape == (None, 64, 32, 32) model.add(Flatten()) # 現在:model.output_shape == (None, 65536)
//給的這個例子輸入維度中第一維是通道。
6.Input
keras.engine.input_layer.Input()
- shape: 一個尺寸元組(整數),不包含批量大小。 例如,
shape=(32,)
表明期望的輸入是按批次的 32 維向量。 - batch_shape: 一個尺寸元組(整數),包含批量大小。 例如,
batch_shape=(10, 32)
表明期望的輸入是 10 個 32 維向量。batch_shape=(None, 32)
表明任意批次大小的 32 維向量。 - name: 一個可選的層的名稱的字符串。 在一個模型中應該是唯一的(不可以重用一個名字兩次)。 如未提供,將自動生成。
- dtype: 輸入所期望的數據類型,字符串表示 (
float32
,float64
,int32
...) - sparse: 一個布爾值,指明需要創建的占位符是否是稀疏的。
- tensor: 可選的可封裝到
Input
層的現有張量。 如果設定了,那么這個層將不會創建占位符張量。