keras中文文档_【DL项目实战02】图像识别分类——Keras框架+卷积神经网络CNN(使用VGGNet)
目錄:
【使用傳統(tǒng)DNN】
BG大龍:【DL項(xiàng)目實(shí)戰(zhàn)02】圖像分類——Keras框架+使用傳統(tǒng)神經(jīng)網(wǎng)絡(luò)DNN?zhuanlan.zhihu.com【使用卷積神經(jīng)網(wǎng)絡(luò)CNN】
BG大龍:【DL項(xiàng)目實(shí)戰(zhàn)02】圖像識(shí)別分類——Keras框架+卷積神經(jīng)網(wǎng)絡(luò)CNN(使用VGGNet)?zhuanlan.zhihu.com1、數(shù)據(jù)集情況
2、任務(wù)目標(biāo)
3、流程中的注意點(diǎn)
(1)讀取數(shù)據(jù)
(2)建立CNN(選用VGGNet)
——【第1部分】Conv2D層中,確定data_format類型
——【第2部分】特征提取:(卷積+池化)
——【第3部分】分類識(shí)別:(全連接)
(3)設(shè)定超參
(4)定義損失函數(shù)
(5)訓(xùn)練模型
(6)結(jié)果
4、對(duì)比實(shí)驗(yàn)
(1)第1個(gè)對(duì)比:添加Batch Normalization(BN,批量標(biāo)準(zhǔn)化層)
(2)第2個(gè)對(duì)比:添加Truncated Normal(TN,截?cái)喾植?#xff09;
(3)第3個(gè)對(duì)比:添加Dropout
5、加載模型,進(jìn)行測(cè)試
1、數(shù)據(jù)集情況
2、任務(wù)目標(biāo)
當(dāng)輸入“image”時(shí)候,能否正確識(shí)別,識(shí)別的acc是多少
3、流程中的注意點(diǎn)
(1)讀取數(shù)據(jù)
DNN結(jié)構(gòu):
CNN結(jié)構(gòu):
正常CNN輸入是224 244 3,這里進(jìn)行縮小成64 64 3,為了提高計(jì)算速度(2)建立CNN(選用VGGNet)
把網(wǎng)絡(luò)模型單獨(dú)寫成一個(gè)模塊,然后直接去調(diào)用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時(shí),格式是(data_format='channels_first')或者我們定義一個(gè)判斷語句:【第2部分】特征提取:(卷積+池化)
(1)32—64—128:為了降低pooling壓縮帶來的損失影響,filter個(gè)數(shù)逐步翻倍(2)padding:補(bǔ)0策略,為“valid”, “same”
“valid”代表只進(jìn)行有效的卷積,即對(duì)邊界數(shù)據(jù)不處理。
“same”代表保留邊界處的卷積結(jié)果,通常會(huì)導(dǎo)致輸出shape與輸入shape相同。
API文檔: 卷積層 - Keras中文文檔
(3)凡是計(jì)算層后面,都要加上激活函數(shù)
【第3部分】分類識(shí)別:(全連接)
FC層:激活函數(shù)softmax:(3)設(shè)定超參
(4)定義損失函數(shù)
這里,有一個(gè)學(xué)習(xí)率的衰減,decay=INIT_LR / EPOCHS看下API文檔,
(5)訓(xùn)練模型
steps_per_epoch=len(trainX) // BS
它表示是將一個(gè)epoch分成多少個(gè)batch_size,如果訓(xùn)練樣本數(shù)N=1000,steps_per_epoch = 10,那么相當(dāng)于一個(gè)batch_size=100
(6)結(jié)果
觀察val_loss,4、對(duì)比實(shí)驗(yàn)
(1)第1個(gè)對(duì)比:添加Batch Normalization(BN,批量標(biāo)準(zhǔn)化層)
API文檔:(批)規(guī)范化BatchNormalization - Keras中文文檔axis:整數(shù),指定當(dāng)mode=0時(shí)規(guī)范化的軸。例如輸入是形如(samples,channels,rows,cols)的4D圖像張量,則應(yīng)設(shè)置規(guī)范化的軸為1,意味著對(duì)每個(gè)特征圖進(jìn)行規(guī)范化
NN結(jié)構(gòu):在每一個(gè)“relu”后,添加BN
例如:
結(jié)果:但是Loss為什么這么大?
猜測(cè)是“隨機(jī)初始化”的原因,我又重新運(yùn)行了一次
BN添加前后對(duì)比:更加穩(wěn)定,提高了val_acc,
(2)第2個(gè)對(duì)比:添加Truncated Normal(TN,截?cái)喾植?#xff09;
API文檔: 初始化方法 - Keras中文文檔NN結(jié)構(gòu):在每個(gè)卷積層里面,添加kernel_initializer=TruncatedNormal(),stddev=0.01
例如:
結(jié)果:TN添加前后對(duì)比:有的參數(shù)添加后,不一定好
(3)第3個(gè)對(duì)比:添加Dropout
API文檔: 常用層 - Keras中文文檔NN結(jié)構(gòu):有個(gè)疑問:在卷積層中,已經(jīng)是“權(quán)重參數(shù)共享”,連接的參數(shù)本來就不多,再進(jìn)行Dropout,豈不是更少?(所以一般在Dense層在dropout?)結(jié)果:Dropout添加前后對(duì)比:
更加平穩(wěn),但是loss老是跑的比較高……
5、加載模型,進(jìn)行測(cè)試
用“image”文件夾,去做預(yù)測(cè)
CNN結(jié)果:對(duì)比DNN結(jié)果:
總結(jié)
以上是生活随笔為你收集整理的keras中文文档_【DL项目实战02】图像识别分类——Keras框架+卷积神经网络CNN(使用VGGNet)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python共享单车案例分析_pytho
- 下一篇: TensorFlow 2.0 mnis