不必接觸高深數學,也能輕鬆打造高效能 AI 模型

AutoML是近來極為熱門的話題,使用者不用寫出繁雜的演算法,也能快速打造出 AI 模型,降低「AI 落地」的門檻,大幅減少試驗機器學習模型的時間與痛苦。 AutoKeras是一套完全開源的 Python AutoML 套件,對影像、文字、時間序列或一般結構化資料的預測提供內建類別,甚至會加上資料預處理功能。使用者不必接觸高深的數學,就能用短短幾行程式碼便能打造出成效優異的 DL 模型。以下我們將透過案例分享,如何使用AutoKeras打造一個分類器:

AutoKeras 會產生使用不同超參數的不同模型,各別加以測試, 最終傳回每個圖像分類都能盡可能準確辨識的最佳分類器。

4-3-2 檢視資料集內容

提示  範例程式:chapter04\notebook\cifar.ipynb及chapter04\py\cifar.py

在這個實驗中 , 請依序輸入並執行以下格子的程式碼。第一步是用pip3 套件安裝 AutoKeras 與它的相關套件 ( 在本機已經安裝過的人可省略此步驟 ):

接著我們要匯入 AutoKeras 與其他會用到的套件,例如 NumPy 及matplotlib 繪圖套件,以及Tensorflow 提供的 CIFAR-10 資料集模組:

接著我們要先將 CIFAR-10 資料集載入記憶體,並檢視一下訓練集與測試集的形狀:

下面是這段程式碼的輸出結果:

4-3-3 建立圖像分類器

現在,我們將使用 AutoKeras 的 ImageClassifier 類別來產生最佳分類模型。由於需要處理上千張彩色圖像,AutoKeras 將需要更多時間來尋找最佳模型;在此我們將 max_trials ( 試驗的 Keras 模型數量上限 ) 設為 3,而且不指定 epochs ( 訓練週期 ),使它以預設的 1000 次為上限,並在模型達到最佳結果、無法再更進一步時就停止訓練。

在訓練時,AutoKeras 會嘗試使用幾種最常見的圖像分類模型結構。儘管增加 max_trials 參數的值會大幅增加訓練時間,這樣卻能確保你能得到高準確率的模型。

下面我們就建立一個分類器模型,並以 CIFAR-10 的訓練集開始訓練:

以下是訓練的最終輸出結果:

完成全部三個模型的訓練後,AutoKeras 選出當中表現最好的模型,並用它來訓練最後一次、產生以上看到的輸出結果 , 並對訓練集達到99.1% 的預測準確率。

補充:AutoKeras 的模型搜尋行為

當你使用 ImageClassifier 分類器進行訓練時,AutoKeras 會在你的程式檔 (.ipynb 或 .py) 的所在目錄建立一個 image_classifier 資料夾 , 並在當中記錄每個模型的訓練過程。假如你中斷訓練或程式因故當掉、然後再次執行訓練 , 那麼 AutoKeras 就會依據已經記錄的內容來接續訓練。完成所有訓練後 , 最佳模型會儲存在 image_classifier/best_model 目錄下。

舉個例,若 max_trials 參數設為 10,而你在訓練到第 6 個模型時中斷訓練,重新執行程式便會使 AutoKeras 從第 6 個模型重新訓練,並在系統中總共記錄 10 個模型的結果後結束。若重新執行程式時,10 個模型的訓練都已完成,那麼 AutoKeras 會直接拿最佳模型重新訓練。

反過來說,若一開始你把 max_trials 值設得較低,沒有得到令你夠滿意的模型 , 你可以中斷訓練、調高 max_trials 參數並重新執行,好讓AutoKeras 繼續試驗更多模型。

至於要是你對整個訓練過程不滿意、想要打掉重練 , 可在停止訓練後刪除系統中的訓練記錄 (以此例來說就是 image_classifier 資料夾 ),或者在執行訓練時將 overwrite 參數設為 True,好覆蓋掉舊記錄:

若你要在同一個資料夾訓練不同的模型 , 可以用 project_name 參數指定專案名稱 , 以免記錄模型時相互影響:

本文節錄自《用 AutoKeras 超輕鬆打造高效能 AI 模型》,由旗標科技授權轉載。