? ? ?上篇文章《基于Keras DNN與Fashion_MNIST數(shù)據(jù)集開發(fā)一個深度學習程序》介紹了基于Keras API,構建一個深度神經網絡DNN,用于分類Fashion_MNIST數(shù)據(jù)集,其精度大約在90%左右舱馅,不管怎么訓練赘方,也無法提高了烧颖。
? ? ?下一步的思路是,是否能修改深度神經網絡的構架窄陡,使得精度繼續(xù)提高呢倒信?
? ? ? 圖像處理的常用的一個方法是濾波,濾波的本質是特征提取泳梆。換句話說鳖悠,能否在神經網絡中加入濾波器,由濾波器來提取圖像特征优妙,從而取代人為直接指定乘综?濾波器核(Kernel)的參數(shù)由訓練自動習得,這樣或許比人為提取特征更合理套硼。上篇文章《基于Keras DNN與Fashion_MNIST數(shù)據(jù)集開發(fā)一個深度學習程序》中的DNN卡辰,本質是人為指定了特征,即像素的亮度值邪意。經過訓練發(fā)現(xiàn)九妈,其精度在90%左右,不能提高了雾鬼。
? ? ? 由此萌朱,本文將加入圖像濾波器(image filter)來自動提取特征,圖像濾波器的核(kernel)的參數(shù)策菜,由訓練自動習得晶疼。由于實現(xiàn)圖像濾波的數(shù)學計算方法是卷積(Convolution),所以又憨,我們在神經網絡中翠霍,直接加入卷積計算,即卷積層蠢莺。
? ? ? ?經過卷積后寒匙,需要訓練的參數(shù)大大增加,所以躏将,我們需要一個圖像壓縮技術锄弱,在保證精度的情況下,讓需要處理的參數(shù)(計算量)盡量少一點耸携。池化(Pooling)就是一種圖像數(shù)據(jù)壓縮技術棵癣。
? ? ? ?本文將創(chuàng)建具有Conv2D->MaxPooling->Con2D->MaxPooling->Dense128->Dense10網絡結構的神經網絡,看看檢測精度是否可以繼續(xù)提高夺衍。
可以看到狈谊,程序框架基本與上篇文章中的DNN類似,不一樣的地方就是創(chuàng)建model的時候,加入了ConvD->MaxPooling2D->Conv2D-MaxPooling2D河劝,這些用于自動提取特征的卷積計算層壁榕,和用于壓縮圖像的池化層。
運行后赎瞎,可以看到牌里,加入CNN自動提取圖像特征后,相比于之前直接人為指定像素亮度作為特征务甥,精度有提高接近3%牡辽,證明研發(fā)方向和思路是正確的。
進階閱讀《CNN需要訓練的參數(shù)個數(shù)(Param #)計算》
參考閱讀《深度學習圖像識別技術》