1. TensorFlow的起源
2015年11月6日,Google公司宣布推出全新的机器学习开源工具TensorFlow;
TensorFlow最初由Google Brain团队开发,基于Google开发的深度学习基础架构DistBelief构建起来的;
官网:
Github:
2. TensorFlow:一个采用计算图的形式表述数值计算的编程框架;
张量(Tensor):计算图的基本数据结构,可以理解为多维数据;
流(Flow):张量之间通过计算互相转化的过程;
3. TensorFlow中的张量
张量是一个物理量,对高维(维数≥ 2) 的物理量进行“量纲分析”的一种工具;
简单的可以理解为:
一维数组称为矢量;
二维数组为二阶张量;
三维数组为三阶张量;
4. TensorFlow中的计算图
计算图:用“节点”(Nodes)和“边”(Edges)的有向图来描述数学计算的图;
节点:表示施加的数学操作,但也可以表示数据输入(feed in)的起点/输出(push out)的终点,或者是读取/写入持久变量(persistent variable)的终点;
边:表示“节点”之间的输入/输出关系。“边”可以运输“大小可动态调整”的“张量;
节点类型:
Operation:有一个或者两个输入节点的节点,执行某个操作;
Constant:没有输入节点的节点,执行过程中节点的值不变;
Variable:没有输入节点的节点,执行过程中节点中的值会变;
Placeholder:没有输入节点的节点,执行过程中等待外部输入;
计算图示例:
5. TensorFlow架构
前端系统:
提供多语言编程环境,提供统一的编程模型来构造计算图;
通过Session的形式,连接TensorFlow后端的「运行时」系统,启动计算图的执行过程;
执行(后端)系统:提供运行时环境,负责执行计算图;
6. TensorFlow的使用
使用张量(Tensor)表示数据;
通过变量(Variable)输入训练数据,维护状态;
使用计算图(Computational graph)来表示计算任务;
在会话(Session)的上下文(Context)中执行计算图;
1. Pytorch的起源
2017年1月,Facebook人工智能研究院(FAIR)团队在Github上开源了Pytorch,并迅速占据Github热度榜榜首;
Pytorch的历史可以追溯到2002年就诞生的Torch。Torch使用了一种不是很大众的语言Lua作为接口;
2017年,Torch的幕后团队对Tensor之上的所有模块进行了重构,推出了Pytorch;
2. 简洁直观的设计理念
PyTorch 的设计思路是线性、直观且易于使用的。当你的代码出现Bug 的时候,不会因为错误的指向或者异步和不透明的引擎浪费太多的时间;
PyTorch 的代码相对于TensorFlow 而言,更加简洁直观,同时对于TensorFlow高度工业化的很难看懂的底层代码,PyTorch 的源代码就要友好得多,更容易看懂,更加吸引初学者学习;
3. PyTorch代码示例
构造初始化矩阵
函数计算:
4. PyTorch使用动态计算图
TensorFlow 属于命令式的编程语言,而且是静态的,首先必须构建一个神经网络,然后一次又一次使用同样的结构,如果想要改变网络的结构,需要从头开始;
静态计算这样的机制允许编译器进行更大程度的优化,但是这也意味着你所期望的程序与编译器实际执行之间存在着更多的差异,不
便于debug;
采用的诸如scope 和sessions 等不寻常的机制容易使人感到疑惑不解;
PyTorch通过一种反向自动求导的技术,可以让你零延迟地任意改变神经网络的行为,能够为你奇思妙想的实现获得最高的速度和最佳的灵活性,这也是PyTorch 对比TensorFlow 最大的优势;
比如在RNN网络中,PyTorch可以动态调整网络时间步(Time step)
5. PyTorch安装和使用
网址:
较好的移动端支持: Android和IOS
丰富的教程(包含中文):
6. PyTorch快速发展
单独使用PyTorch 的论文与Tensorflow/PyTorch 论文之间的比率
1. Keras的起源
Keras于2015年由Google人工智能研究员Francois Chollet等人提出;
Keras是一个高层的神经网络API,由纯Python编写而成并使用其他深度学习框架Tensorflow、Theano及CNTK作为后端;
2. 较低的使用门槛
Keras为支持快速实验而生,能够把想法迅速转换为结果;
Keras应该是深度学习框架中最容易上手的一个,它提供了一致而简洁的API,能大大减少一般应用下用户的工作量,对于新用户非常友好;
3. 过度的封装
严格意义上来说,Keras并不能称为一个深度学习框架,它更像是一个高层的深度学习接口。Keras的缺点也很明显:过度的封装导致调试困难;
由于同时支持三种不同的深度学习框架作为后端,Keras做了层层封装,导致用户在新增操作或是获取底层的数据信息时过于困难;
许多Bug隐藏在层层封装之下,导致Keras的程序有些缓慢;
1. PaddlePaddle(飞桨)的发展历程
PaddlePaddle是百度提供的开源深度学习框架,致力于为开发者和企业提供最好的深度学习研发体验,框架本身具有易学、易用、安全、高效四大特性,是最适合中国开发者和企业的深度学习工具;
网址:
PaddlePaddle前身是2013年百度自主研发的深度学习平台,一直为百度内部工程师使用。
2016年9月1日百度世界大会上,百度首席科学家Andrew Ng(吴恩达)首次宣布将百度深度学习平台对外开放,命名PaddlePaddle。
2. PaddlePaddle的功能特点与优势
功能特点:
教程文档友好,提供jupyter文档;
开源:开源,代码在github上公开;社区活跃,合作伙伴支持,有很多的贡献者;
速度快、方便:底层C++编写,运行速度快,占用内存少;接口Python,使用方便,开发便捷;
分布式系统:底层硬件同时支持CPU和GPU;分布式系统,支持单机运行和云上运行;
部署方便:支持docker部署和原生包部署;支持多操作系统windows、 macOS、 Linux;
优势分析:
提供搭建私有云的全套解决方案;帮助用户保护数据;充分支持分布式系统;模型并行和数据并行;
灵活易用且性能高;支持多种机器学习和优化算法,可定制;全面支持多机、多GPU环境,优化的通信实现使高吞吐与高性能成为可能;
3. PaddlePaddle已在百度30多项主要产品和服务之中发挥着巨大的作用
外卖预估出餐时间;精准推荐用户所需信息;字符识别(OCR);机器翻译;病毒和垃圾信息检测;自动驾驶;海量图像识别分类;
4. PaddlePaddle的模型库
PaddlePaddle 为开发者提供了丰富的模型库,从而可以快速构建强大的应用,满足各种场景的需求;
计算机视觉:
图像分类是根据图像的语义信息对不同类别图像进行区分,是计算机视觉中重要的基础问题;
主要应用于安防领域的人脸识别和智能视频分析等,交通领域的交通场景识别等;
PaddlePaddle提供了常用模型:AlexNet、VGG、GoogleNet、ResNet等,方便用户使用;
目标检测:
目标是给定一张图像或是一个视频帧,让计算机找出其中所有目标的位置;
并给出每个目标的具体类别;
PaddlePaddle提供了Faster-RCNN、MobileNet-SSD、PyramidBox等模型,满足不同场景需求;
自然语言处理:
阅读理解-DuReader模型:应用场景:语音助手、智能搜索、智能客服、智能机器人;
机器翻译-Transformer模型:应用场景:机器翻译;
语义匹配-DAM模型:应用场景:问答系统、对话系统、智能客服等;
情感分析-Senta模型:应用场景:舆情分析、热点话题分析;
语言模型LSTM、GRU等;
推荐:
以新闻推荐系统为例,存在多个可以使用深度学习技术的环节,例如新闻的自动化标注,个性化新闻召回,个性化匹配与排序等;
PaddlePaddle对推荐算法的训练提供了完整的支持,并提供了多种模型配置供用户选择。如TagSpace、RRU4Rec、SSR、DeepCTR等模型;
除此之外,PaddlePaddle还为开发者们提供了语音识别、强化学习等方面的一些模型库,可以满足各种场景需求;
5. 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安装、源码安装;
若需要docker或源码安装,请参考:
不同安装方式参见:
6. 百度AIStudio简介
百度AI Studio一站式开发平台
囊括了AI教程、代码环境、算法算力、数据集,并提供免费的在线云计算的一体化编程环境。官网地址:
AI Studio特性百度AI Studio平台已经为使用者预置了Python语言环境,以及百度PaddlePaddle深度学习开发框架;
同时用户可以在其中自行加载Scikit-Learn等机器学习库;
平台支持Chrome/Firefox/Safari等浏览器. 在IE/360等其他浏览器上不能保证正常运行;
AI学习地图:
新手入门秒懂强大的在线编程平台;
初级-高级课程 帮您轻松掌握AI开发;
项目列表:
公开项目 经典应用场景;
论文复现 帮助理解最新论文并比较;
个人项目 开发者项目列表;
2000+优质公开项目,覆盖CV、NLP、推荐算法等众多AI热门领域,完美支持Notebook、脚本及图形化任务;
创建你自己的项目
1)创建项目:点击按钮创建项目
2)项目环境:Python2.7和Python3.7
3)预加载项目框架:PaddlePaddle-1.4.1和1.7.1
4)配置资源:Notebook、脚本任务
5)项目名称: 用来标识项目, 便于日后进行查找和管理, 创建后支持修改
如果项目涉及到数据集, 可以考虑直接使用系统预置的数据集, 点击添加数据集按钮;
注意:每个项目最多可以引入两个数据集, 如无合适的数据集, 用户也可以自行上传创建新数据集;
1. 背景介绍
教育部-华为“智能基座”产教融合协同育人基地;
将鲲鹏、昇腾知识融入课程中
2. 鲲鹏服务器
基于Kunpeng处理器构建的全栈IT基础设施、行业应用及服务,包括PC、服务器、存储、操作系统、中间件、虚拟化、数据库、云服务、行业应用以及咨询管理服务等;
鲲鹏计算产业生态全景
鲲鹏的产业发展
3. 昇腾服务器
人工智能处理器
昇腾910和昇腾310处理器,采用华为自研的达芬奇架构NPU:
自创的3D Cube矩阵乘法单元;
昇腾910支持全场景人工智能应用,昇腾310主要用在边缘计算等低功耗的领域;
CPU/GPU/TPU (Tensor Processing Unit)/NPU (Neural network Processing Unit)
Atlas系列产品:提供AI训练、推理卡及训练服务器
CANN(异构计算架构):芯片使能、驱动层(类似英伟达CUDA)
MindSpore(AI框架):全场景AI框架(类似TensorFlow、Pytorch)
MindX SDK(昇腾SDK):行业SDK和应用解决方案
ModelArts(AI开发平台):华为云AI开发平台
MindStudio(全流程开发工具链):AI全流程开发IDE
4. 昇腾CANN
AI场景的异构计算架构,通过提供多层次的编程接口,支持用户快速构建基于昇腾平台的AI应用和业务;
CANN 3.0已经覆盖10+操作系统和14+智能终端设备,一次编写代码,就能实现端边云全场景复用,极大提升了开发效率;
支持多种AI开发平台,华为自己开发了MindSpore的AI平台;
CANN 3.0上可以接各种深度学习编程框架的AI算法,下可以加速昇腾全系列AI芯片的训练和推理;
用户可以用任何第三方框架调用常用的API库,而无需关心计算资源优化的问题;
快速发展的社区和深度学习库: 昇腾社区-官网丨昇腾万里 让智能无所不及
5. MindSpore
MindSpore提供了Python编程范式;
MindSpore提供了动态图和静态图统一的编码方式;
能够用串行算法代码,自动实现分布式并行训练;
具备训练过程静态执行和动态调试能力,开发者通过变更一行代码即可切换模式,快速在线定位问题;
最佳匹配昇腾处理器,最大程度地发挥硬件能力,帮助开发者缩短训练时间,提升推理性能;
支持云、边缘和手机上的快速部署,实现更好的资源利用和隐私保护;
6. MindArts
用户访问平台:
开发环境:
可以自主选择多种计算资源和AI框架;
在线编程;
调试、运行等;
可视化结果展示(训练和部署);
全面详细的课程培训体系: 在线课程_云计算在线课程_云计算基础入门_学习云计算_华为云官方云计算学习平台-华为云