預訓練模型finetune使用思路


項目使用了預訓練的bert模型進行文本分類

先說一下總體思路:

1.從官方的ckpt模型文件中加載模型,接一層全連接和激活函數,再接一層輸出層即可,根據分類的類別選擇輸出層節點的個數。

2.構造模型后,凍結bert層,只訓練后續接的分類層,保存模型,這一步可以不保存優化器狀態,因為當前優化器中的狀態只是構造了一個針對后面兩層權重的目標函數,沒有考慮bert層凍結的權重優化。

3.上一步訓練結束之后,加載上一步保存的模型,解凍bert層,整個模型一起finetune,注意模型最好重新編譯,這樣可以重置優化器目標函數,才可以更新bert層的參數,否則如果上一步保存了優化器狀態,你直接加載了模型,隨后接着訓練,則優化的還只是后面幾層的權重。

總之,如果我們只是加載模型來預測,則不需要compile

如果是需要進行訓練或評估,而且需要改變優化器狀態,學習率,或者目標函數,那么需要compile,這里finetune就是改變了目標函數,所以需要compile
如果沒有指標需要改變,加載后繼續訓練就好,無需compile。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM