keras中的卷積層&池化層的用法
卷積層
創(chuàng)建卷積層
首先導(dǎo)入keras中的模塊
from keras.layers import Conv2D
卷積層的格式及參數(shù):
Conv2D(filters, kernel_size, strides, padding, activation='relu', input_shape)
filters: 過(guò)濾器數(shù)量
kernel_size:指定卷積窗口的高和寬的數(shù)字
strides: 卷積stride,如果不指定任何值,則strides設(shè)為1
padding: 選項(xiàng)包括'valid'和'same',默認(rèn)值為'valid'
activation: 通常為'relu',如果不指定任何值,則不應(yīng)用任何激活函數(shù),通常應(yīng)該向網(wǎng)絡(luò)中每個(gè)卷積層添加一個(gè)Relu激活函數(shù)
如果卷積層出現(xiàn)在輸入層之后,必須提供另一個(gè)input_shape參數(shù):
input_shape: 指定輸入的高度、寬度和深度的元組;如果卷積層不是網(wǎng)絡(luò)的第一個(gè)層級(jí),則不應(yīng)該包含input_shape參數(shù)。
示例1:
假設(shè)我要構(gòu)建一個(gè) CNN,輸入層接受的是 200 x 200 像素(對(duì)應(yīng)于高 200、寬 200、深 1 的三維數(shù)組)的灰度圖片。然后,假設(shè)我希望下一層級(jí)是卷積層,具有 16 個(gè)過(guò)濾器,每個(gè)寬和高分別為 2。在進(jìn)行卷積操作時(shí),我希望過(guò)濾器每次跳轉(zhuǎn) 2 個(gè)像素。并且,我不希望過(guò)濾器超出圖片界限之外;也就是說(shuō),我不想用 0 填充圖片。
要構(gòu)建該卷積層,我將使用下面的代碼
Conv2D(filters=16, kernel_size=2, strides=2, activation='relu', input_shape=(200, 200, 1))
示例 2
假設(shè)我希望 CNN 的下一層級(jí)是卷積層,并將示例 1 中構(gòu)建的層級(jí)作為輸入。假設(shè)新層級(jí)是 32 個(gè)過(guò)濾器,每個(gè)的寬和高都是 3。在進(jìn)行卷積操作時(shí),我希望過(guò)濾器每次移動(dòng) 1 個(gè)像素。我希望卷積層查看上一層級(jí)的所有區(qū)域,因此不介意過(guò)濾器在進(jìn)行卷積操作時(shí)是否超過(guò)上一層級(jí)的邊緣。
然后,要構(gòu)建此層級(jí),我將使用以下代碼:
Conv2D(filters=32, kernel_size=3, padding='same', activation='relu')
卷積層中的參數(shù)數(shù)量
卷積層中的參數(shù)數(shù)量取決于filters, kernel_size, input_shape的值
K: 卷積層中的過(guò)濾器數(shù)量, K=filters
F:卷積過(guò)濾器的高度和寬度, F = kernal_size
D_in: 上一層級(jí)的深度, D_in是input_shape元組中的最后一個(gè)值
卷積層中的參數(shù)數(shù)量計(jì)算公式為:K * F * F * D_in + K
卷積層的形狀
卷積層的形狀取決于kernal_size, input_shape, padding, stride的值
K: 卷積層中的過(guò)濾器數(shù)量,K = filters
F: 卷積過(guò)濾器的高度和寬度, F = kernal_size
H_in: 上一層級(jí)的高度
W_in: 上一層級(jí)的寬度
S: stride
卷積層的深度始終為過(guò)濾器數(shù)量K
如果padding=‘same', 那么卷積層的空間維度計(jì)算公式如下:
height = ceil(float(H_in) / float(S))
width = ceil(float(W_in) / float(S))
如果padding = ‘valid', 那么卷積層的空間維度計(jì)算公式如下:
height = ceil(float(H_in - F + 1) / float(S))
width = ceil(float(W_in - F + 1) / float(S))
可以使用如下形式檢測(cè)卷積層的維度:
from keras.models import Sequential from keras.layers import Conv2D model = Sequential() model.add(Conv2D(filters=32, kernel_size=3, strides=2, padding='same', activation='relu', input_shape=(128, 128, 3))) model.summary()
池化層
keras中的最大池化層
創(chuàng)建池化層,首先導(dǎo)入keras中的模塊
from keras.layers import MaxPooling2D
然后用以下形式創(chuàng)建池化層
MaxPooling2D(pool_size, strides, padding)
參數(shù)
pool_size:指定池化窗口高度和寬度的數(shù)字
strides:垂直和水平stride,默認(rèn)參數(shù)為pool_size
padding:選項(xiàng)包括'valid'和'same',默認(rèn)參數(shù)為'valid'
示例:
假設(shè)我要構(gòu)建一個(gè) CNN,并且我想通過(guò)在卷積層后面添加最大池化層,降低卷積層的維度。假設(shè)卷積層的大小是 (100, 100, 15),我希望最大池化層的大小為 (50, 50, 15)。
要實(shí)現(xiàn)這一點(diǎn),我可以在最大池化層中使用 2x2 窗口,stride 設(shè)為 2,代碼如下:
MaxPooling2D(pool_size=2, strides=2)
如果你想將 stride 設(shè)為 1,但是窗口大小依然保留為 2x2,則使用以下代碼:
MaxPooling2D(pool_size=2, strides=1)
可以使用如下形式檢測(cè)最大池化層的維度:
from keras.models import Sequential from keras.layers import MaxPooling2D model = Sequential() model.add(MaxPooling2D(pool_size=2, strides=2, input_shape=(100, 100, 15))) model.summary()
以上這篇keras中的卷積層&池化層的用法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
利用python實(shí)現(xiàn)漢字轉(zhuǎn)拼音的2種方法
這篇文章主要給大家介紹了關(guān)于如何利用python實(shí)現(xiàn)漢字轉(zhuǎn)拼音的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08tensorflow -gpu安裝方法(不用自己裝cuda,cdnn)
這篇文章主要介紹了tensorflow -gpu安裝,史上最新最簡(jiǎn)單的途徑(不用自己裝cuda,cdnn),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01pandas讀取excel統(tǒng)計(jì)空值數(shù)量錯(cuò)誤的解決方法
pd.read_excel()讀取excel數(shù)據(jù)后,用pd.isnull().sum()統(tǒng)計(jì)空值數(shù)量不對(duì),本文主要介紹了pandas讀取excel統(tǒng)計(jì)空值數(shù)量錯(cuò)誤的解決方法,感興趣的可以了解一下2024-04-04python實(shí)現(xiàn)求解列表中元素的排列和組合問(wèn)題
本篇文章給大家分享使用python的內(nèi)置模塊實(shí)現(xiàn)求解列表中元素的排列和組合問(wèn)題,具體實(shí)現(xiàn)代碼大家參考下本文2018-03-03Python+Pygame實(shí)戰(zhàn)之24點(diǎn)游戲的實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了如何利用Python和Pygame實(shí)現(xiàn)24點(diǎn)小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04Python函數(shù)基礎(chǔ)(定義函數(shù)、函數(shù)參數(shù)、匿名函數(shù))
這篇文章介紹了Python函數(shù)的基礎(chǔ)用法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05