這次使用 Keras 建立 CNN 疊代模型,來辨識 CIFAR-10 影像資料。

CIFAR-10 是 32*32 的 RGB 彩色圖形,包含飛機、狗、貓等 10 個類別,可以視為 MNIST 的進階挑戰版。

在數據預處理 (Preprocess) 階段,流程與 MNIST 類似,包括標準化與 One-hot encoding。

模型架構:

  • 卷積層 (Convolution):兩層,選用 3*3 Kernel,Same padding。
  • 池化層 (Max-pooling):2*2 大小。
  • 全連接層 (Dense):由 4096 降至 1024,最後輸出 10 個類別。

可以觀察 Keras 與 TensorFlow 在參數表現與語法上的些微差异。

keras-cifar10-1

利用 pandas 建立混淆矩陣 (Confusion Matrix),分析模型是否在特定類別間產生混淆。

keras-cifar10-0

從矩陣中可以看出:

  • 第 3 類 (cat) 與第 5 類 (dog) 較容易混淆。
  • 動物類與交通工具類之間區分得相當清楚。

兩層 CNN 準確率:0.732

My Github