caffe2 介绍


Caffe2的特性


Caffe2框架可以通过一台机器上的多个GPU或具有一个及多个GPU的多台机器来进行分布式训练。

  • 也可以在iOS系统、Android系统和树莓派(Raspberry Pi)上训练和部署模型。

  • 只需要运行几行代码即可调用Caffe2中预先训练好的Model Zoo模型。

  • Caffe2框架已经应用在Facebook平台上。

  • NVIDIA(英伟达),Qualcomm(高通),Intel(英特尔),Amazon(亚马逊)和Microsoft(微软)等公司的云平台都已支持Caffe2。

  • GitHub上有Caffe2的源代码

  • Caffe2的首页:http://caffe2.ai/

Facebook 部署 Caffe2 旨在帮助开发人员和研究人员 训练大规模机器学习模型,并在移动应用中提供 AI 驱动的用户体验。现在,开发人员可以获取许多相同的工具,能够在大规模分布式场景训练模型,并为移动设备创建机器学习应用。

Caffe2 是一个兼具表现力、速度和模块性的深度学习框架,是 Caffe 的实验性重构,能以更灵活的方式组织计算。


Caffe2安装


官网上的安装教程

这里写图片描述


依赖库

sudo apt-get update
sudo apt-get install -y --no-install-recommends \build-essential \cmake \git \libgoogle-glog-dev \libprotobuf-dev \protobuf-compiler \python-dev \python-pip                          
sudo pip install numpy protobuf

GPU支持

Ubuntu 16.04

sudo apt-get update && sudo apt-get install wget -y --no-install-recommends
wget "http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_8.0.61-1_amd64.deb"
sudo dpkg -i cuda-repo-ubuntu1604_8.0.61-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda

安装 cuDNN(所有都是 Ubuntu 版本)

CUDNN_URL="http://developer.download.nvidia.com/compute/redist/cudnn/v5.1/cudnn-8.0-linux-x64-v5.1.tgz"
wget ${CUDNN_URL}
sudo tar -xzf cudnn-8.0-linux-x64-v5.1.tgz -C /usr/local
rm cudnn-8.0-linux-x64-v5.1.tgz && sudo ldconfig

可选择的依赖项

# for Ubuntu 16.04
sudo apt-get install -y --no-install-recommends libgflags-dev
# for both Ubuntu 14.04 and 16.04
sudo apt-get install -y --no-install-recommends \
      libgtest-dev \
      libiomp-dev \
      libleveldb-dev \
      liblmdb-dev \
      libopencv-dev \
      libopenmpi-dev \
      libsnappy-dev \
      openmpi-bin \
      openmpi-doc \
      python-pydot
sudo pip install \
      flask \
      graphviz \
      hypothesis \
      jupyter \
      matplotlib \
      pydot python-nvd3 \
      pyyaml \
      requests \
      scikit-image \
      scipy \
      setuptools \
      tornado

检查下面的 Python 部分,并在建立 Caffe2 之前安装可选择的程序包。

mkdir build && cd build
cmake ..
make

Clone & Build

git clone --recursive https://github.com/caffe2/caffe2.git && cd caffe2
make && cd build && sudo make install
python -c 'from caffe2.python import core' 2>/dev/null && echo "Success" || echo "Failure"

通过显示为 Success

出现问题见 gflags.cc’ is being linked both statically and dynamically into this execut


GPU测试执行:

python -m caffe2.python.operator_test.relu_op_test

在/usr/local/caffe2、/home/bids/softwares/caffe2/build(你的build路径)路径生成caffe2的python文件,在/usr/local/lib路径生成库文件。


环境变量设置

具体设置更改对应shell的配置文件

sudo vim ~/.bashrc

添加

export PYTHONPATH=/usr/local:$PYTHONPATH
export PYTHONPATH=$PYTHONPATH:/home/bids/softwares/caffe2/build
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

环境变量生效

source ~/.bashrc

Caffe2 Tutorials


Caffe2 Tutorials Overview

TUTORIAL ON DEEP LEARNING FOR VISION

Hacker’s guide to Neural Networks

Neural Networks and Deep Learning


Caffe2原理


Caffe2 的原理与 Caffe 相同,开发原则可以概括为以下5点:

  • 表达(Expression):模型和优化被定义为纯文本模式(plaintext schema)而不是代码。
  • 速度:对学界和产业界都一样,速度对于最先进的模型和大数据至关重要。
  • 模块化:新任务和设置需要灵活性和扩展性。
  • 开放性:科学和应用进步需要通用代码(common code),参考模型和– 重现性(reproducibility)。
  • 社区:学术研究、startup prototypes 和工业应用通过在 BSD-2 项目中联合讨论和开发,共享实力。


Caffe2和Caffe有何不同?


Caffe2的基本计算单位是Operator。对于适当数量和类型的输入参数,每个Operator都包括所需的计算逻辑。Caffe和Caffe2的总体差异如下图所示:

这里写图片描述

官方提供了从Caffe迁移到Caffe2的教程,据说这个迁移非常简单。


Caffe2和PyTorch有何不同?


Caffe2长于移动和大规模部署。虽然Caffe2新增了支持多GPU的功能,这让新框架与Torch具有了相同的GPU支持能力,但是如前所述,Caffe2支持一台机器上的多个GPU或具有一个及多个GPU的多台机器来进行分布式训练。

PyTorch适合进行研究、实验和尝试不同的神经网络;而Caffe2更偏向于工业应用,而且重点关注在移动端上的表现。

Caffe2视作一种生产力的选择,而Torch视作研究型的选择。


参考文献


Caffe2正式发布!新框架有何不同?贾扬清亲自解答

caffe2 安装与介绍

caffe2

【重磅】Facebook 开源产业级深度学习框架 Caffe2,带来跨平台机器学习工具

Caffe2 Open Source Brings Cross Platform Machine Learning Tools to Developers

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246848.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何向IPython Notebook中导入.py文件

相关文章链接 如何向IPython Notebook中导入.py文件 如何将 ipynb 发布到 blog 中(html, markdown格式) Introducing IPython Notebook Beginner’s IPython Notebook Tutorial Example notebook showing how to do statistics in IPython Notebook next generation sli…

Python 中的numpy 库

待总结 用scikit-learn和pandas学习线性回归 用scikit-learn和pandas学习Ridge回归 待整理的 Numpy & Pandas numpy——主要对其 N 维数组对象有用 http://www.numpy.org/ Pandas数据转为 numpy数据 df_numpyMatrix df.as_matrix() df_numpyMatrixdf.values a([3.23…

Python 中的Pandas库

待总结 用scikit-learn和pandas学习线性回归 用scikit-learn和pandas学习Ridge回归 基于python的数据分析库Pandas pandas——Python 数据分析库,包括数据框架(dataframes)等结构 http://pandas.pydata.org/ 10 Minutes to Pandas&#…

weka和matlab完成完整分类实验

本文 本文简单介绍数据集介绍、weka的使用、weka与LIBSVM、matlab与LIBSVM以及分类的若干细节问题。 1. 数据集介绍 打开网址UCI数据集,如下图。 从右下角可以看到Iris这个数据集,这是使用最多的数据集,目前下载量超过了82万。 打开之后跳…

Python 中的绘图matplotlib mayavi库

python matplotlib 图像可视化 python-data-visualization-course Interactive Web Plotting for Python Interactive Web Plotting for Python-github 待整理的 Matplotlib Introduction to Matplotlib and basic line matplotlib——一个 2D 绘图库,可产生…

python -pass的用法

空语句 熟悉C/C的经常会这样写判断语句: if(ture)expression; else;//do nothing 那在Python里面怎么去表达空语句呢,这时候就用到了pass。 number input(请输入一个数) if number 5:print(your numbers is 5) else:pass 实际…

python -lambda表达式的用法

匿名函数 lambda的意义: 利用lambda我们可以速写函数,不用去定义函数就可以直接使用 y lambda x,z:59*x8*z print(y(2,4)) 从例子中可以看到,lambda的语法结构是: lambda input : output expression lambda的用法比较简单&…

ubuntu 16.04 配置Python2.7 和 Python3.5 同时调用OpenCV

安装OpenCV OpenCV 官网,下载见 SourceForge and GitHub。 若使用官网版本安装不成功,则可试试Github版本。 或者 git clone https://github.com/Itseez/opencv.git 安装依赖库 sudo apt-get -y install libopencv-dev sudo apt-get -y install bui…

生成特定分布随机数的方法:Python seed() 函数numpy scikit-learn随机数据生成

描述 seed() 方法改变随机数生成器的种子,可以在调用其他随机模块函数之前调用此函数。。 语法 以下是 seed() 方法的语法: import random random.seed ( [x] ) 注意:seed(()是不能直接访问的,需要导入 random 模块,然后通过 ra…

shutil.rmtree()

描述 shutil.rmtree() #递归地删除文件 如果存在以下树结构 - user- tester- noob- developer- guru 即 user 目录下存在多级子目录 如果要递归删除user\tester 目录的内容,可使用shutil.rmtree()函数 import shutil shutil.rmtree(ruser\tester) mkdir -p fo…

The ntpath module

ntpath module用法示例 import ntpath file "/my/little/pony"print "isabs", ">", ntpath.isabs(file) print "dirname", ">", ntpath.dirname(file) print "basename", ">", ntpath.basena…

python中的glob 模块学习文件路径查找

glob glob.glob(pathname), 返回所有匹配的文件路径列表。它只有一个参数pathname,定义了文件路径匹配规则,这里可以是绝对路径,也可以是相对路径。 import glob glob.glob(rc:/*.txt) 这里就是获得C盘下的所有txt文件glob.glob(…

python os模块 常用命令

os 模块用法示例 python编程时,经常和文件、目录打交道,这是就离不了os模块。os模块包含普遍的操作系统功能,与具体的平台无关。以下列举常用的命令 1. os.name()——判断现在正在实用的平台,Windows 返回 ‘nt; Linux 返回’pos…

pandas.DataFrame.iterrows

iterrows DataFrame.iterrows()[source] Iterate over DataFrame rows as (index, Series) pairs. 迭代(iterate)覆盖整个DataFrame的行中,返回(index, Series)对>>> df pd.DataFrame([[1, 1.5]], columns[int, float]) >>> row next(df.iterr…

scipy.ndimage.zoom上采样与下采样

插值 Bilinear interpolation would be order1, nearest is order0, and cubic is the default (order3). 举例说明 import numpy as np import scipy.ndimagex np.arange(64).reshape(8,8)print Original array: print xprint Resampled by a factor of 2 with nearest i…

Python 进度条 tqdm

用法 tqdm(读音:taqadum, تقدّم)在阿拉伯语中的意思是进展。tqdm可以在长循环中添加一个进度提示信息,用户只需要封装任意的迭代器 tqdm(iterator),是一个快速、扩展性强的进度条工具库。 from tqdm import tqdm…

sublime-text-3设置输入中文方法

以下方法在 ubutun16.04 中亲测可行,subl版本为 3126 。 一.下载源文件 源文件github链接地址为 https://github.com/jfcherng/my_scripts 或见CSDN下载。 二.安装fcitx输入法 打开终端,输入命令 sudo apt-get install -y fcitx fcitx-im 安装 fcitx…

你真的懂TensorFlow吗?Tensor是神马?为什么还会Flow?

本文的ipynb 格式见CSDN下载。 0维张量/标量 标量是一个数字 1维张量/向量 1维张量称为“向量”。 2维张量 2维张量称为矩阵 3维张量 公用数据存储在张量 时间序列数据 股价 文本数据 图片 彩色图片 5D张量 结论 实际上,你可以使用一个数字的张量&…

标签传播算法(Label Propagation)及Python实现

半监督学习(Semi-supervised learning)发挥作用的场合是:你的数据有一些有label,一些没有。而且一般是绝大部分都没有,只有少许几个有label。半监督学习算法会充分的利用unlabeled数据来捕捉我们整个数据的潜在分布。它…

UFLDL教程: Exercise: Sparse Autoencoder

自编码可以跟PCA 一样,给特征属性降维 一些matlab函数 bsxfun:Cbsxfun(fun,A,B)表达的是两个数组A和B间元素的二值操作,fun是函数句柄或者m文件,或者是内嵌的函数。在实际使用过程中fun有很多选择比如说加,减等,前面需…