
版權聲明:小博主水平有限,希望大家多多指導。
目錄:
【使用傳統DNN】
BG大龍:【DL項目實戰02】圖像分類——Keras框架+使用傳統神經網絡DNN?zhuanlan.zhihu.com
【使用卷積神經網絡CNN】
BG大龍:【DL項目實戰02】圖像識別分類——Keras框架+卷積神經網絡CNN(使用VGGNet)?zhuanlan.zhihu.com
1、數據集情況
2、任務目標
3、流程中的注意點
(1)讀取數據
(2)建立CNN(選用VGGNet)
——【第1部分】Conv2D層中,確定data_format類型
——【第2部分】特征提取:(卷積+池化)
——【第3部分】分類識別:(全連接)
(3)設定超參
(4)定義損失函數
(5)訓練模型
(6)結果
4、對比實驗
(1)第1個對比:添加Batch Normalization(BN,批量標準化層)
(2)第2個對比:添加Truncated Normal(TN,截斷分布)
(3)第3個對比:添加Dropout
5、加載模型,進行測試
1、數據集情況

2、任務目標
當輸入“image”時候,能否正確識別,識別的acc是多少

3、流程中的注意點
(1)讀取數據
DNN結構:

CNN結構:
正常CNN輸入是224244
3,這里進行縮小成64
64
3,為了提高計算速度


(2)建立CNN(選用VGGNet)
把網絡模型單獨寫成一個模塊,然后直接去調用simpleVGGNet

在simpleVGGNet模塊里面,三部分工作
【第1部分】Conv2D層中,確定data_format類型
(data_format='channels_last')—input_shape = (128,128,3)代表128*128的RGB圖像
(data_format='channels_first')—input_shape = (3,128,128)代表128*128的RGB圖像
keras使用tensorflow作為Backend時,格式是(data_format='channels_first')

或者我們定義一個判斷語句:

【第2部分】特征提取:(卷積+池化)
(1)32—64—128:為了降低pooling壓縮帶來的損失影響,filter個數逐步翻倍
(2)padding:補0策略,為“valid”, “same”
“valid”代表只進行有效的卷積,即對邊界數據不處理。
“same”代表保留邊界處的卷積結果,通常會導致輸出shape與輸入shape相同。
API文檔: 卷積層 - Keras中文文檔
(3)凡是計算層后面,都要加上激活函數



【第3部分】分類識別:(全連接)
FC層:

激活函數softmax:


(3)設定超參


(4)定義損失函數

這里,有一個學習率的衰減,decay=INIT_LR / EPOCHS
看下API文檔,


(5)訓練模型
steps_per_epoch=len(trainX) // BS
它表示是將一個epoch分成多少個batch_size,
如果訓練樣本數N=1000,steps_per_epoch = 10,那么相當于一個batch_size=100


(6)結果
觀察val_loss,

4、對比實驗
(1)第1個對比:添加Batch Normalization(BN,批量標準化層)
API文檔:(批)規范化BatchNormalization - Keras中文文檔

axis:整數,指定當mode=0
時規范化的軸。例如輸入是形如(samples,channels,rows,cols)的4D圖像張量,則應設置規范化的軸為1,意味著對每個特征圖進行規范化
NN結構:
在每一個“relu”后,添加BN


例如:

結果:
但是Loss為什么這么大?

猜測是“隨機初始化”的原因,我又重新運行了一次

BN添加前后對比:
更加穩定,提高了val_acc,


(2)第2個對比:添加Truncated Normal(TN,截斷分布)
API文檔: 初始化方法 - Keras中文文檔

NN結構:
在每個卷積層里面,添加kernel_initializer=TruncatedNormal(),stddev=0.01

例如:

結果:

TN添加前后對比:
有的參數添加后,不一定好


(3)第3個對比:添加Dropout
API文檔: 常用層 - Keras中文文檔

NN結構:
有個疑問:在卷積層中,已經是“權重參數共享”,連接的參數本來就不多,再進行Dropout,豈不是更少?(所以一般在Dense層在dropout?)

結果:

Dropout添加前后對比:
更加平穩,但是loss老是跑的比較高……

5、加載模型,進行測試
用“image”文件夾,去做預測


CNN結果:

對比DNN結果:
