1.手寫數字數據集
- from sklearn.datasets import load_digits
- digits = load_digits()
(1)導入數據包
(2)讀取數據
2.圖片數據預處理
- x:歸一化MinMaxScaler()
- y:獨熱編碼OneHotEncoder()或to_categorical
- 訓練集測試集划分
- 張量結構
(1)x:歸一化MinMaxScaler(),y:獨熱編碼OneHotEncoder()
結果如圖:
3.設計卷積神經網絡結構
- 繪制模型結構圖,並說明設計依據。
模型結構如圖:
設計理念依據:
(1)傳遞一個input_shape的關鍵字參數給第一層,input_shape是一個tuple類型的數據,其中也可以填入None,如果填入None則表示此位置可能是任何正整數。數據的batch大小不應包含在其中
(2)傳遞一個batch_input_shape的關鍵字參數給第一層,該參數包含數據的batch大小。該參數在指定固定大小batch時比較有用,例如在stateful RNNs中。事實上,Keras在內部會通過添加一個None將input_shape轉化為batch_input_shape
(3)有些2D層,如Dense,支持通過指定其輸入維度input_dim來隱含的指定輸入數據shape。一些3D的時域層支持通過參數input_dim和input_length來指定輸入shape。
(4)優化器optimizer:該參數可指定為已預定義的優化器名
(5)損失函數loss:該參數為模型試圖最小化的目標函數
(6)由於圖像尺寸較小,故卷積核尺寸設置為3×3,三個卷積-池化層的卷積核數量分別設置為16、32、64。
4.模型訓練
5.模型評價
- model.evaluate()
- 交叉表與交叉矩陣
- pandas.crosstab
- seaborn.heatmap