iT邦幫忙

2022 iThome 鐵人賽

DAY 9
1
AI & Data

PyTorch 生態鏈實戰運用系列 第 9

[Day09] Deep Learning with Configuration

  • 分享至 

  • xImage
  •  

前言

本日要介紹的是透過Configuration的方式來管理Deep Learning中的超參數。

超參數(Hyperparameters)

在前面的實作中,我們目前已經可以進行完整的資料前處理、模型訓練以及模型驗證。
在後續模型表現性的調教中,超參數的調整是一種很常見方式,也是十分多的學術論文在研究探討的議題。

那麼,什麼是超參數呢?既然有個超,是不是也有參數(parameters)?以下給一些簡要的介紹:

  • 參數:指那些可以透過演算法的途中,能被更新、或說被學習出來的數值。例如Model weights就是很顯而易見的參數。或給一個最簡單的例子,下面線性回歸式子中的beta_0與beta_1就是個參數,而我們通常用Least Square或是Maximum likelihood去找到最接近符合資料模樣的參數估計。

  • 超參數:通常泛指那些不同於可以從資料中被演算法學習出來的參數,需要透過人工設定的方式所指定的那些數值。

那我們先前的實作中,已經出現了哪些超參數呢?以下為大家簡介:

  • 有進行變數命名的部份
    • BATCH_SIZE : 每批次進行梯度下降的影像數量
    • MAX_EPOCHS : 實驗最多進行幾次 epoch
    • STEPS_IN_EPOCH : 每個epoch進行幾次迭代(通常不設定就是預設完整掃完Training set一次)
  • 沒有進行命名,目前寫死的部份
    • 模型框架 (modified efficient-B0):這裡舉凡骨幹的選擇、各個layer以及是否透過pre-trained weights進行遷移學習(Transfer Learning)都算,可以細部調整的東西可說包山包海。
    • 優化器(optimizer = ADAM)
    • 學習率(learning rate = 1e-4)
    • 驗證模型的指標(Metric = AUROC)

... 不勝枚舉。

上述這些都是超參數的一部分,也因此管理好超參數,事實上就是深度學習開發當中很重要的一項工作。

Configuration File

個人則習慣透過一個YAML的設定檔,來對整個開發工作管理。其中除了超參數以外,也會用來管理一些整套程式碼運行途中需要用到的變數。

yaml檔的設定可以設定成這樣,第一層是功能層,然後才是變數層:

base:
  project: 'iThome2022'
  
make_dataset:
  dataset_from: 'chestmnist'
  tmp_folder: '/tmp'
  save_folder: 'data'
  img_subfilename: 'png'
  dataset_file: 'data/dataset.csv'

train:
  backbone: 'efficientnet-b0'
  batch_size: 128
  max_epochs: 25
  steps_in_epoch: 50
  data_loader:
    num_workers: 8
    prefetch_factor: 166
  loss_function: 'BCEWithLogitsLoss'
  optimizer: 'Adam'
  learning_rate: 0.0001

具體變更可以參考這個commit

實作

接著只要在新的commit底下,加一行使用設定好的hparams.yaml,就可以開始train model了:

# python src/train.py --config=hparams.yaml
----------
epoch 1/25
Training Epoch 14/50 train_loss: 1.8244:  28%|█▋    | 14/50 [00:14<00:28,  1.28it/s]

本日小節

  • 簡介模型中的參數與超參數
  • 利用yaml管理超參數及相關變數

上一篇
[Day08] Model Validation with PyTorch
下一篇
[Day10] Pytorch Lightning
系列文
PyTorch 生態鏈實戰運用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言