第一個 Keras 應用

準備訓練與驗證資料

在 <讓深度學習專案落地> 其實就是在講資料前處理的重要性, keras 當然也提供 API 讓我們快速可以預處理數據.

對於從來沒有接觸過機器學習的入門者, 我們可以利用 keras 已經提供的範例資料集就可以 keras.datasets.mnist.load_data()

取得mnist數據, 一個手寫數字辨識資料集. 有了數據就可以做做練習, 感受一下如何用深度學習技術解問題.

MNIST database 樣本
(圖來自
wiki)


load_data() 就已經將 train/test 切割好, 同時都是 (x, y)成對.

針對影像數據的輸入x, 在這裡的前處理只是將原先 0-255 的整數轉換成 [0, 1] 介於0與1 之間的浮點數.

要注意的是圖片分類的 y 值, 必須轉換成類別型, 只要呼叫 keras.utils.to_categorical(y, NumberOfClasses), 必須手動設定總共有多少類別 NumberOfClasses, 以 mnist 手寫數字就是 10. 以下程式碼取自 keras.io 小改

以上為載入 keras 提供的範例圖像分類數據, 如果我們以圖像分類小工具, 將所有圖像分類到對應子目錄後, 我們要如何運用它?

假設訓練圖像置放於 'path/to/train_directory', 且有兩個分類class_a , class_b 其對用子目錄與圖片放置如下:

keras 提供了 image_dataset_from_directory API 讓我們使用, 其中 batch_size 是一次取圖進模型的張數, 這是超參數要設定的, 取決於模型的設計與 GPU VRAM 大小, 該設定是一個小學問, 有機會另外討論它. 至於 image_size 的設定可讓 keras 自動縮放圖片尺寸到模型所需大小.

下面程式僅完成 training 的資料集, 通常我們還需要另外設 validation 資料集 (例如在 path/to/validation_directory, 其下應該有class_a , class_b 兩個子目錄), 程式幾乎一樣, 就不寫了.