TensorFlow核心知识



TensorFlow概要

Google第一代分布式机器学习框架DistBelief1,在内部大规模使用后并没有选择开源。而后第二代分布式机器学习系统TensorFlow2终于选择于2015年11月在GitHub上开源,且在2016年4月补充了分布式版本,并于2017年1月发布了1.0版本的预览,API接口趋于稳定。目前TensorFlow仍处于快速开发迭代中,有大量新功能及性能优化在持续研发。TensorFlow最早由Google Brain的研究员和工程师开发,设计初衷是加速机器学习的研究,并快速地将研究原型转化为产品。Google选择开源TensorFlow的原因也非常简单:第一是希望通过社区的力量,让大家一起完善TensorFlow。之前Google内部DistBelief及TensorFlow的用户就贡献了非常多的意见和反馈,使得产品质量得到了快速提升;第二是回馈社区,Google希望让这个优秀的工具得到更多的应用,从整体上提高学术界乃至工业界使用深度学习的效率。除了TensorFlow,Google也开源过大量成功的项目,包括大名鼎鼎的移动操作系统Android、浏览器Chromium、编程语言Go、Java引擎V8、数据交换框架Protobuf、编译工具Bazel、OCR工具Tesseract等共计数百个高质量的项目。

TensorFlow的官方网址:www.tensorflow.org

GitHub 网址:github.com/tensorflow/tensorflow

模型仓库网址:github.com/tensorflow/models

TensorFlow既是一个实现机器学习算法的接口,同时也是执行机器学习算法的框架。它前端支持Python、C++、Go、Java等多种开发语言,后端使用C++、CUDA等写成。TensorFlow实现的算法可以在众多异构的系统上方便地移植,比如Android手机、iPhone、普通的CPU服务器,乃至大规模GPU集群,如图1-1所示。除了执行深度学习算法,TensorFlow还可以用来实现很多其他算法,包括线性回归、逻辑回归、随机森林等。TensorFlow建立的大规模深度学习模型的应用场景也非常广,包括语音识别、自然语言处理、计算机视觉、机器人控制、信息抽取、药物研发、分子活动预测等,使用TensorFlow开发的模型也在这些领域获得了最前沿的成果。

图1-1 TensorFlow基础架构

为了研究超大规模的深度神经网络,Google在2011年启动了Google Brain项目,同时开发了第一代的分布式机器学习框架 DistBelief。有超过50个Google的团队在他们的产品中使用了DistBelief,比如Google Search中的搜索结果排序、Google Photos中的图片标注、Google Translate中的自然语言处理等,都依赖于DistBelief建立的深度学习模型。Google基于使用DistBelief时的经验及训练大规模分布式神经网络的需求,开发了TensorFlow——第二代分布式机器学习算法实现框架和部署系统。Google将著名的Inception Net从DistBelief移植到TensorFlow后,获得了6倍的训练速度提升。目前,在Google内部使用TensorFlow的项目呈爆炸性的增长趋势,在2016年已经有超过2000个项目使用了TensorFlow建立的深度学习模型,而且这个数字还在高速增长中,如图1-2所示。

图1-2 TensorFlow在Google的使用趋势

TensorFlow使用数据流式图来规划计算流程,它可以将计算映射到不同的硬件和操作系统平台。凭借着统一的架构,TensorFlow可以方便地部署到各种平台,大大简化了真实场景中应用机器学习的难度。使用TensorFlow我们不需要给大规模的模型训练和小规模的应用部署开发两套不同的系统,避免了同时维护两套程序的成本,TensorFlow给训练和预测的共同部分提供了一个恰当的抽象。TensorFlow的计算可以表示为有状态的数据流式图,对于大规模的神经网络训练,TensorFlow可以让用户简单地实现并行计算,同时使用不同的硬件资源进行训练,同步或异步地更新全局共享的模型参数和状态。将一个串行的 TensorFlow算法改造成并行的成本也是非常低的,通常只需要对小部分代码进行改写。相比于DistBelief,TensorFlow的计算模型更简洁灵活,计算性能显著提升,同时支持更多的异构计算系统。大量Google内部的DistBelief用户转向了TensorFlow,他们使用TensorFlow进行各种研究和产品开发,包括在手机上跑计算机视觉模型,或是训练有数百亿参数、数千亿数据的神经网络模型。虽然绝大多数的TensorFlow应用都在机器学习及深度学习领域,但TensorFlow抽象出的数据流式图也可以应用在通用数值计算和符号计算上,比如分形图计算或者偏微分方程数值求解。表1-1所示为TensorFlow的主要技术特性。

表1-1 TensorFlow的主要技术特性

TensorFlow编程模型简介

核心概念

TensorFlow中的计算可以表示为一个有向图(directed graph),或称计算图(computation graph),其中每一个运算操作(operation)将作为一个节点(node),节点与节点之间的连接称为边(edge

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值