例如,如果要使用ADAM(請註意,以下操作可能會降低模型的性能),可以使用以下修改:
為了修改模型的學習率,用戶只需在配置文件中修改優化器的lr。
用戶可以參考PyTorch的API文檔。
直接設置參數。
自定義優化器可以定義如下:
如果要添加壹個名為MyOptimizer的優化器,其參數分別為a、b和C。
您需要創建壹個名為mmseg/core/optimizer的新文件夾。
然後在文件mmseg/core/optimizer/my _ optimizer . py中實現新的優化器:
為了讓框架發現上面定義的模塊,首先應該將該模塊導入主名稱空間。
有兩種方法可以實現它。
mmseg . core . optimizer . my _ optimizer模塊將在程序開始運行時導入,MyOptimizer類將自動註冊。
應該註意的是,應該只導入包含MyOptimizer類的包。
而mmseg . core . optimizer . my _ optimizer . my optimizer不能直接導入。
事實上,只要模塊的根路徑已經添加到PYTHONPATH中,用戶就可以使用以這種方式導入的另壹個文件夾結構。
然後,您可以在配置文件的優化器字段中使用MyOptimizer。
在配置文件中,優化器是在優化器域中定義的,如下所示:
要使用您自己的優化器,此字段可以更改為:
某些模型可能需要在優化器中設置壹些特殊參數,例如批次歸壹化層的權重衰減。
用戶可以通過定制優化器的構造函數來微調這些細粒度的參數。
這裏可以引用默認優化器構建器的實現,它也可以用作新優化器構建器的模板。
優化器沒有意識到的壹些技能應該由優化器構造函數或鉤子來實現,比如設置參數式學習率。我們列出了壹些可以穩定或加速模型訓練的常見設置。
如果您有更多設置,請在PR和issue中提交。
我們根據40k/80k的默認訓練叠代步數來設置學習速率,這在MMCV被稱為PolyLrUpdaterHook。
我們還支持許多其他學習率計劃:例如,這裏的CosineAnnealing和Poly計劃。以下是壹些例子:
工作流是壹個列表(階段、時期),專門定義運行順序和時期。
默認情況下,它設置為:
訓練就是跑1 epoch。有時用戶可能希望檢查驗證集中模型的某些指標(如損失和準確性)。我們可以按如下方式設置工作流:
因此1歷元訓練和1歷元驗證將交替運行。
註意:
如果鉤子已經在MMCV實現,如下所示,您可以直接修改配置文件來使用鉤子:
custom_hooks沒有註冊以下常用掛鉤:
在這些鉤子中,只有logger鉤子的優先級為VERY_LOW,其他所有的優先級都是正常的。
上述教程包括如何修改優化器配置、動量配置和lr配置。
這裏我們展示了如何處理log_config、checkpoint_config和evaluation。
MMCV運行程序將使用checkpoint_config來初始化檢查點掛鉤。
用戶可以設置max_keep_ckpts僅保存少量檢查點,或者決定是否通過save_optimizer保存optimizer的狀態字典。有關使用參數的更多詳細信息,請參考此處。
Log_config包裝了許多日誌掛鉤,並可以設置時間間隔。現在MMCV支持WandbLoggerHook、MlflowLoggerHook和TensorboardLoggerHook。
詳細使用請參考文檔。
評估的配置文件將用於初始化EvalHook。
除了interval鍵之外,metric等其他參數也將傳遞給dataset.evaluate()。