生活随笔
收集整理的這篇文章主要介紹了
TImm 笔记: 训练模型
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 訓練所需參數
? 1.1 需要的參數
timm訓練腳本需要的唯一參數是訓練數據的路徑
比如我們數據長這樣:
?因此為例訓練imagenette2-320數據,我們需要:
python train.py <path_to_imagenette2-320_dataset>
1.2 默認參數
How to train your own models using timm? | timmdocs
2? 訓練腳本的各個步驟
????????在本節中,我們將從宏觀的角度來研究訓練腳本中的各個步驟。
如果args.distributed=True,設置分布式訓練參數。為可重復的結果設置手動種子。(manual seed)使用timm.create_model 創建模型根據模型的默認配置設置數據配置。一般情況下,模型的默認配置如下:? {'url': '',
'num_classes': 1000,
'input_size': (3, 224, 224),
'pool_size': (7, 7),
'crop_pct': 0.875,'interpolation': 'bicubic', '
mean': (0.485, 0.456, 0.406),
'std': (0.229, 0.224, 0.225),
'first_conv': 'conv1',
'classifier': 'fc'} ? ? ? ? ?設置擴增批分割,如果擴增批分割(?augmentation batch splits)的數量大于1,將所有模型的BatchNormlayers轉換為Split batch Normalization層。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 通常,當我們訓練一個模型時,我們將數據增強【data augmentation】應用于完整批【batch】,然后從這個完整批定義批規范【batch norm】統計數據,如均值和方差。? ? ? ? ? ? ? ? ? ? ? 但有時將數據分成組,并為每個組使用單獨的批處理歸一化層【Batch Normalization layers】來獨立地歸一化組是有益的。這在一些論文中被稱為輔助批規范【auxiliary batch norm】,在timm中被稱為SplitBatchNorm2d。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 我們假設augmentation batch splits數量是2。我們將數據拆分成兩個組,一組沒有數據增強,一組有數據增強。然后我們使用兩個獨立的批處理歸一化層【Batch Normalization layers】來歸一化兩個組別如果我們使用多個gpu進行訓練,那么設置apex syncBN或PyTorch native SyncBatchNorm,來設置Synchronized Batch Normalization。這意味著我們不是對每個單獨的GPU上的數據進行歸一化,而是在多個GPU上對整個批處理進行歸一化。使用torch.jit,如果我們需要有輸出根據傳遞給訓練腳本的參數,初始化優化器設置混合精度——使用apex.amp 或者torch.cuda.amp.autocast如果是從某一個模型checkpoint 繼續的,加載模型權重設置模型權重的指數移動平均【exponential moving average】根據步驟1中的參數設置分布式訓練Setup?learning rate scheduler.建立訓練集和驗證集Setup?Mixup/Cutmix?data augmentation.如果第五步augmentation batch splits數量大于1,那么將訓練數據集轉換成`AugmixDataset`創建訓練集和驗證集的data loader設置損失函數設置模型保存點、模型評估指標訓練并驗證模型,將評估結果保存到一個文件中
?
?3 EMA?(Exponential Moving Average)
機器學習筆記:Momentum_UQI-LIUWJ的博客-CSDN博客
使用EMA訓練模型,添加--model-ema
定義EMA的衰減率,使用--model-ema-decay + 值
model_weights = decay * model_weights + (1 - decay) * new_model_weights
?3.1 不使用EMA舉例
python train.py ../imagenette2-320 --model resnet34
?3.2 使用EMA舉例
python train.py ../imagenette2-320 --model resnet34 --model-ema --model-ema-decay 0.99
總結
以上是生活随笔為你收集整理的TImm 笔记: 训练模型的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。