這次練功,是繼續之前我學習 Daniel Bourke 的 PyTorch 教學
https://www.learnpytorch.io/
的一個重要的章節 “PyTorch Transfer Learning.”
Transfer learning 對 AI 影像模型之所以重要,一大原因是它大大的降低訓練新模型的計算量。它利用一個預訓練 (pretraining) 的影像模型,凍結大部分模型參數,只將最後一層的分類器 (classifier) 抽換,再用新的資料集訓練。如此節省預訓練所花的大量時間,而且實作也很簡單,只需替換分類器層。
這種方法之所以有效,在於預訓練使用的資料集與新資料集如果相關性高,那麼模型參數便大部分可延用,只須將最後的分類器訓練為新資料集的類別。
我的實作是用預訓練模型 – EfficientNet 作 transfer learning, 資料集使用 Oxford Flowers102 的花種資料集。圖 1 為 transfer learning 模型。在我的 MacBook M1 MAX GPU 加速,只訓練約 6 分鐘,如圖 2 的測試的準確度就達 83%. 圖 3 則為隨機取幾個測試資料,使用新模型作預測,跟真實結果相比大多是相符。



Transfer learning 是個學習成本不高、但很實用的機器學習,值得一試👍