Pytorch|Pytorch神經網路模型訓練
Published in
Jan 14, 2021
神經網路基礎模型可見此文,本文著重於神經網路訓練的基本元素,包含:model, loss function, optimizer。
Model
首先我們先定義一個全連接層,包含 nn.Linear,Dropout,BatchNormalization 以及 activation function (這裡使用 LeakyReLU),輸出層單純使用 nn.Linear 加上不同分類任務輸出需要使用到的 activation function,二元分類使用 nn.Sigmoid ,多分類使用 nn.Softmax。
Loss
- 二分類常用loss function:BCELoss, BCEWithLogitsLoss
- 多分類常用loss function:NLLLoss, LogSoftmax, CrossEntropyLoss
- 回歸常用的loss function:MSELoss,L1Loss,SmoothL1Loss
Optimizer
當我們透過損失函數的計算得到目標值之後,就需藉助 optmizer 幫忙更新參數,模型參數更新的步驟為:
- 將 input 帶入模型中完成 forward propagation 並得到輸出
- 使用損失函數計算目標值
- 使用 loss.backward() 完成 back propagation(注意:此時參數尚未更新)
- 使用 optimizer.step() 更新參數
- optimizer.zero_grad() 清理目前參數上所殘留的梯度,並開始下一個 iteration 的計算