Caffe自己修改訓練方法

2021-07-23 14:14:51 字數 2145 閱讀 4720

1.學習程式的第一步,先讓程式跑起來,看看結果,這樣就會有直觀的感受。

caffe的官網上

caffe | deep learning framework

提供了很多的examples,你可以很容易地開始訓練一些已有的經典模型,如lenet。我建議先從

lenet mnist tutorial

開始,因為資料集很小,網路也很小但很經典,用很少的時間就可以跑起來了。當你看到terminal刷拉拉的一行行輸出,看到不斷減少的loss和不斷上公升的accuracy,訓練結束你得到了99+%的準確率,感覺好厲害的樣子。你可以多跑跑幾個例子,熟悉一下環境和介面。

2.單步除錯,跟著caffe在網路裡流動

當玩了幾天之後,你對caffe的介面有點熟悉了,對已有的例子也玩膩了,你開始想看看具體是怎麼實現的了。我覺得最好的方法是通過單步除錯的方式跟著程式一步一步的在網路裡前向傳播,然後再被當成誤差資訊傳回來。

caffe就像乙個你平常程式設計中project,你可以使用ide或者gdb去除錯它,這裡我們不細說除錯的過程。你可以先跟蹤前向傳播的過程,無非就是從高層次到低層次的呼叫forward函式, solver->net->layer->specific layer (convolution等...).後向傳播也類似,但因為你對caffe裡面的各種變數運算不熟悉,當你跟蹤完前向傳播時可能已經頭暈眼花了,還是休息一下,消化一下整個前向傳播的流程。

安裝ide:

eclipse平台是ibm向開發原始碼社群捐贈的開發框架,它之所以出名並不是因為ibm宣稱投入開發的資金總數 —4千萬美元,而是因為如此巨大的投入所帶來的成果:乙個成熟的、精心設計的以及可擴充套件的體系結構。

安裝方法:

sudo apt-get install eclipse-cdt eclipse

剛剛開始你沒有必要對每個layer的計算細節都那麼較真,大概知道程式的運算流程就好,這樣你才可以比較快的對caffe有個大體的把握。

3.個性化定製caffe

到這裡,你已經可以說自己有用過caffe了,但是還不能算入門,因為你還不知道怎麼修改原始碼,滿足自己特定的需求。我們很多時候都需要自己定義新的層來完成特定的運算,這時你需要在caffe裡新增新的層。

你一開肯定無從下手,腦子一片空白。幸運的是caffe github上的wiki

development · bvlc/caffe wiki · github

已經有了教程了,而且這是最接近latest caffe的原始碼結構的教程,你在網上搜到的blog很多是有點過時的,因為caffe最近又重構了**。你可以跟著它的指導去新增自己的層。

雖然你已經知道要在**新增自己的東西了,但你遇到最核心的問題是如何寫下面這四個函式。

你可以先模仿已有的層去實現這四個函式,而且我相信forward函式很快就可以寫出來了,但backward的還是一頭霧水。這時我們就要補補神經網路裡最核心的內容了——backpropagation.

4.理解並實現backpropagation

這個我覺得是與平台無關的,不管你是使用caffe、torch 7,還是theano,你都需要深刻理解並掌握的。因為我比較笨,花了好長時間才能夠適應推導中的各種符號。其實也不難,就是誤差順著chain rule法則流回到前面的層。我不打算自己推導後向傳播的過程,因為我知道我沒有辦法將它表達得很好,而且網上已經有很多非常好的教程了。下面是我覺得比較好的學習步驟吧。

這時你躍躍欲試,回去檢視caffe原始碼裡convolution層的實現,但發現自己好像沒看懂。雖說卷積層和全連線層的推導大同小異,但思維上還是有個gap的。我建議你先去看看caffe如何實現卷積的,caffe作者賈揚清大牛在知乎上的回答在 caffe 中如何計算卷積?讓我茅塞頓開。重點理解im2col和col2im.

這時你知道了convolution的前向傳播,還差一點就可以弄明白後向傳播怎麼實現了。我建議你死磕caffe中convolution層的計算過程,把每一步都搞清楚,經過痛苦的過程之後你會對反向傳播有了新的體會的。在這之後,你應該有能力新增自己的層了。再補充乙個完整的新增新的層的教程****** a caffe layer • computer vision enthusiast

。這篇教程從頭開始實現了乙個angle to sine cosine layer,包含了梯度推導,前向與後向傳播的cpu和gpu函式,非常棒的乙個教程。

口才訓練方法

平時表達的要求 發音準確,吐字清晰,盡量把每個字音都完整發出來。咬字頭 立字腹 圓 收字尾。同時使用鼻 口 喉 胸四腔。說話的聲音要大,速度要快,不要有停頓。表達時要聲情並茂。準確完整生動地表述自己的想法。準確複述轉達別人的話。準確生動地描述景 事 物 人和生活。隨時模仿,要盡量模仿得像,注意對方的...

tesseract ocr訓練方法

tesseract ocr有2和3兩個版本,不同版本訓練方法稍有不同。第3版本的訓練方法官版教程在這裡 trainingtesseract3 第2版的訓練方法官版教程在這裡 trainingtesseract 我使用的是最新的3.01版本的。訓練所需準備 3.一張用來訓練的tiff格式。在不通過訓練...

體能訓練方法

體能訓練的方法 一 耐力訓練 1 長跑 要求為400公尺跑道,女子每次15圈,男子每次20圈,平均速度為每圈不得低於2分20秒。2 負重越野 自己揹負不低於30公斤的背囊 女子為20公斤 在不低於海拔2000公尺的小路 山脊行走,時間為一整天或兩天,每週或兩周一次。3 如果時間和其他條件不允許,也可...