Pytorch|Pytorch神經網路模型訓練

柯頌竹
Programming with Data
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 幫忙更新參數,模型參數更新的步驟為:

  1. 將 input 帶入模型中完成 forward propagation 並得到輸出
  2. 使用損失函數計算目標值
  3. 使用 loss.backward() 完成 back propagation(注意:此時參數尚未更新)
  4. 使用 optimizer.step() 更新參數
  5. optimizer.zero_grad() 清理目前參數上所殘留的梯度,並開始下一個 iteration 的計算

--

--

柯頌竹
Programming with Data

熱愛自由行、參觀各種形式的展覽,踏上過20個國家的領土。歡迎詢問各種在歐洲自由行的問題。偶爾分享一下資料分析的讀書筆記。