簡體   English   中英

如何在NiftyNet中實施轉學?

[英]How do I implement transfer learning in NiftyNet?

我想使用NiftyNet堆棧進行一些轉移學習,因為我的標簽圖像數據集很小。 在TensorFlow中,這是可能的-我可以加載各種預先訓練的網絡並直接使用它們的層。 為了微調網絡,我可以凍結中間層的訓練,而只訓練最后一層,或者我可以將中間層的輸出用作特征向量,以饋入另一個分類器。

我該如何在NiftyNet中做到這一點? 在文檔或源代碼中唯一提及“轉移學習”的內容是模型動物園的參考,但是對於我的任務(圖像分類),動物園中沒有可用的網絡。 ResNet體系結構似乎已實現並可供使用,但據我所知,它尚未經過任何培訓。 另外,似乎可以訓練網絡的唯一方法是通過運行net_classify train ,使用配置文件中的各種TRAIN配置選項,這些選項都沒有凍結網絡的選項。 niftynet.layer的各個層似乎也沒有使它們受訓或受訓的選項。

我想我的問題是:

  1. 是否可以通過預先訓練的TensorFlow網絡進行移植?
    • 如果我在NiftyNet中手動重新創建層體系結構,是否可以從預先訓練的TF網絡中導入權重?
  2. 如何訪問模型的中間權重和層? 我如何在NiftyNet中訪問預訓練模型的中間激活圖?指的是模型動物園,可以使用net_download獲得net_download ,但不能訪問任何任意模型)
  3. 順便說一句,學習率似乎也是一個常數-要隨時間變化,我是否必須運行網絡進行一定數量的迭代,更改lr ,然后從最后一個檢查點重新開始訓練?

[編輯]: 是使用NiftyNet進行遷移學習的文檔。

此功能目前正在開發中。 詳細信息請參見此處

預期的功能包括:

  • 用於打印所有可訓練變量名稱的命令(帶有可選的正則表達式匹配項)
  • 能夠隨機初始化變量的子集,此子集由正則表達式名稱匹配創建
  • 能夠(從現有檢查點)恢復並繼續更新變量的子集的能力。 如果更改了優化方法,請處理方法特定的變量(例如動量)
  • 能夠從現有檢查點恢復並凍結其余變量的訓練權重
  • 訓練后保存所有可訓練變量
  • 添加用於微調的配置參數,變量名regex,單元測試
  • 演示/教程
  • 預處理檢查點以解決兼容性問題
  • 處理批處理規范和退出層(編輯網絡以刪除批處理規范變量)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM