MNIST 手寫數字影像辨識
Keras MNIST 手寫數字資料集 Training data : (60000,28,28) Training label: (60000,) Test data : (10000, 28,28) Test label: (10000,)
資料預處理 建立多層感知器模型必須先將內容進行資料預處理 資料預處理分為兩個部分 1.Features(數字影像特徵值)資料預處理 2.Labels(數字影像真實值)資料預處理
資料預處理 Features預處理分為兩個步驟 1. 28*28數字影像 784 , type:float
資料預處理 2. 數字影像Image的數字影像標準化
資料預處理 labels資料預處理 label原本是0~9的數字 10個0或1的組合 例如: 數字3經過one-hot encoding0001000000 數字7經過one-hot encoding0000000100 One-hot encoding
多層感知器模型(MLP)介紹 . 輸入層 隱藏層 輸出層 X1 X2 X783 X784 h1 h2 y9 y1 y0 h256 資料預處理
多層感知器(MLP)訓練與預測 多層感知器 資料預處理 模型 多層感知器 0~9的數字 模型 訓練 訓練 … 7 1 … 3 預測 預測結果 7 1 … 3 多層感知器 模型 0~9的數字 預測 預測結果 資料預處理 預測
流程圖 1.資料預處理 2.建立模型 3.訓練模型 4.評估模型準確率 5.進行預測
設定訓練方式 1.設定訓練與驗證比例 80%作為訓練資料60000×0.8 =48000筆 20%作為驗證資料60000×0.2=12000筆 2.設定epochs次數與每一批次筆數 Epochs=10 每一批次筆數=200 3.設定訓練過程 48000筆訓練資料,每一批次200筆 大約分為48000/200=240批次
MLP實驗 多層感知器 輸入層:784個神經元,隱藏層:256個神經元,輸出層:10個神經元 Epoch=10
MLP實驗 Test data: accuracy=0.9762
MLP實驗 多層感知器 輸入層:784個神經元,隱藏層:800個神經元,輸出層:10個神經元 Epoch=10 overfitting
Overfitting問題 Overfitting(過度訓練): 當可選擇的參數自由度超過資料所包含的資訊內容時, 這會破壞模型一般化得能力。 解決方法: 1.增加數據量, 大部分過擬合產生的原因是因為數據量太少了。 2.加入DropOut功能,在訓練的時候,我們隨機忽略掉一些神 經元和神經元的連結,讓每一次預測結果都不會太過依賴於 其中某部分特定神經元。
多層感知器加入DropOut功能 增加DropOut功能:為了解決Overfitting的問題 例如: DropOut(0.5)放棄隱藏層中50%的神經元 DropOut(0.25)放棄隱藏層中25%的神經元
隱藏層800個神經元並加入DropOut功能 X1 X2 . . . . . . . . . . . . . X784 h1 h2 . . . . . . . . . . . . . X784 h1 h2 . . . . . . . . . . . . . h800 y0 y1 . . . . . . . . . . . . . y9
MLP實驗 多層感知器 輸入層:784個神經元,隱藏層:800個神經元,輸出層:10個神經元 Epoch=10 加入DropOut(0.5) 改善overfitting
Confusion matrix 混淆矩陣(Confusion matrix)是一種對分類模型進行效果評估的 方法 通過將模型預測的數據與測試數據進行對比,使用準確率, 覆蓋率和命中率等指標對模型的分類效果進行度量。
MLP實驗 Confusion matrix 多層感知器 輸入層:784個神經元,隱藏層:800個神經元,輸出層:10個神經元 Epoch=10 加入DropOut(0.5) Confusion matrix
CNN卷積神經網路介紹 CNN卷積神經網路分為兩個部分 1.影像的特徵提取 透過卷積層1、池化層1、卷積層2、池化層2,提取影像特徵。 2.完全連結神經網路 包含平坦層、隱藏層、輸出層,所組成的類神經網路。
CNN卷積神經網路介紹 輸入層 . 平坦層 隱藏層 輸出層 d1 d2 d1763 d1764 y9 y1 y0 d128
卷積運算 (0×0)+(0×1)+(0×0)+ (0×1)+(1×1)+(1×1)+ (0×0)+(5×1)+(3×0)= 7 1 5 3 1 5 3 1 7 1 8 5 3 7 2 9 6 Filter weight
卷積運算 (0×0)+(0×1)+(0×0)+ (1×1)+(1×1)+(8×1)+ (5×0)+(3×1)+(7×0)= 13 1 8 5 1 8 5 3 7 1 7 13 1 8 5 3 7 2 9 6 Filter weight
Max-Pool運算 1 2 3 4 6 8 6 8 3 4 Max-Pool
Max-Pool運算說明 1 2 3 4 6 8 6 1 2 3 4 6 8 6 8
Max-Pool運算說明 1 2 3 4 6 8 6 8 3 1 2 3 4 6 8 6 8 3 4
CNN實驗 . 3 3 3 3 3 3 3 3 d1 d2 d1763 d1764 y9 y1 y0 d128 平坦層 隱藏層 輸出層 3 第一次convolution 第一次pooling 第二次convolution 第二次pooling Filter=16 Filter=36 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 28×28 3 3 3 3 3 3 3 3 3 3 3 3 輸入層 3 3 3 3 3 3 16×28×28 16×14×14 36×14×14 36×7×7
CNN實驗 CNN卷積神經網路 卷積層1:16層(28×28),池化層1:16層(14×14) 卷積層1:36層(14×14),池化層1:36層(7×7) 輸入層:1764個神經元,隱藏層:128個神經元,輸出層:10個神經元 Epoch=10 加入DropOut(0.25)
CNN實驗 Test data: loss accuracy=0.9902 結論:使用CNN會比用多層感知器(MLP)模型來的好
Reference TensorFlow+Keras深度學習人工智慧實務應用
The End