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