日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TImm 笔记: 训练模型

發布時間:2025/4/5 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 笔记: 训练模型的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。