caffe2官網信息整理
一.caffe2與caffe的優勢
caffe&caffe2的優劣勢比較
caffe隨着新的計算模式如,分佈式計算,移動計算,降低精度,以及一些非視覺用例上,存在侷限性.
caffe2相比於caffe在以下方向上做了改進:
- 大規模分佈式訓練一流支持
- 移動端部署
- 除了CPU和CUDA外新硬件的支持
- 靈活的使用未來的新特性,如量化計算
- 來自facebook應用的大規模壓力測試
caffe2的新特性
最基礎的新單元是operators,你可以認爲這個是來自caffe layer的更加靈活版本.caffe2有400個不同的操作符並且提供了指導方便社區創建和貢獻.更多信息查看 operators information和 入門教程
二.安裝方式
使用anaconda安裝非常方便:
anaconda官網
具體運行命令如下:
conda install pytorch-nightly=1.0.0.dev20190328 -c pytorch
其中 -c 表示選擇哪個下載通道(channel)
而具體下載哪個版本需要根據你的cuda 和 cudnn版本來定 可以使用
anaconda search pytorch-nightly
來查看
三.學習資料
- 使用預訓練的神經網絡 (簡單)
- 創建自己的神經網絡(中等難度)
- 使用深度學習創建按自己的app(進階)
初接觸深度學習
邁克爾·尼爾森(Michael Nielsen)撰寫的免費的神經網絡和深度學習在線草案對此進行了廣泛介紹。 如果您是該領域的新手,那麼有關使用神經網絡以及反向傳播如何工作的章節尤其有用。
從代碼和循環鏈路的角度來解釋,參考 斯坦福大學的 andrej karpathy Hacker’s Guide to Neural Networks
在機器學習領域有豐富經驗的研究人員
CVPR ‘14的視覺深度學習教程對於研究人員來說是一個很好的輔助教程。 在掌握了Caffe教程的框架和實踐基礎之後,請在CVPR ‘14教程中探索基本思想和高級研究方向。
這些最新的學術教程涵蓋了機器學習和視覺研究人員的深度學習:
- 深度學習教程 by Yann LeCun (NYU, Facebook) and Marc’Aurelio Ranzato (Facebook). ICML 2013 tutorial.
- LISA深度學習教程 by LISA實驗室 Yoshua Bengio
四.教學和示例腳本
教學代碼:
git clone --recursive https://github.com/caffe2/tutorials caffe2_tutorials
初始使用caffe2可以通過 /caffe2/python/examples 來熟悉:
- char_rnn.py :生成循環卷積神經網絡,該網絡將對您輸入的文本進行採樣並隨機生成類似樣式的文本.RNN and LSTM page 是腳本使用更多的信息.
*imdb_create_example.py 創建一個包含隨機圖像和標籤的LMDB數據庫,可以使用此作爲基礎來編寫自己的數據導入. - resnet50_trainner.py resnet-50的並行多GPU訓練, 如:可以使用其訓練imagenet數據. 更多信息可以查看Synchronous SGD page
初學者教程
模型和數據(primer)
剛接觸caffe和深度學習,從這裏開始發現你可以使用的不同的模型和數據集
加載預訓練模型
利用Model Zoo的優勢,獲取一些經過預先訓練的模型,然後將其用於試運行。 本教程提供了一組準備就緒的不同模型,並將向您展示準備模型和啓動神經網絡的基本步驟。 然後,您可以對它們進行一些圖像或其他測試,並查看它們的性能。
圖片預處理流程
瞭解如何使您的圖像準備好以吸收到預先訓練的模型中,或作爲針對其他數據集的測試圖像。 從手機到網絡攝像頭再到新的醫學圖像,您將需要考慮圖像攝取渠道,以及在任何類型的圖像分類過程中,爲了提高速度和準確性,都需要進行哪些轉換。
- resizing
- rescaling
- HWC to CHW
- RGB to BRG
- image prep for Caffe2 ingestion
初次使用caffe2
caffe和caffe2轉換
介紹caffe2 以及如何 講caffe模型轉換成爲caffe2的模型
入門教程
本後續教程將從Blob,Caffe2工作區和張量開始。 它涵蓋了網絡和具體操作,以及如何建立一個簡單的模型並執行它。
caffe2基礎-workspaces,operators,nets
這個IPython教學介紹caffe2的基礎組件:
- workspaces
- operators
- Nets
構建模型
另一個後續教學介紹brew,易於使用API創建模型,將學習到:
- Operators vs. helper functions
- brew and arg_scope
- 制定自定義助手功能
Toy Regression - 繪製線和隨機數據
這個教學顯示以線性迴歸爲主題的更多CAFFE2特徵
- 生成一些隨機數據作爲模型輸入
- 使用這些數據創建一個網絡
- 自動訓練模型
- 以網絡學到的情況下,檢查隨機梯度下降的結果以及ground truth的參數的變化.
中級教程
MNIST-手寫數字識別
這份教學是一個小的卷積神經網絡(CNN)可以識別手寫字.訓練並測試CNN,我們使用來自MNIST數據集手寫圖像.這個數據集有來自500個不同的人寫的6萬張圖像用於訓練CNN. 另外1萬張測試圖像用於檢查CNN訓練的準確度.
創建你的數據集
動手操作處理caffe2需要的數據.示例使用虹模數據
進階教程
使用caffe2進行多GPU訓練
本教學探索多GPU訓練.我們將向您展示一個基本結構,該結構使用data_parallel_model快速處理ImageNet數據庫的一個子集,其設計與ResNet-50模型相同。我們還將有機會深入瞭解Caffe2的一些C++運算符,它們可以有效地處理圖像管道,構建ResNet模型,在單個GPU上進行訓練並顯示data_parallel_model所包含的一些優化,最後,我們將 放大並展示如何並行化模型,以便可以在多個GPU上運行它。
操作符
Operators是caffe2中的一個基本的計算單元.
編寫你自己的教程
Have a great tutorial that you’ve created or have some ideas? Let’s chat about it - create an Issue to discuss it on Github. The project’s Tutorials repository has more info or you can go straight to Create a Pull Request with your new tutorial.
編寫你自己的操作符
Fantastic idea! Write custom operators and share them with the community! Refer to the guide on writing operators:
Guide for creating your own operators
信息來源
https://caffe2.ai/docs/tutorials