Caffe tutorial 之 前向與反向傳播
阿新 • • 發佈:2019-01-26
前向與反向傳播
前向與後向傳播是網路中重要的計算部分。
接下來以簡單的邏輯迴歸分類器為例介紹。
前向傳播用於計算推理過程中給定輸入的輸出。在前向傳播中,Caffe將每層的計算進行組合從而得到模型所代表的“函式”。此過程由底向上進行。
資料x經過全連線層(內積層)生成
反向過稱用於計算給定損失的梯度。在反向傳播中,Caffe將每層的梯度反向組合以自動計算整個模型的梯度。此即反向傳播,此過程由頂向下進行。
反向過程起始於損失值並且計算輸出
這些計算會根據模型的計算立即執行: Caffe會自動執行前向及後向傳播。
- Net::Forward()和 Net::Backward()方法計算前向、後向傳播,而Layer::Forward()和Layer::Backward()則是計算每一步的前向與後向傳播。
- 每層含有forward_{cpu,gpu}() 和backward_{cpu,gpu}()根據計算模式來計算其每一步的傳播過程。使用者可以根據實際情況,只實現層的CPU或GPU模式。
Solver第一次進行前向傳播產生輸出和損失,之後進行反向傳播算得模型梯度,之後根據梯度更新模型引數以最小化損失。通過將Solver、Net和Layer的分離,從而使Caffe模組化,易於開發。
Caffe中不同型別的層的前向和反向傳播的細節,請參見layer catalogue。