目录
➢ Part One.深度学习平台概览
我们每一位学习深度学习的人员,都应该以某一个平台为主,去开发、去熟悉,这样可以提高我们的效率。
➢一、深度学习平台框架对照
Caffe在卷积网络里面应用是最快的,但是问题是循环神经网络支持性很差,现在大家用的很少。
TensorFlow是目前世界上影响最广的深度学习平台,2015年由Google推出,之后大火。
Torch现在实际上使用的并不多,主要是使用Pytorch ,Pytorch 可以认为是Torch的Python版本。
Pytorch在这2年,得到了非常广泛的应用,对初学者来说,大家上手很容易,门槛很低,大家学习速度会很快。
图片中剩下的都是几乎不怎么使用了的框架
❑ 2018年GitHub统计,TensorFlow最火,Keras次之,Pytorch第三。Keras严格意义上来说,不是一个深度学习的框架,他是一个用Python写的一个API接口,它下面还是要以TensorFlow等框架作为后端来为支撑。Keras的接口简单,所以实现想法的时候会比较容易,因此较火热。推荐大家从前3位中选择一个适合自己的深度学习平台。
➢ Part Two.TensorFlow
➢一、TensorFlow的起源
❑ 2015年11月6日,Google公司宣布推出全新的机器学习开源工具TensorFlow
❑ TensorFlow最初由Google Brain团队开发,基于Google开发的深度学习基础架构DistBelief构建起来的
❑ 官网:https://tensorflow.google.cn/
❑ 相关的源代码在Github一直在更新:https://github.com/tensorflow/tensorflow
❑ TensorFlow:一个采用计算图的形式表述数值计算的编程框架,关于计算图的知识我们在RNN中讲过。这里的计算图和之前的略有不同。
– 张量(Tensor):计算图的基本数据结构,可以理解为多维数据
– 流(Flow):架构上流动的数据就是张量,张量之间通过计算互相转化的过程成为“流”
➢二、TensorFlow中的张量
❑ 张量是一个物理量,对高维 (维数 ≥ 2) 的物理量进行 “量纲分析” 的一种工具
❑ 简单的可以理解为:
– 一维数组称为矢量
– 二维数组为二阶张量
– 三维数组为三阶张量
– …
➢三、TensorFlow中的计算图
TensorFlow中的计算图和我们之前在博客:https://blog.csdn.net/weixin_40645361/article/details/105025876 中介绍的计算图是略有差异的。TensorFlow中的计算图中,节点表示施加的操作;而我们之前在博客中介绍的计算图中,边表示操作
❑ 计算图
– 用“节点”(Nodes)和“边”(Edges)的有向图来描述数学计算的图
❑ 节点
– 表示施加的数学操作,但也可以表示数据输入(feed in)的起点/输出(push out)的终点,或者是读取/写入持久变量(persistent
variable)的终点
❑ 边
– 表示“节点”之间的输入/输出关系。“边”可以运输“大小可动态调整”的“张量”
❑ 节点类型
– Operation:有一个或者两个输入节点的节点,执行某个操作
– Constant:没有输入节点的节点,执行过程中节点的值不变
– Variable:没有输入节点的节点,执行过程中节点中的值会变
– Placeholder:没有输入节点的节点,执行过程中等待外部输入
❑ 计算图示例
➢四、TensorFlow的架构
❑ 前端系统
– 提供 多语言编程环境 ,提供统一的编程模型来 构造计算图– 通过Session的形式,连接TensorFlow后端的「运行时」系统,启动计算图的执行过程
❑ 执行(后端)系统:提供运行时环境,负责执行计算图
➢五、TensorFlow的使用
❑ 使用 张量( Tensor) 表示数据❑ 通过变量 ( Variable)输入训练数据,维护状态❑ 使用计算图 ( Computational graph)来表示计算任务❑ 在会话 (Session)的上下文 (Context) 中执行计算图
➢六、TensorFlow编程示例
➢1.编程示例1:创建计算图
➢2.编程示例2:一元线性回归
➢3.编程示例3:BP网络手写数字识别
❑ 导入相关包及数据包
❑ 首先建立BP网络模型
❑ 模型训练及结果
❑ 测试结果可视化
❑ 测试结果
上面的TensorFlow的编程仅仅是一个简单的介绍入门级的。实际上大家要锻炼的话,遇到程序,遇到一个问题就上手去编,然后哪里不清楚就去看官网的API或者一些教程,就会很快上手。在实际中去锻炼是最快的,体会是很深的。
➢Part Three.PaddlePaddle(飞浆)
➢一、PaddlePaddle(飞桨)的发展历程
❑ PaddlePaddle也是一个开源的深度学习平台。PaddlePaddle是百度提供的开源深度学习框架,致力于为开发者和企业提供最好的深度学习研发体验,框架本身具有易学、易用、安全、高效四大特性,是最适合中国开发者和企业的深度学习工具。
❑ PaddlePaddle网址:http://www.paddlepaddle.org/zh
➢二、PaddlePaddle的功能特点与优势
❑ PaddlePaddle已在百度30多项主要产品和服务之中发挥着巨大的作用
➢三、PaddlePaddle的模型库
❑ PaddlePaddle 为开发者提供了丰富的模型库,从而可以快速构建强大的应用,可以满足各种场景的需求。
❑ 计算机视觉
◆图像分类是根据图像的语义信息对不同类别图像进行区分,是计算机视觉中重要的基础问题。主要应用于安防领域的人脸识别和智能视频分析等,交通领域的交通场景识别等。PaddlePaddle提供了常用模型:AlexNet、VGG、GoogleNet、ResNet等,方便用户直接使用,免得再训练
◆目标检测的目标是是给定一张图像或是一个视频帧,让计算机找出其中所有目标的位置,并给出每个目标的具体类别。PaddlePaddle提供了Faster-RCNN、MobileNet-SSD、PyramidBox等模型,满足不同场景需求
❑ 计算机视觉
◆阅读理解-DuReader模型:应用场景:语音助手、智能搜索、智能客服、智能机器人
◆机器翻译-Transformer模型:应用场景:机器翻译
◆情感分析-Senta模型:应用场景:舆情分析、热点话题分析
◆语义匹配-DAM模型:应用场景:问答系统、对话系统、智能客服等
◆语言模型LSTM、GRU等
❑ 推荐
以新闻推荐系统为例,存在多个可以使用深度学习技术的环节,例如新闻的自动化标注,个性化新闻召回,个性化匹配与排序等
PaddlePaddle对推荐算法的训练提供了完整的支持,并提供了多种模型配置供用户选择。如TagSpace、RRU4Rec、SSR、DeepCTR等模型
除此之外,PaddlePaddle还为开发者们提供了语音识别、强化学习等方面的一些模型库,可以满足各种场景需求。这些会比我们自己实现好一些,因为他们有丰富的资源及环境
➢四、PaddlePaddle的本地环境搭建
目前PaddlePaddle支持以下环境:
➢ Ubuntu 14.04 /16.04 /18.04➢ CentOS 7 / 6➢ MacOS 10.11 / 10.12 / 10.13 / 10.14➢ Windows7 / 8/ 10 (专业版/企业版)
• PaddlePaddle支持四种形式的安装,pip安装、conda安装、docker安装、源码安装,本教程以Windows7下pip安装 为例。• 使用比较多的是 pip安装、conda安装,因为他们两个是基于Python的包的管理工具,尤其是conda• 若需要docker或源码安装,请参考技术文档:http://paddlepaddle.org/documentation/docs/zh/1.3/beginners_guide/install/install_Docker.html
❑ 不同安装方式参见https://www.paddlepaddle.org.cn/install/quick
❑ Pyhon开发环境
Pyhon开发环境搭建好以后,我们需要一个IDE的开发环境,常用的有以下两个IDE:
– PyCharm: https://www.jetbrains.com/pycharm/
– Spyder: https://www.spyder-ide.org/
• Anaconda 自带 python ,因此如果之前电脑里安装过 python 一定要先卸载原有的 python 再安装 Anaconda ,避免混乱• Anaconda 自带 Spyder ,也自带了很多库比如: numpy, pandas, matplotlib• Spyder和MATLAB风格类似,更容易入手,不需要配置
我们先说一下配置Python解释器
1)点击file->Settings 2)点击Project Interpreter,选择Add Local
3)点击Vitualenv Environment->Existing environment,选择Python安装路径,勾选“Make available to all projects”,配置完成。
4)加载完成后,会显示出Python安装过的所有包,证明PyCharm调试已经成功了
➢五、百度AIStudio简介
如果我们不想配置环境,不想装太多的软件,这个时候,我们就可以使用百度的AIStudio,这是一个百度推出的良心产品。由于现在是推广的阶段,所以免费给大家使用,免费送大家很多的算力,大家具体可以再去实践看一下
❑ 百度AI Studio一站式开发平台
– 囊括了AI教程、代码环境、算法算力、数据集,并提供免费的在线云计算的一体化编程环境。官网地址: http://aistudio.baidu.com/
– 我们直接使用一个浏览器就可以实现深度学习的开发。本平台支持Chrome/Firefox/Safari等浏览器. 在IE/360等其他浏览器上不能保证正常运行
– 百度AI Studio平台已经为使用者预置了Python语言环境,以及百度PaddlePaddle深度学习开发框架. 同时用户可以在其中自行加载Scikit-Learn等机器学习库
➢1.百度AIStudio创建项目
◆ 创建你自己的项目
1 )创建项目: 点击按钮创建项目2 )项目环境: Python2.7 和 Python3.73 )预加载项目框架: PaddlePaddle-1.4.1 和 1.7.14 )配置资源: Notebook 、脚本任务5)项目名称: 用来标识项目, 便于日后进行查找和管理, 创建后支持修改
1000+开放数据集,种类多样,支持数据集预览、下载、上传,单次上传容量高达100G,这对我们的实践带来了很大的方便,我们在进行深度学习实践的时候,经常遇到的一个问题就是:训练数据集很难得到。
数据集的选择部分:
✓如果项目涉及到数据集, 可以考虑直接使系统预置的数据集, 点击添加数据集按钮
注意:每个项目最多可以引入两个数据集, 如 无合适的数据集, 用户也可以自行上传创建新数据集.
✓点击“创建”,“查看”, 可进入项目详情页
✓公开数据集是百度给出的数据集;个人数据集是自己构建的数据集
➢2.百度AIStudio运行项目
◆ 项目详情页
✓进入项目详情页
➢3.百度AIStudio编辑代码
◆ 代码编辑页面
◆ 新建块
✓选择块类型:Code或Markdown,分别插入代码块或文字块
◆ 命令、编辑模式
✓百度AIStudio有两种模式:命令、编辑模式
内容编辑区由基本的块 (cell) 组成.绿色 代表块内容可编辑状态-编辑模式(比如输入代码),蓝色代表块可操作状态-命令模式(比如删除块,必须回到蓝色)
◆ 创建数据集
界面如下:
➢Part Four.Pytorch
虽然我们要主攻一个开发平台熟悉,但是我们也要学习和了解其他的一些开发平台即及框架,因为我们的算法要和其他人比较,不同的人会使用不同的框架,至少你要了解一些,然后跑别人的代码的时候能跑起来;还有一点是虽然TensorFlow现在用的很多,但是未来是不是一个引导的主流,是无法确定的
➢一、Pytorch的起源
❑ 2017 年 1 月, Facebook 人工智能研究院( FAIR )团队在 Github 上开源了 Pytorch ,并迅速占据 Github热度榜榜首❑ Pytorch 的历史可以追溯到 2002 年就诞生的 Torch 。 Torch 使 用了一种不是很大众的语言 Lua作为接口,所以使用很少❑ 2017年,Torch的幕后团队对Tensor之上的所有模块进行了重构,推出了Pytorch,是Python版本
➢二、Pytorch的设计历理念
Pytorch的设计历理念是简洁直观
❑ PyTorch 的设计思路是线性、直观且易于使用,程序非常直接,和人的思路是非常接近的。当你的 代码出现 Bug 的时候,不会因为错误的指向或者异步和不透明的引擎浪费太多的时间,比较容易的能够跟踪到Bug❑ PyTorch 的代码相对于 TensorFlow 而言,更加简洁直观, 同时对于 TensorFlow 高度工业化的很难看懂的底层代码, PyTorch 的源代码就要友好得多,更容易看懂,更加吸引初学者学习
❑ PyTorch代码示例
下面的示例能够说明Pytorch的代码思路是面向人类的,很易学
➢三、PyTorch使用动态计算图
❑ TensorFlow 属于命令式的编程语言,而且是静态的,首先必须构建一个神经网络,然后一次又一次使用同样的结构,如果想要改变网络的结构,需要从头开始
– 静态计算这样的机制允许编译器进行更大程度的优化,但是这也意味着你所期望的程序与编译器实际执行之间存在着更多的差异,不便于debug– 采用的诸如 scope 和 sessions 等不寻常的机制容易使人感到疑惑不解
❑ PyTorch通过一种反向自动求导的技术,可以让你零延迟地任意改变神经网络的行为,能够为你奇思妙想的实现获得最高的速度和最佳的灵活性,这也是PyTorch 对比TensorFlow 最大的优势
– 比如在RNN网络中,PyTorch可以动态调整网络时间步(Time step)
➢四、PyTorch安装
❑ 网址:https://pytorch.org/
– 较好的移动端支持 : Android 和 IOS– 丰富的教程(包含中文): http://pytorch123.com/
➢五、PyTorch使用
这里我们介绍一个Pytorch使用的例子,体会一下Pytorch使用的简洁性,通过定义类实现神经网络。和人类思考是一样的过程,编程上的技巧不需要考虑那么多了(和TensorFlow相比)
前面我们定义和实现了网络,那么接下来我们就训练和测试网络,这个也是非常的直观。我们在Pytorch中训练网络的时候,首先我们要定义一个优化求解的方法,例如梯度下降,等等……。这个相对于TensorFlow确实是很简单
➢六、PyTorch快速发展
有人统计了Pytorch在学术圈的使用情况。单独使用 PyTorch 的论文与 Tensorflow/PyTorch 论文之间的比率。可以看出在学术圈领域,Pytorch有取代TensorFlow的趋势。因为学术圈更重视的是创新,而不是实现
➢Part Five.Keras
➢一、Keras的起源
❑ 确切的来讲,Keras不是一个深度学习的平台,只是一个API接口,为了便于我们比较好的实现❑ Keras 于 2015 年由 Google 人工智能研究员 Francois Chollet 等人提出❑ Keras是一个高层的神经网络API,由纯Python编写而成并使用其他深度学习框架Tensorflow、Theano及CNTK作为后端
➢二、Keras的特点
➢1.Keras具有低门槛的优点
❑ Keras为支持快速实验而生,能够把想法迅速转换为结果,不需要把更多的精力放在编程的技巧上❑ Keras应该是深度学习框架中最容易上手的一个,不需要编程基础。❑ Keras提供了一致而简洁的API,能供大大减少一般应用下用户的工作量,对于新用户非常友好
➢2.Keras具有过度封装的缺点
❑ 严格意义上来说, Keras 并不能称为一个深度学习框架,它 更像是一个高层的深度学习接口。 Keras 的缺点也很明显:过度的封装导致调试困难❑ 由于同时支持三种不同的深度学习框架作为后端, Keras 做 了层层封装,导致用户在新增操作或是获取底层的数据信息时过于困难❑ 许多 Bug 隐藏在层层封装之下,导致 Keras的程序有些缓慢❑ 给用户留出来的接口越简单,出现问题的时候,调试越困难,因为很多的Bug都出现在封装的部分,不容易解决
➢三、Keras示例
通过下面这个创建网络模型实例,我们可以体会到Keras相比于Pytorch更进一步的简洁直观,更进一步的面向人类。
我们可以看出来,这个过程相比于Pytorch更简洁,即便完全没有编程基础的人,也可以轻松的实现。进一步摆脱了Pytorch的类这样的面向对象的编程。网络搭建好以后,我们就要开始训练和测试了:
写在最后的建议:
完全没有编程背景:Keras
有部分编程背景:Pytorch
编程背景优秀:TensorFlow