深度学习的主要应用场景
-
图像识别
- 物体识别
- 场景识别
- 车型识别
- 人脸检测跟踪
- 人脸关键点定位
- 人脸身份认证
-
自然语言处理技术
- 机器翻译
- 文本识别
- 聊天对话
-
语音技术
- 语音识别
深度学习框架介绍
1.常见深度学习框架对比
上图是2015~2016年各种框架在Github上的star数量变化图,从上图我们可以明显看到在2015年十月份的时候TensorFlow还没有在表中出现,因为TensorFlow是在十一月份正式开源的,谷歌在十一月份才把TensorFlow的源码放在Github上,但是十一月份刚放出来已经开始狂甩其他的框架几条街了,而且是突飞猛进。其规模和使用量都是其他深度学习框架无法比拟的。
我们可以看到TensorFlow的主语言是C++,其实是为了提高内部底层的性能,但是从语言是Python,既能使用TensorFlow又能保证其效率而且兼顾了Python的语法简单,并且灵活性比较好,但是其缺点是上手难度较大。但是我认为这并不是一件坏事,因为当你一上手就开始学难的,在你掌握了难的之后其他简单的就更不在话下了。
Caffe是在图像处理领域比较出名的,一般是使用C++的人用Caffe是比较多的,而用Python的人会更倾向于TensorFlow和PyTorch。
PyTorch 和Torch是什么关系呢,一开始是只有Torch的,没有PyTorch,由于Torch的主语言是lua,lua也是一种脚本语言,但其使用人数远不如python,然后就处了PyTorch
Theano是一款比较早的深度学习框架,后来Theano的好多开发人员都加入谷歌去开发TensorFlow了,所以TensorFlow的很多特性是继承了Theano的
- 总结
- 最常用的框架当属TensorFlow和Pytorch,而Caffe和Caffe2次之。
- PyTorch和Torch更适用于学术研究(research);TensorFlow,Caffe,Caffe2更适用于工业界的生产环境部署(industrial production)
- Caffe适用于处理静态图像(static graph);Torch和PyTorch更适用于动态图像(dynamic graph)TensorFlow在两种情况下都适用
- TensorFlow和Caffe2可在移动端使用
2.TensorFlow的特点
灵活可扩展:TensorFlow在不同计算机上运行:小到智能手机,大到计算机集群都能扩展,可以立刻生成你的训练模型。
多语言:支持C++,Python语言。
GPU:虽然TensorFlow在大型计算机集群的并行处理中,运行性能略低于CNTK,但是在个人机器使用场景中,会根据机器配置自动选择CPU或GPU,更加友好与智能。
多平台:TensorFlow生成的模型,可以满足更多使用者的需求。适用于Mac,Linux,Windows系统上开发。满足开箱即用的模型使用概念。
运算能力强:利用了DAG图创建工作流图,优化了计算过程。
分布式:
目前原生支持的分布式深度学习框架不多,只有 TensorFlow、CNTK、DeepLearning4J、MXNet 等。在单 GPU 的条件下,绝大多数深度学习框架都依赖于 cuDNN,因此只要硬件计算能力或者内存分配差异不大,最终训练速度不会相差太大。
但是对于大规模深度学习来说,巨大的数据量使得单机很难在有限的时间完成训练。而TensorFlow支持分布式训练。
TensorFlow 的设计对不同设备间的通信优化得不是很好,其单机的 reduction 只能用 CPU 处理,分布式的通信使用基于 socket 的 RPC,而不是速度更快的 RDMA,所以其分布式性能可能还没有达到最优。
3.TensorFlow的安装