[資料分析&機器學習] 第5.1講: 卷積神經網絡介紹(Convolutional ...

文章推薦指數: 80 %
投票人數:10人

卷積神經網絡(Convolutional Neural Network)簡稱CNN,CNN是所有深度學習課程、書籍必教的模型(Model),CNN在影像識別方面的威力非常強大,許多影樣辨識的模型也都是 ... GetunlimitedaccessOpeninappHomeNotificationsListsStoriesWritePublishedinJamesLearningNote[資料分析&機器學習]第5.1講:卷積神經網絡介紹(ConvolutionalNeuralNetwork)卷積神經網絡(ConvolutionalNeuralNetwork)簡稱CNN,CNN是所有深度學習課程、書籍必教的模型(Model),CNN在影像識別方面的威力非常強大,許多影樣辨識的模型也都是以CNN的架構為基礎去做延伸。

另外值得一提的是CNN模型也是少數參考人的大腦視覺組織來建立的深度學習模型,學會CNN之後,對於學習其他深度學習的模型也會很有幫助,本文將為示範如何使用CNN來達成99%正確度的手寫數字辨識。

CNN的概念圖如下:CNN概念圖CNN概念圖2簡單來說,圖片經過各兩次的Convolution,Pooling,FullyConnected就是CNN的架構了,因此只要搞懂Convolution,Pooling,FullyConnected三個部分的內容就可以完全掌握了CNN!1.ConvolutionLayer卷積層卷積運算就是將原始圖片的與特定的FeatureDetector(filter)做卷積運算(符號⊗),卷積運算就是將下圖兩個3x3的矩陣作相乘後再相加,以下圖為例0*0+0*0+0*1+0*1+1*0+0*0+0*0+0*1+0*1=0卷積運算依序做完整張表卷積運算中間的FeatureDetector(Filter)會隨機產生好幾種(ex:16種),FeatureDetector的目的就是幫助我們萃取出圖片當中的一些特徵(ex:形狀),就像人的大腦在判斷這個圖片是什麼東西也是根據形狀來推測16種不同的FeatureDetector利用FeatureDetector萃取出物體的邊界利用FeatureDetector萃取出物體的邊界使用Relu函數去掉負值,更能淬煉出物體的形狀其他函數2.PoolingLayer池化層在PoolingLayer這邊主要是採用MaxPooling,MaxPooling的概念很簡單只要挑出矩陣當中的最大值就好,MaxPooling主要的好處是當圖片整個平移幾個Pixel的話對判斷上完全不會造成影響,以及有很好的抗雜訊功能。

3.FullyConnectedLayer全連接層基本上全連接層的部分就是將之前的結果平坦化之後接到最基本的神經網絡了實作接下來的實作會教大家如何使用CNN來達成99%正確度的手寫數字辨識,在一開始安裝需要安裝Tensorflow以及Keras,只需要在你的命令提示字元或是終端機輸入以下的安裝指令就可以了Mnist手寫數字資料集pipinstalltensorflow==1.3.0(寫此篇文章的當下1.4尚有Bug,建議使用1.3版)pipinstallkeras載入套件,跳出訊息說明Keras背後是使用Tensorflow當做底層運算架構載入Mnist手寫辨識資料Training的資料有60000筆而Testing的資料有10000筆都是28*28pixel大小的手寫數字圖片畫出圖片長相以及Label由於圖片通常是RGB三個顏色所組成的,假設圖片大小是28*28的彩色圖片,實際上的資料維度就是28*28*3。

不過這邊數字的顏色都是單色因此我們轉成28*28*1的資料維度當作未來CNNModel的input灰階的圖片數值為0~255之間,我們將它縮放到0~1之間,並對類別資料做onehot-encoding處理我們在這邊可以看到若使用Keras來建立CNN模型只要幾行Code就可以完成了,非常簡單!一開始先建立一個Sequential模型,接著一層一層加上去就可以了在層跟層之間通常會Drop掉一定比例的神經元來避免Overfit的狀況,要Drop掉多少比例沒有一個特定的值,通常是25%~50%之間開始訓練模型,這邊可以看到每一輪的迭代acc以及val_acc的準確度都慢慢再提高,從一開始的acc(training):83%val_acc(testing):96%的準確度,到第20輪時acc以及val_acc都變成99%的準確度了補充本文較粗淺的介紹Deeplearning中的CNN模型,若想要再更加全面的了解DeepLearning以及CNN,建議大家可以閱讀TensorFlow+Keras深度學習人工智慧實務應用、DeepLearning|用Python進行深度學習的基礎理論實作這兩本好書,以及Udemy上的DeepLearning線上課程程式碼新版(keras整合進tensorflow之後的版本)舊版感謝你閱讀完這篇文章,如果你覺得這些文章對你有幫助請在底下幫我拍個手(長按最多可以拍50下手)。

[Python資料分析&機器學習]這系列文章是我在Hahow上面所開設課程的講義,如果你是新手想著看影片一步一步學習,可以參考這門課:https://hahow.in/cr/pydataml如果你對什麼主題的文章有興趣的話,歡迎透過這個連結告訴我:https://yehjames.typeform.com/to/XIIVQC有任何問題也歡迎在底下留言或是來信告訴我:[email protected]參考閱讀TensorFlow+Keras深度學習人工智慧實務應用UdemyDeeplearning課程DeepLearning|用Python進行深度學習的基礎理論實作【机器学习】彻底搞懂CNNMorefromJamesLearningNoteJames學習筆記ReadmorefromJamesLearningNoteAboutHelpTermsPrivacyGettheMediumappGetstartedYehJames5.9KFollowersFollowMorefromMediumChrisKuo/Dr.DatamanAPrimertoImagePre-trainedModelsPedroRFigueiredoHowtoCustomizeHyperparameterOptimizationcherilshahTrainingTreeBasedModelswithTF-DecisionForestscrumbDoINeedtoTraintheWholeModel?HelpStatusWritersBlogCareersPrivacyTermsAboutKnowable



請為這篇文章評分?