如何使用Tensorflow和預訓練模型進行微調?


Tensorflow和預訓練模型可以透過將'base_model'的'trainable'特性設定為True來進行微調。在微調之前,層會被凍結。

閱讀更多: 什麼是TensorFlow以及Keras如何與TensorFlow協作建立神經網路?

包含至少一層卷積層的神經網路被稱為卷積神經網路。我們可以使用卷積神經網路來構建學習模型。

我們將瞭解如何藉助來自預訓練網路的遷移學習來對貓和狗的影像進行分類。影像分類遷移學習背後的直覺是,如果一個模型在大型通用資料集上進行訓練,那麼該模型可以有效地用作視覺世界的通用模型。它將學習特徵對映,這意味著使用者無需從頭開始在大型資料集上訓練大型模型。

閱讀更多: 如何預訓練自定義模型?

我們正在使用Google Colaboratory執行以下程式碼。Google Colab或Colaboratory幫助透過瀏覽器執行Python程式碼,並且無需任何配置即可免費訪問GPU(圖形處理單元)。Colaboratory構建在Jupyter Notebook之上。

示例

base_model.trainable = True
print("Number of layers in the base model are: ", len(base_model.layers))
print("Fine tuning begins")
fine_tune_at = 100
print("Layers are frozen before 'fine_tune_at' layer")
for layer in base_model.layers[:fine_tune_at]:
layer.trainable = False

程式碼來源 −https://www.tensorflow.org/tutorials/images/transfer_learning

輸出

Number of layers in the base model are: 154
Fine tuning begins
Layers are frozen before 'fine_tune_at' layer

解釋

  • 提高效能的一種方法是對預訓練模型頂層的權重進行微調/訓練,以及對新增的分類器的訓練。

  • 訓練過程將迫使權重從通用特徵對映調整到與特定資料集相關的特徵。

  • 需要微調少量頂層,而不是整個MobileNet模型。

  • 微調的目標是調整專門的特徵,以便它們可以用於處理新的資料集,而不是覆蓋通用學習。

  • 需要解除base_model的凍結,並將底層設定為不可訓練。

  • 模型需要重新編譯,並恢復訓練。

更新於: 2021年2月25日

267 次瀏覽

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告