相關(guān)概念
- 卷積計(jì)算
作用:特征提取
計(jì)算方法:使用卷積核按照指定步長(zhǎng)在卷積神經(jīng)網(wǎng)路上進(jìn)行滑動(dòng),遍歷圖像的特征點(diǎn)。卷積核與圖像重疊的部分則對(duì)應(yīng)元素相乘、求和之后再加上偏置項(xiàng),得到輸出特征的像素點(diǎn)。
注意事項(xiàng):
1.卷積核的深度應(yīng)當(dāng)與輸入圖像的深度一致
2.當(dāng)前圖使用多少卷積核就有多少輸出特征圖,當(dāng)前層卷積核的個(gè)數(shù)決定了當(dāng)前層輸出特征圖的深度
api:
tf.keras.layers.Conv2D(
filter = 卷積核個(gè)數(shù), #卷積核個(gè)數(shù)決定輸出特征圖的深度
kernel_size = (核高,核寬),
strides=(縱向步長(zhǎng),橫向步長(zhǎng))
padding="same"(使用全零填充)/"vallid"(不使用)
activation=激活函數(shù)種類如果后面使用bn則不填充
input_shape = (高,寬,通道數(shù)) #輸入特征維度可以不寫
)
- 感受野
輸出特征圖中的每個(gè)像素點(diǎn)在原始輸入圖片上映射區(qū)域的大小
兩層33和一層55特征提取能力相同
但在參數(shù)數(shù)量和計(jì)算量上有差距
當(dāng)輸入特征邊長(zhǎng)大于10個(gè)像素時(shí)兩層3*3比一層5*5計(jì)算量小,性能更優(yōu)
全0填充
用于卷積計(jì)算保持輸入特征的尺寸不變批標(biāo)準(zhǔn)化
使用原因:卷積網(wǎng)絡(luò)對(duì)0附近的數(shù)據(jù)更敏感,隨著網(wǎng)絡(luò)層數(shù)的增加,特征數(shù)據(jù)會(huì)出現(xiàn)偏離均值0的情況,標(biāo)準(zhǔn)化使得0重新成為均值。批標(biāo)準(zhǔn)化即對(duì)一個(gè)batch的數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化操作
可引入?yún)?shù):縮放因子和偏移因子,保證網(wǎng)絡(luò)的非線性表達(dá)力
api
tf.keras.layers.BatchNormalization()
- 池化
用于減少特征數(shù)據(jù)量
分為最大池化和均值池化
最大池化可以提取圖片文理
均值池化可以保留背景特征(背景特征?)
api
tf.keras.layers.MaxPool2D(
pool_size=(核高,核寬),
strides = (縱向步長(zhǎng),橫向步長(zhǎng)),
padding='same' or 'valid'
)
#平均池化
AveragePooling2D
- 舍棄
將一部分神經(jīng)元按照一定的概率從神經(jīng)網(wǎng)絡(luò)中暫時(shí)舍棄,神經(jīng)網(wǎng)絡(luò)使用時(shí)再恢復(fù)使用,用于緩解過(guò)擬合問(wèn)題
api
tf.keras.layers.Dropout(神經(jīng)元被舍棄的概率)
- 提取特征的常用步驟
卷積 C
批標(biāo)準(zhǔn)化 B
激活 A
池化 P
舍棄 D
一個(gè)常用實(shí)現(xiàn)過(guò)程
model = tf.keras.Sequential([
tf.keras.layers.Conv2D(6,kernel_size=(3,3),padding='same'),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.Activation('relu'),
tf.keras.layers.MaxPool2D((2,2),2,padding='same'),
tf.keras.layers.Dropout(0.2)
])