1. 程式人生 > >為了caffe(5)學人家部落格的 接上一篇

為了caffe(5)學人家部落格的 接上一篇

為了caffe(5)學人家部落格的

開機了, 先測試,,,每次開機都要這樣,,,,很關鍵

[email protected]:~/NVIDIA_CUDA-7.5_Samples/bin/x86_64/linux/release$ ./deviceQuery

./deviceQuery Starting...

 CUDA Device Query (Runtime API) version (CUDART static linking)

modprobe: FATAL: Module nvidia-uvm not found.

cudaGetDeviceCount returned 30

-> unknown error

Result = FAIL

掛載uvm

再測試[email protected]:~/NVIDIA_CUDA-7.5_Samples/bin/x86_64/linux/release$ ./deviceQuery

得到正確結果啦

下一步  學習第19篇文章

ps:在網頁python jupyter中  報錯不明顯,崩潰了,不能查錯,,僅作好看,試試ipython,,ipython也不好用僅僅多了程式碼補全,連上下移動都不行啊

沒做完整個過程,,知道迭代次數越多,  精確度基本上是在上升就行了。。。  

學習第20篇文章  Caffe學習系列(20):用訓練好的caffemodel來進行分類

caffe程式自帶有一張小貓圖片,存放路徑為caffe根目錄下的 examples/images/cat.jpg, 如果我們想用一個訓練好的caffemodel來對這張圖片進行分類,那該怎麼辦呢? 如果不用這張小貓圖片,換一張別的圖片,又該怎麼辦呢?如果學會了小貓圖片的分類,那麼換成其它圖片,程式實際上是一樣的。

開發caffe的賈大牛團隊,利用imagenet圖片和caffenet模型訓練好了一個caffemodel(這個模型迭代了30多萬次,在23章裡又提到了這個),  供大家下載。要進行圖片的分類,這個caffemodel是最好不過的了。所以,不管是用c++來進行分類,還是用python介面來分類,我們都應該 準備這樣三個檔案:

ps:caffenet是什麼?大概就是一種網路結構模型吧,就像lenet是一種網路結構模型,,caffenet就是一個名字,這個名字寫在prototxt檔案裡面,關聯著資料集檔案(而資料集有一個特定的大小),所以在生成caffemodel檔案時,這個caffemodel檔案就對應一個有特定大小的資料集

1、caffemodel檔案。 

2、均值檔案。

有了caffemodel檔案,就需要對應的均值檔案,在測試階段,需要把測試資料減去均值。

3、synset_words.txt檔案

在呼叫指令碼檔案下載均值的時候,這個檔案也一併下載好了。裡面放的是1000個類的名稱。

# sudo ./build/examples/cpp_classification/classification.bin \

  models/bvlc_reference_caffenet/deploy.prototxt \   

  models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel \  

  data/ilsvrc12/imagenet_mean.binaryproto \

  data/ilsvrc12/synset_words.txt \

  examples/images/cat.jpg

命令很長,用了很多的\符號來換行。可以看出,從第二行開始就是引數,每行一個,共需要4個引數

執行成功後,輸出top-5結果:

---------- Prediction for examples/images/cat.jpg ----------

0.3134 - "n02123045 tabby, tabby cat"

0.2380 - "n02123159 tiger cat"

0.1235 - "n02124075 Egyptian cat"

0.1003 - "n02119022 red fox, Vulpes vulpes"

0.0715 - "n02127052 lynx, catamount"

即有0.3134的概率為tabby cat, 有0.2380的概率為tiger cat ......

也可以用python,  既可以自己寫python來實現上面的功能(樓主的程式碼,我大概能懂,細節不懂),也可以用人家寫好的pyton檔案(要修改一下,不知道樓主是怎麼知道應該怎麼修改的)

Caffe學習系列(21):caffe圖形化操作工具digits的安裝與執行

nvidia為了賣出更多的顯示卡,對深度學習的偏愛真是亮瞎了狗眼。除了cudnn, 又出了digits,真是希望小學生也能學會深度學習,然後去買他們的卡。

nvidia digits是一款web應用工具,在網頁上對caffe進行圖形化操作和視覺化,用於caffe初學者來說,幫助非常大。

可以由圖片,生成lmdb檔案,,

可以建立模型,可以輸入一張圖片來進行測試,會得到可能對應的圖片的概率,一切都是網頁操作,並且還有圖表啥的,視覺化,一目瞭然。。。

caffe團隊用imagenet圖片進行訓練,迭代30多萬次,訓練出來一個model。這個model將圖片分為1000類,應該是目前為止最好的圖片分類model了。

假設我現在有一些自己的圖片想進行分類,但樣本量太小,可能只有幾百張,而一般深度學習都要求樣本量在1萬以上,因此訓練出來的model精度太低,根本用不上,那怎麼辦呢?

那就用caffe團隊提供給我們的model吧。

因為訓練好的model裡面存放的就是一些引數,因此我們實際上就是把別人預先訓練好的引數,拿來作為我們的初始化引數,而不需要再去隨機初始化 了。圖片的整個訓練過程,說白了就是將初始化引數不斷更新到最優的引數的一個過程,既然這個過程別人已經幫我們做了,而且比我們做得更好,那為什麼不用他 們的成果呢?

使用別人訓練好的引數,必須有一個前提,那就是必須和別人用同一個network,因為引數是根據network而來的。當然,最後一層,我們是可 以修改的,因為我們的資料可能並沒有1000類,而只有幾類。我們把最後一層的輸出類別改一下,然後把層的名稱改一下就可以了。最後用別人的引數、修改後 的network和我們自己的資料,再進行訓練,使得引數適應我們的資料,這樣一個過程,通常稱之為微調(fine tuning).(就算是這樣,我的顯示卡有能裡完成這個計算嗎????caffenet可是277*277的的最小圖片大小啊)

樓主使用digits做的。。。

如果你不用digits,而直接用命令操作,那就更簡單,只需要修改一個train_val.prototxt的配置檔案就可以了,其它都是一樣的操作。

你好,我是新手,就是想問一下不用digits如何進行微調,改了train_val.prototxt的配置檔案之後再做什麼呢。

#12樓[樓主]
不用digits,就要用命令列,可參考我的《Caffe學習系列(10):命令列解析》,裡面有提到如何微調

特別注意:

#15樓 2016-05-10 20:37 | weichang88688  

您好,看到您的教程學到 很多,我沒用digst,直接用的命令操作,但是由於電腦原因,我在做圖片的lmdb的時候吧圖片設定成125~125的,然後執行的時候就出現了錯誤錯 誤內容是:Check failed: datum_height == data_mean_.height() (125 vs. 256) ,我知道我就用125~125的不用256的應該如何修改呢?謝謝

#16樓[樓主] 2016-05-12 14:19 | denny402  

@ weichang88688
模型一旦確定,圖片的尺寸也就定了。比如lenet模型圖片尺寸是28*28, alex模型是256*256。如果你想使用alex模型,又不想改變圖片大小 ,肯定不行的,要麼你把圖片resize成256,要麼修改模型。

最後我要說出來:我是用了一個什麼樣的資料集(多少訓練資料,多少測試資料,一共分為幾類),用了什麼樣的訓練驗證prototxt檔案,什麼樣的solver.prototxt檔案,什麼樣的網路(leNet?axleNet?googleNet?)來訓練的,生成一個caffemodel,

然後說我自己的顯示卡610能力有限,只能訓練小的模型,而且精度不高,我試著用稍微大一點圖片,就會立即崩潰,有時候可以選用人家的模型,修改一下,用到自己的應用上面

然後我用這個caffemodel,,配合一個什麼樣的deplay檔案,對什麼圖片進行分類,識別測試?怎麼測試的?用的是c++命令列?還是用的python   是不是參加了kaggle

看完了樓主的文章,只能吹mnist的牛,

問:你是怎麼理解caffe? 

答;

引用  我的 為了caffe(六)文章裡面的:

ps: 訓練和測試的順序是什麼樣的?  

不是:  

 先訓練跑一遍,再測試跑一遍,跑測試的時候不停的出accuracy和loss,這樣的話accuracy和loss就不會變化了,跟觀察到的不一樣

我猜是:   

先跑一遍完整的訓練集資料,這時候得到了一個caffemodel(caffemodel本質上是一堆引數,這些引數不一定會以caffemodel的檔案格式儲存下來,這就涉及到引數snap_shot,它表示多少次完整訓練之後,換個說法,多少代之後儲存一次caffemodel檔案),對於這個caffemodel跑一遍完整的測試資料,得到一個accuracy和loss,再跑一遍完整的訓練集資料,這時候又可以得到了一個caffemodel,再一次對於這個caffemodel跑一遍完整的測試資料,就再一次得到一個accuracy和loss,一般來說這個accuracy上升和loss降低。。。。這也符合觀察到的情況

pss: 那麼這個訓練和測試的過程怎麼對應,網路圖呢?比如在mnsit上,以上說的這些怎麼對應leNet的那個網路結構??  

我猜的:

那就是無數次的執行這個網路圖,從上往下的, 第一次執行之後這個網路中會有很多引數,第二次這些圖輸入之後,網路中的引數就改變了,優化了,所以就會使得accuracy上升和loss降低。無數次輸入圖片,改變引數之後,網路達到一個很優化的各個引數。如果這時候測試它,會得到很高accuracy和很低的loss。

這個引數就是卷積核的數值,卷積核大小是固定的,但是它的每個點上的數值,是一次次優化最終確定的。還有不但是卷積核的數值,還有偏置量也是通過優化確定的。。

相關推薦

為了caffe5學人部落

為了caffe(5)學人家部落格的 開機了, 先測試,,,每次開機都要這樣,,,,很關鍵 [email protected]:~/NVIDIA_CUDA-7.5_Samples/bin/x86_64/linux/release$ ./deviceQuery

部落搬家系列-爬取部落部落

部落格搬家系列(三)-爬取部落格園部落格 一.前情回顧  部落格搬家系列(一)-簡介:https://blog.csdn.net/rico_zhou/article/details/83619152  部落格搬家系列(二)-爬取CSDN部落格:https://bl

Django搭建部落:為部落新增程式碼高亮顯示和 md文件支援

一、用到的模組 Markdown pygments re 安裝直接使用 pip 安裝最新版本即可 二、支援的 markdown格式 目前只支援 Typora編輯器所支援的 markdown格式。 特別需要注意的是:程式碼塊必須使

hexo乾貨系列:將hexo部落同時託管到github和coding

前言 之前我們把hexo託管在github,但是畢竟github是國外的,訪問速度上還是有點慢,所以想也部署一套在國內的託管平臺,之前查資料聽說gitcafe,但是聽說gitcafe已經被coding收購了,所以就決定部署到coding。 查詢了多方資料,終於鼓搗出了本地一次部署,同時更新到github以及c

簡易部落開發8----django1.9 部落部署到pythonanywhere

準備工作 首先需要註冊一下,pythonanywhere的免費賬戶有一定的限制,只能建立一個web app,不能繫結獨立域名,不能通過ssh連線,不過只是搭一個project也是夠用了。 註冊成功之後直接轉到dashboard頁面 幾個tab,Console是新建一個控制檯,用於操作伺服

zabbix nginx監控部落

接上一篇部落格 新增nginx監控 首先在server1上安裝nginx [[email protected] ~]# ls anaconda-ks.cfg nginx-1.8.0-1.el6.ngx.x86_64.rpm install.

Django學習——實現個人部落網站

Django網站快速入門 2.1 個人部落格網站規劃 個人部落格具有以下功能: 專案名稱mblog 通過admin管理介面張貼、編輯以及刪除貼文 使用Bookstrap網頁框架 在主頁中顯示每篇文章的標題,及發帖日期 建立專案: dja

這是個充滿廣告的文章,我怎麼建帶谷歌廣告adsense的獨立部落

片頭預警:這是個隨時會插播廣告的文章,插的很巧妙(shengying),大家請謹慎閱讀,一不謹慎,那可費錢了。  &nb

搭建自己的技術部落系列把 Hexo 部落部署到 GitHub

1、在GitHub上建一個新倉庫 ​ 2、配置Git的SSH KEY 生成SSH新增到GitHub 回到你的git bash中, git config --global user.name "yourname" git config --global user.email "youremail" 這裡的y

部落開發簡記2:給部落找個域名

承接上一節,給ubuntu上的django更新一下: ./manage.py migrate 好了,我連公網ip都有了,我可不想每次都以ip來訪問我的網站,那怎麼弄一個域名呢? (一)申請域名 不必研來研去了,直接在阿里雲提供的服務中購買域名吧,但在下單前,你先要完成域名的資訊模板的稽核,意思是,你要填完

SparkStreaming17:updateStateByKey運算元,保留次計算結果

1.實現功能 如果SparkStreaming程式斷掉,重新啟動,可以讀取斷掉之前的結果。通過,使用SparkStreaming的HA:checkpoints。 2.程式碼 package _0809kafka //import com.beifeng.util.

JS程式設計小題目詳解

一、題目: 編寫一個網頁檔案,使用一個表單讓使用者填寫購貨訂單。填寫的資訊包括姓名、電話、商品名稱、單價、數量和金額。當提交表單時,要求: (1)商品名稱和單價只能讓使用者選擇; (2)數量為0時不予提交; (3)金額在提交時自動計算,並與所填的"金額"比較; (4

生成式對抗網路GAN如何快速理解?這裡有最直觀的解讀

原文來源:freeCodeCamp作者:Thalles Silva「雷克世界」編譯:嗯~阿童木呀

【NOIP2018遊記】鬼知道是不是這個部落的最後隨筆......

2018/12/29 在2019到來之際終於想起忘記寫NOIP2018的遊記了......作為高三旅遊狗,題解什麼的寫不了寫寫遊記還是在能力範圍之內的qvq。     初賽 完善程式基本不會QAQ,太久了都忘得差不多了,憑著選擇題和看程式寫結果兩個版塊優異的成績+弱市成功水進複

影象分割的關鍵技術:一站式caffe工程實踐連載5

知識引入 本次主要和大家分享的是影象分割中的關鍵技術,首先對任務分析,一般在正式開始影象任務之前,我們會對任務的整個的技術方案進行一個評估,評估之後我們會選擇比較簡單比較穩妥的方案,也就是精簡我們的任務。我們的任務是一個影象分割的任務,影象分割任務與影象分類任務不同,影象分

caffe入門學習5:繪製網路結構圖

網路配置都是在prototxt檔案中看起來不直觀,如果能直接看到各層的連線圖就了,Caffe提供了這樣的工具。本文就是描述我用draw_net.py繪製網路結構圖的踏坑過程。 1、安裝graphviz 2)安裝程式 執行安裝程式 完成後將路徑下的

caffe將網路模型由protot轉換成變成網路結構模型圖--caffe學習5

首先需要安裝graphviz,再安裝pydot 在conda命令下: conda install graphviz conda install pydot python/draw_net.py這個檔案,就是caffe官方提供的用來繪製網路模型的。也就是

用flask開發個人部落5——flask中的四種響應型別

        在之前的程式碼中,檢視函式都返回了一個字串,在實際的開發中其返回的html檔案內容,本質其實也是字串。下面總結下flask中可以作為響應的幾種方法。 1、響應字串。         這個在前面已經說明過,但是需要指出的是,其實每次檢視函式在響應時還可以附帶狀

深度學習Caffe實戰筆記5Windows caffe平臺跑Siamese mnist資料集

前幾篇部落格介紹了環境搭建,caffe跑lenet,alexnet,cifar10,基礎的一些操作都介紹的很詳細了。這篇部落格介紹如何使用Siamese網路跑mnist資料集,下一篇介紹如何用Siamese網路跑自己的資料集。說到Siamese網路,這次不哭了,

基於ssm框架的個人部落5--Dao層設計及測試

前臺的頁面完成了一部分,那麼是時候開發Dao層了,前面我們提到了mybatis的逆向工程,也展示了一些逆向生成的一些配置檔案,實體類......現在我們就基於ssm框架,對Dao進行開發,由於程式碼比較簡單,在此不做解釋,直接看註釋。 貼上程式碼 package test