深度学习简析,TensorFlow,Torch,Theano,Mxnet
Deep Learning
“Deep learning is a branch of machine learning based on a set of algorithms that attempt to model high-level abstractions in data by using multiple processing layers with complex structures or otherwise, composed of multiple non-linear transformations”
- Deeplearning大多指的是各种不同类型的Deep Network
- Deep Neural Network
- Deep Belief Network
- etc…
深度学习擅长处理的问题
“深度模型有极为庞大的网络结构,参数够多,学习能力够强,能配合大数据达到惊人的效果。而且,能自动学习特征,避免了“特征工程”这种繁琐的手工劳动。对于图像、音频和文字处理领域有极大的意义。 –xccd”
- 本身可以用于分类和回归
- 信噪比较大,数据较全
- 文字,图片,视频
- 识别图片
- 手写识别(Kaggle)
- 语音识别(讯飞)
GPU
- 显卡的计算核心
- 由NVIDIA由1999年提出
- 代替CPU完成更高效的显示,计算(11~18)
NVIDIA做了什么?
- 贡献GPU的概念
- 为科研机构免费赠送计算显卡
- CUDA(GPU并行计算框架)
- CuDNN(GPU加速的深度学习)
GPU有多快
不同的深度框架
主要的框架
框架名 | 来源 | 语言 | 特点 |
---|---|---|---|
Tensor Flow | Python,C++ | 谷歌出品,必数精品 | |
Torch | IDIAP (Torch) | LUA,C | 速度极快(FB的fbcunn是基于Torch) |
Theano | University of Montreal | Python | 十多个深度学习的包都是由Theano发展而来 |
MXnet | DMLC | Python, R, Julia, Go, JNI | 专业的分布式设计,接口完全 |
当然还有很多比较有名的框架:
- Caffe/Caffe2,作者贾扬清6800+Stars
- convnetjs,基于JS的深度学习框架
- h2o,基于JAVA开发,有python和R的接口.由商业公司H2O.ai开发
- Expresso,拥有GUI界面的框架
Tensor Flow
Linux + Google
# For CPU-only version
$ pip install https://storage.googleapis.com/tensorflow/linux \
/cpu/tensorflow-0.5.0-cp27-none-linux_x86_64.whl
# For GPU-enabled version (only install this version if you have the CUDA sdk installed)
$ pip install https://storage.googleapis.com/tensorflow \
/linux/gpu/tensorflow-0.5.0-cp27-none-linux_x86_64.whl
Tensor Flow
限制计算能力在3.5以上的显卡
- NVidia Titan
- NVidia Titan X
- NVidia K20
- NVidia K40
Theano
安装
sudo apt-get install python-numpy python-scipy \
python-dev python-pip python-nose g++ git libatlas3gf-base libatlas-dev
sudo pip install Theano
MXnet
- Distributed (Deep) Machine Learning Common
优点
- @陈天奇领队开发,算法框架稳定(xgboost)
- 接口完全,不需要二次开发(R/Python/Julia/Go/…)
- 分布式计算框架
缺点
- 安装稍微复杂一点
- R包处于开发阶段(有望推出windows版本)
MXnet
安装
git clone –recursive https://github.com/dmlc/mxnet
sudo apt-get update
sudo apt-get install -y build-essential git libblas-dev libopencv-dev
make -j4
Rscript -e "install.packages(‘devtools’, repo = ‘https://cran.rstudio.com')"
cd R-package
Rscript -e "library(devtools); library(methods);\
options(repos=c(CRAN=’https://cran.rstudio.com')); \
install_deps(dependencies = TRUE)"
cd ..
make rpkg
R CMD INSTALL mxnet_0.5.tar.gz
Twitter自拍得分
- 爬虫爬取7,000,000自拍图片
- 样本标记
- 计算图片获得赞的比例
- (赞的人数/看过该自拍的人数)
- 去除异常数据(tag较多,名人效应..)
- 比例最高的1百万作为正样本
- 最低的1百万作为负样本
- 扔到Deeplearning(Caffe)训练ConvNet
http://karpathy.github.io/2015/10/25/selfie/