caffe教程翻譯 Loss

2021-07-10 19:19:47 字數 1448 閱讀 6206

與絕大多數的機器學習引擎一樣,caffe是由乙個lossfunction(損失函式)驅動的。loss function也稱為 error function,cost function或者objective function。loss function利用模型中的引數(比如模型中網路的weights-權重引數)運算得出乙個(標量)結果,這個結果表明引數設定的badness,通過最小化loss function得出的badness,來優化演算法,達到學習的目標。

caffe中的loss是由net的forward pass計算得出的。每乙個layer根據輸入的blobs計算得到輸出的blobs。某些layer的輸出會被用於loss function計算badness。對於one-versus-all classification task(多分類問題),乙個經典的loss function是softmaxwithloss function(廣義線性回歸分析損失函式)。如下定義:

layer

在softmaxwithloss function中,輸出是乙個標量,計算的是**值(pred)與實際值(label)之間的平均誤差(loss)。

對於有多個layer組成的net而言(例如乙個由softmaxwithloss layer和euclideanloss layer組成的net),loss weights(權重)用來表徵不同layer產生的loss的重要性。

caffe裡面的約定,layer名稱中以loss結尾表示這是乙個會產生loss的layer,除此之外,其他的layer只是單純的用於中間計算。然而,任何乙個layer都可以被用於產生loss,如果為layer產生的每乙個output blob新增乙個屬性:loss_weight: 的話。每乙個loss layer都有乙個隱含的loss weight,對於第乙個top/output,loss weight是1,對於其他的top/output,loss weight是0;其他型別layer隱含的loss weight都是0。所以上述的softmaxwithloss layer也可以寫成:

layer

然而,反向迭代時,乙個layer可以賦予乙個非零的loss weight,用於調整中間layer產生的一些資料、引數。對於不止乙個輸出(top)的layer(對應的有非零的loss weight),輸出的loss是summing over all entries of the blob(對所有輸出-blob的loss的和)。

caffe最後輸出的loss,是由net中所有的loss加權得到的,如下所示(偽**):

loss := 0

for layer in layers:

for top, loss_weight in layer.tops, layer.loss_weights:

loss += loss_weight * sum(top)

本文摘自:

Caffe官方教程翻譯(2) Web demo

這個伺服器demo需要一些python依賴。為了確保你已經滿足了這些依賴庫,請執行 pip install r examples web demo requirements.txt,也要確保你已經成功編譯了caffe的python介面,並且已經新增到你的python路徑 pythonpath 中。s...

caffe 繪製accuracy和loss曲線

我們在訓練的時候會用到caffe buile tools caffe 這個裡面的train這個選項。在輸入之後,正常會顯示訓練日誌的詳細資訊。想要畫出這裡面顯示的loss和accuracy圖,就可以把這些輸出的日誌內容重定向到乙個檔案內,然後利用shell命令檢索出其中的loss和accuracy值...

Caffe 繪製loss和accuracy曲線

這裡我們在ipython notebook中繪製曲線 載入必要的庫 import numpy as np import matplotlib.pyplot as plt matplotlib inline import sys,os,caffe 設定當前目錄 caffe root home bnu ...