1.1 深度学习与机器学习的区别
1.1.1 特征提取方面
- 机器学习的特征工程步骤是要靠手动完成的,而且需要大量领域专业知识
- 深度学习通常由多个层组成,它们通常将更简单的模型组合在一起,将数据从一层传递到另一层来构建更复杂的模型。通过训练大量数据自动得出模型,不需要人工特征提取环节。
深度学习算法试图从数据中学习高级功能,这是深度学习的一个非常独特的部分。因此,减少了为每个问题开发新特征提取器的任务。适合用在难提取特征的图像、语音、自然语言处理领域。
1.1.2 数据量和计算性能要求
机器学习需要的执行时间远少于深度学习,深度学习参数往往很庞大,需要通过大量数据的多次优化来训练参数。
第一、深度学习需要大量的训练数据集
第二、训练深度神经网络需要大量的算力
可能要花费数天、甚至数周的时间,才能使用数百万张图像的数据集训练出一个深度网络。所以深度学习通常
1.1.3 算法代表
1.2 深度学习的应用场景
- 图像识别
- 物体识别
- 场景识别
- 车型识别
- 人脸检测跟踪
- 人脸关键点定位
- 人脸身份认证
- 自然语言处理技术
- 语音技术
1.3 深度学习框架介绍
1.3.1 常见深度学习框架对比
框架名 |
主语言 |
从语言 |
灵活性 |
上手难易 |
开发者 |
Tensorflow |
C++ |
cuda/python |
好 |
难 |
Google |
Caffe |
C++ |
cuda/python/Matlab |
一般 |
中等 |
贾杨清 |
PyTorch |
python |
C/C++ |
好 |
中等 |
FaceBook |
MXNet |
c++ |
cuda/R/julia |
好 |
中等 |
李沐和陈天奇等 |
Torch |
lua |
C/cuda |
好 |
中等 |
Facebook |
Theano |
python |
C++/cuda |
好 |
易 |
蒙特利尔理工学院 |
-
总结:
- 最常用的框架当数TensorFlow和Pytorch, 而 Caffe 和 Caffe2 次之。
- PyTorch 和 Torch 更适用于学术研究(research);TensorFlow,Caffe,Caffe2 更适用于工业界的生产环境部署(industrial production)
- Caffe 适用于处理静态图像(static graph);Torch 和 PyTorch 更适用于动态图像(dynamic graph);TensorFlow 在两种情况下都很实用。
- Tensorflow 和 Caffe2 可在移动端使用。
1.3.2 TensorFlow的特点
官网:https://www.tensorflow.org/
- 高度灵活(Deep Flexibility)
- 它不仅可以用来做神经网络算法研究,也可以用来做普通的机器学习算法,甚至是只要把计算表示成数据流图,都可以用TensorFlow。
- 语言多样(Language Options)
- TensorFlow使用C++实现的,然后用Python封装。谷歌号召社区通过SWIG开发更多的语言接口来支持TensorFlow。
- 设备支持
- TensorFlow可以运行在各种硬件上,同时根据计算的需要,合理将运算分配到相应的设备,比如卷积就分配到GPU上,也允许在 CPU 和 GPU 上的计算分布,甚至支持使用 gRPC 进行水平扩展。
- Tensorboard可视化
- TensorBoard是TensorFlow的一组Web应用,用来监控TensorFlow运行过程,或可视化Computation Graph。TensorBoard目前支持5种可视化:标量(scalars)、图片(images)、音频(audio)、直方图(histograms)和计算图(Computation Graph)。TensorBoard的Events Dashboard可以用来持续地监控运行时的关键指标,比如loss、学习速率(learning rate)或是验证集上的准确率(accuracy)
1.3.3 TensorFlow的安装
1 CPU版本
安装较慢,指定镜像源,请在带有numpy等库的虚拟环境中安装
pip install tensorflow==1.8 -i https://mirrors.aliyun.com/pypi/simple
pip install tensorflow==1.8 -i https://mirrors.aliyun.com/pypi/simple
2 GPU版本
参考官网:
注:
CPU与GPU的对比
CPU:核芯的数量更少;
但是每一个核芯的速度更快,性能更强;
更适用于处理连续性(sequential)任务。
GPU:核芯的数量更多;
但是每一个核芯的处理速度较慢;
更适用于并行(parallel)任务。