keras中文文档_【DL项目实战02】图像识别分类——Keras框架+卷积神经网络CNN(使用VGGNet)
目錄:
【使用傳統DNN】
BG大龍:【DL項目實戰02】圖像分類——Keras框架+使用傳統神經網絡DNN?zhuanlan.zhihu.com【使用卷積神經網絡CNN】
BG大龍:【DL項目實戰02】圖像識別分類——Keras框架+卷積神經網絡CNN(使用VGGNet)?zhuanlan.zhihu.com1、數據集情況
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輸入是224 244 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結果:
總結
以上是生活随笔為你收集整理的keras中文文档_【DL项目实战02】图像识别分类——Keras框架+卷积神经网络CNN(使用VGGNet)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python共享单车案例分析_pytho
- 下一篇: pytorch梯度下降函数_Pytorc