日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

caffe基础(7): 命令行解析

發(fā)布時(shí)間:2024/9/21 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 caffe基础(7): 命令行解析 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

caffe的運(yùn)行提供三種接口:c++接口(命令行)、Python接口和matlab接口。本文先對命令行進(jìn)行解析,后續(xù)會依次介紹其它兩個(gè)接口。

caffe的c++主程序(caffe.cpp)放在根目錄下的tools文件夾內(nèi), 當(dāng)然還有一些其它的功能文件,如:convert_imageset.cpp, train_net.cpp, test_net.cpp等也放在這個(gè)文件夾內(nèi)。經(jīng)過編譯后,這些文件都被編譯成了可執(zhí)行文件,放在了 ./build/tools/ 文件夾內(nèi)。因此我們要執(zhí)行caffe程序,都需要加?./build/tools/ 前綴。

如:

[plain] view plaincopy
  • ./build/tools/caffe?train?--solver=examples/mnist/train_lenet.sh??
  • caffe程序的命令行執(zhí)行格式如下:

    [plain] view plaincopy
  • caffe?<command>?<args>??
  • 其中的<command>有這樣四種:

    • train
    • test
    • device_query
    • time

    對應(yīng)的功能為:

    train----訓(xùn)練或finetune模型(model),

    test-----測試模型

    device_query---顯示gpu信息

    time-----顯示程序執(zhí)行時(shí)間

    其中的<args>參數(shù)有:

    • -solver
    • -gpu
    • -snapshot
    • -weights
    • -iteration
    • -model
    • -sighup_effect
    • -sigint_effect

    注意前面有個(gè)-符號。對應(yīng)的功能為:

    -solver:必選參數(shù)。一個(gè)protocol buffer類型的文件,即模型的配置文件。如:

    [plain] view plaincopy
  • ./build/tools/caffe?train?-solver?examples/mnist/lenet_solver.prototxt??
  • -gpu: 可選參數(shù)。該參數(shù)用來指定用哪一塊gpu運(yùn)行,根據(jù)gpu的id進(jìn)行選擇,如果設(shè)置為'-gpu all'則使用所有的gpu運(yùn)行。如使用第二塊gpu運(yùn)行:

    [plain] view plaincopy
  • ./build/tools/caffe?train?-solver?examples/mnist/lenet_solver.prototxt?-gpu?2??
  • -snapshot:可選參數(shù)。該參數(shù)用來從快照(snapshot)中恢復(fù)訓(xùn)練。可以在solver配置文件設(shè)置快照,保存solverstate。如:

    [plain] view plaincopy
  • ./build/tools/caffe?train?-solver?examples/mnist/lenet_solver.prototxt?-snapshot?examples/mnist/lenet_iter_5000.solverstate??
  • -weights:可選參數(shù)。用預(yù)先訓(xùn)練好的權(quán)重來fine-tuning模型,需要一個(gè)caffemodel,不能和-snapshot同時(shí)使用。如:

    [plain] view plaincopy
  • ./build/tools/caffe?train?-solver?examples/finetuning_on_flickr_style/solver.prototxt?-weights?models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel??
  • -iterations: 可選參數(shù),迭代次數(shù),默認(rèn)為50。 如果在配置文件文件中沒有設(shè)定迭代次數(shù),則默認(rèn)迭代50次。

    -model:可選參數(shù),定義在protocol buffer文件中的模型。也可以在solver配置文件中指定。

    -sighup_effect:可選參數(shù)。用來設(shè)定當(dāng)程序發(fā)生掛起事件時(shí),執(zhí)行的操作,可以設(shè)置為snapshot, stop或none, 默認(rèn)為snapshot

    -sigint_effect: 可選參數(shù)。用來設(shè)定當(dāng)程序發(fā)生鍵盤中止事件時(shí)(ctrl+c), 執(zhí)行的操作,可以設(shè)置為snapshot, stop或none, 默認(rèn)為stop

    ?

    剛才舉例了一些train參數(shù)的例子,現(xiàn)在我們來看看其它三個(gè)<command>:

    test參數(shù)用在測試階段,用于最終結(jié)果的輸出,要模型配置文件中我們可以設(shè)定需要輸入accuracy還是loss. 假設(shè)我們要在驗(yàn)證集中驗(yàn)證已經(jīng)訓(xùn)練好的模型,就可以這樣寫

    [plain] view plaincopy
  • ./build/tools/caffe?test?-model?examples/mnist/lenet_train_test.prototxt?-weights?examples/mnist/lenet_iter_10000.caffemodel?-gpu?0?-iterations?100??
  • 這個(gè)例子比較長,不僅用到了test參數(shù),還用到了-model, -weights, -gpu和-iteration四個(gè)參數(shù)。意思是利用訓(xùn)練好了的權(quán)重(-weight),輸入到測試模型中(-model),用編號為0的gpu(-gpu)測試100次(-iteration)。

    time參數(shù)用來在屏幕上顯示程序運(yùn)行時(shí)間。如:

    [plain] view plaincopy
  • ./build/tools/caffe?time?-model?examples/mnist/lenet_train_test.prototxt?-iterations?10??
  • 這個(gè)例子用來在屏幕上顯示lenet模型迭代10次所使用的時(shí)間。包括每次迭代的forward和backward所用的時(shí)間,也包括每層forward和backward所用的平均時(shí)間。

    [plain] view plaincopy
  • ./build/tools/caffe?time?-model?examples/mnist/lenet_train_test.prototxt?-gpu?0??
  • 這個(gè)例子用來在屏幕上顯示lenet模型用gpu迭代50次所使用的時(shí)間。

    [plain] view plaincopy
  • ./build/tools/caffe?time?-model?examples/mnist/lenet_train_test.prototxt?-weights?examples/mnist/lenet_iter_10000.caffemodel?-gpu?0?-iterations?10??
  • 利用給定的權(quán)重,利用第一塊gpu,迭代10次lenet模型所用的時(shí)間。

    device_query參數(shù)用來診斷gpu信息。

    [plain] view plaincopy
  • ./build/tools/caffe?device_query?-gpu?0??
  • 最后,我們來看兩個(gè)關(guān)于gpu的例子

    [plain] view plaincopy
  • ./build/tools/caffe?train?-solver?examples/mnist/lenet_solver.prototxt?-gpu?0,1??
  • ./build/tools/caffe?train?-solver?examples/mnist/lenet_solver.prototxt?-gpu?all??
  • 這兩個(gè)例子表示: 用兩塊或多塊GPU來平行運(yùn)算,這樣速度會快很多。但是如果你只有一塊或沒有g(shù)pu, 就不要加-gpu參數(shù)了,加了反而慢。

    最后,在Linux下,本身就有一個(gè)time命令,因此可以結(jié)合進(jìn)來使用,因此我們運(yùn)行mnist例子的最終命令是(一塊gpu):

    [plain] view plaincopy
  • $?sudo?time?./build/toos/caffe?train?-solver?examples/mnist/lenet_solver.prototxt??
  • 總結(jié)

    以上是生活随笔為你收集整理的caffe基础(7): 命令行解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。