AutoML 想要滿足普羅大眾的夢想,不用學習一堆的演算法,只要你指定工作類別,它就幫你找到最佳模型及最佳參數,當然包括預測結果,哇,這麼神,不一探究竟怎麼可以。
AutoKeras 就是以 Keras 風格撰寫的 AutoML 套件,目前提供三類功能:
近期還會擴充 Time Series Forcasting, Object Detection, Image Segmentation 相關功能。
AutoKeras 撰寫非常簡單,我們就來玩玩看吧。
pip install git+https://github.com/keras-team/keras-tuner.git@1.0.2rc2
pip install autokeras
import tensorflow as tf
mnist = tf.keras.datasets.mnist
# 匯入 MNIST 手寫阿拉伯數字 訓練資料
(x_train, y_train),(x_test, y_test) = mnist.load_data()
import autokeras as ak
# 初始化影像分類器(image classifier)
clf = ak.ImageClassifier(
overwrite=True,
max_trials=1)
# 訓練模型
clf.fit(x_train, y_train, epochs=10)
執行後,會出現採用的最佳參數如下:
它會進行很多次實驗(Trials),所以要稍等一下,訓練結果如下,準確度接近99%,比我們自己建立模型稍高:
# 預測
predicted_y = model.predict(x_test)
# 評估,打分數
print(model.evaluate(x_test, y_test))
圖一. 很潦草的第9筆,正確答案為 5
# 使用小畫家,寫0~9,實際測試看看
from skimage import io
from skimage.transform import resize
import numpy as np
X_ALL = np.empty((0, 28, 28))
for i in range(10):
image1 = io.imread(f'./myDigits/{i}.png', as_gray=True)
#image1 = Image.open(uploaded_file).convert('LA')
image_resized = resize(image1, (28, 28), anti_aliasing=True)
X1 = image_resized.reshape(1, 28, 28) #/ 255
# 反轉顏色
# 顏色0為白色,與RGB顏色不同,(0,0,0) 為黑色。
# 還原特徵縮放
X1 = (np.abs(1-X1) * 255).astype(int)
X_ALL = np.concatenate([X_ALL, X1])
predictions = model.predict(X_ALL)
print(predictions)
圖二. 用小畫家寫的數字 0~9
再測試女士10種配件(Fashion MNIST),程式檔為 30_02_AutoKeras_Fashion_MNIST.ipynb,結果與自建的模型差不多,準確度接近91%,另外從網路上下載一些圖片如下,結果只有涼鞋辨識錯誤。
圖三. 網路上下載的圖片
圖四. 測試結果
不只 AutoKeras,其實其他雲端廠商也在戮力發展 AutoML,畢竟不是每個人都有大量的時間及數理能力學習AI,如果能夠降低學習的門檻,對AI發展絕對是正面的。
目前微軟的 ML.NET、Tensorflow 的 Estimators 都有類似的作法,未來精彩可期,不過,也不要過於期待,真正要作的好,關鍵還是在找到真正影響辨識的因子,還是需要領域專家(Domain Expert)的判斷以及資料科學家(Data Scientist)的實驗與驗證。
以上只是針對 AutoKeras 作很簡單的測試,【官網】還有更多的範例有待努力閱讀,最後,借用AI廠商講的話作為結束。
AI只會取代不懂AI的員工,懂得運用AI的員工永遠不會被取代。
雖然是第二次完賽,還是有莫大的壓力,要好好療養一陣子了。
本篇範例包括 30_01_AutoKeras_MNIST.ipynb、30_02_AutoKeras_Fashion_MNIST.ipynb 以及 test_data 目錄,可自【這裡】下載。