Keras卷積+池化層學習


轉自: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: 輸入所期望的數據類型,字符串表示 (float32float64int32...)
  • sparse: 一個布爾值,指明需要創建的占位符是否是稀疏的。
  • tensor: 可選的可封裝到 Input 層的現有張量。 如果設定了,那么這個層將不會創建占位符張量。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM