Keras搭建CNN

Keras 中的卷積層

要在 Keras 中創建卷積層,你首先必須導入必要的模塊:

from keras.layers import Conv2D

然後,你可以通過使用以下格式創建卷積層:

Conv2D(filters, kernel_size, strides, padding, activation='relu', input_shape)

參數

必須傳遞以下參數:

  • filters - 過濾器數量。
  • kernel_size - 指定(方形)卷積窗口的高和寬的數字。

你可能還需要調整其他可選參數:

  • strides - 卷積 stride。如果不指定任何值,則 strides 設爲 1
  • padding - 選項包括 'valid' 和 'same'。如果不指定任何值,則 padding 設爲 'valid'
  • activation - 通常爲 'relu'。如果未指定任何值,則不應用任何激活函數。強烈建議你向網絡中的每個卷積層添加一個 ReLU 激活函數。

注意:可以將 kernel_size 和 strides 表示爲數字或元組。

在模型中將卷積層當做第一層級(出現在輸入層之後)時,必須提供另一個 input_shape 參數:

  • input_shape - 指定輸入的高度、寬度和深度(按此順序)的元組。

注意:如果卷積層不是網絡的第一個層級,請勿包含 input_shape 參數。

你還可以設置很多其他元組參數,以便更改卷積層的行爲。要詳細瞭解這些參數,建議參閱官方文檔

示例 1

假設我要構建一個 CNN,輸入層接受的是 200 x 200 像素(對應於高 200、寬 100、深 1 的三維數組)的灰度圖片。然後,假設我希望下一層級是卷積層,具有 16 個過濾器,每個寬和高分別爲 2。在進行卷積操作時,我希望過濾器每次跳轉 2 個像素。並且,我不希望過濾器超出圖片界限之外;也就是說,我不想用 0 填充圖片。要構建該卷積層,我將使用下面的代碼:

Conv2D(filters=16, kernel_size=2, strides=2, activation='relu', input_shape=(200, 200, 1))

示例 2

假設我希望 CNN 的下一層級是卷積層,並將示例 1 中構建的層級作爲輸入。假設新層級是 32 個過濾器,每個的寬和高都是 3。在進行卷積操作時,我希望過濾器每次移動 1 個像素。我希望卷積層查看上一層級的所有區域,因此不介意過濾器在進行卷積操作時是否超過上一層級的邊緣。然後,要構建此層級,我將使用以下代碼:

Conv2D(filters=32, kernel_size=3, padding='same', activation='relu')

示例 3

如果在線查看代碼,經常會在 Keras 中見到以下格式的卷積層:

Conv2D(64, (2,2), activation='relu')

在這種情況下,有 64 個過濾器,每個的大小是 2x2,層級具有 ReLU 激活函數。層級中的其他參數使用默認值,因此卷積的 stride 爲 1,填充設爲 'valid'。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章