第1章 TensorFlow简介

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。
TensorFlow最初由Google Brain团队开发,用于Google的研究和生产,于2015年11月9日在Apache 2.0开源许可证下发布。

 什么是TensorFlow?
TensorFlow是Google开源的第二代用于数字计算(numerical computation)的软件库。它是基于数据流图的处理框架,图中的节点表示数学运算(mathematical operations),边表示运算节点之间的数据交互。TensorFlow从字面意义上来讲有两层含义,一个是Tensor,它代表的是节点之间传递的数据,通常这个数据是一个多维度矩阵(multidimensional data arrays)或者一维向量;第二层意思Flow,指的是数据流,形象理解就是数据按照流的形式进入数据运算图的各个节点。

 TensorFlow特点
1.灵活(Deep Flexibility)
它不仅是可以用来做神经网络算法研究,也可以用来做普通的机器学习算法,甚至是只要你能够把计算表示成数据流图,都可以用TensorFlow。
2.便携(True Portability)
这个工具可以部署在个人PC上,单CPU,多CPU,单GPU,多GPU,单机多GPU,多机多CPU,多机多GPU,Android手机上等,几乎涵盖各种场景的计算设备。
3.研究和产品的桥梁(Connect Research andProduction)
在谷歌,研究科学家可以用TensorFlow研究新的算法,产品团队可以用它来训练实际的产品模型,更重要的是这样就更容易将研究成果转化到实际的产品。另外Google在白皮书上说道,几乎所有的产品都用到了TensorFlow,比如搜索排序,语音识别,谷歌相册,自然语言处理等。
4.自动做微分运算(Auto-Differentiation)
机器学习中的很多算法都用到了梯度,使用TensorFlow,它将自动帮你求出梯度,只要你定义好目标函数,增加数据就好了。听上去很诱人,暂时不知道具体咋实现的。
5.语言灵活(Language Options)
TensorFlow使用C++实现的,然后用Python封装,暂时只支持这两种语言,谷歌号召社区通过SWIG开发更多的语言接口来支持TensorFlow。
6.最大化性能(Maximize Performance)
通过对线程,队列和异步计算的支持(first-class support),TensorFlow可以运行在各种硬件上,同时根据计算的需要,合理将运算分配到相应的设备,比如卷积就分配到GPU上。

 历史版本
 DistBelief
从2010年开始,Google Brain建立DistBelief作为他们的第一代专有的机器学习系统。50多个团队在Google和其他Alphabet公司在商业产品部署了DistBelief的深度学习神经网络,包括Google搜索、Google语音搜索、广告、Google 相册、Google地图、Google街景、Google翻译和YouTube。Google指派计算机科学家,如Geoffrey Hinton和Jeff Dean,简化和重构DistBelief的代码库,使其变成一个更快、更健壮的应用级别代码库,形成了TensorFlow。2009年,Hinton领导的研究小组大大减少使用DistBelief的神经网络的错误数量,通过Hinton在广义反向传播的科学突破。最值得注意的是,Hinton的突破直接使Google语音识别软件中的错误减少至少25%。
 TensorFlow
TensorFlow是Google Brain的第二代机器学习系统。1.0.0版本发布于2017年2月11日。虽然参考实现运行在单台设备,TensorFlow可以运行在多个CPU和GPU(和可选的CUDA扩展和图形处理器通用计算的SYCL扩展)。TensorFlow可用于64位Linux、macOS和Windows,以及移动计算平台,包括Android和iOS。
TensorFlow的计算使用有状态的数据流图表示。TensorFlow的名字来源于这类神经网络对多维数组执行的操作。这些多维数组被称为张量。2016年6月,Jeff Dean称在GitHub有1500个库提到了TensorFlow,其中只有5个来自Google。[10]
 张量处理单元(TPU)
2016年5月,Google宣布了张量处理单元(TPU),一个专为机器学习和TensorFlow定制的ASIC。TPU是一个可编程的AI加速器,提供高吞吐量的低精度计算(如8位),面向使用或运行模型而不是训练模型。Google宣布他们已经在数据中心中运行TPU长达一年多,发现它们对机器学习提供一个数量级更优的每瓦特性能。
2017年5月Google宣布第二代张量处理单元,并在Google Compute Engine中可用。第二代TPU提供最高180 teraflops性能,组装成64个TPU的集群时提供最高11.5 petaflops性能。
 TensorFlow Lite
2017年5月Google宣布从Android Oreo开始,提供一个专用于Android开发的软件栈TensorFlow Lite。

学习网站

TensorFlow中文官网
TensorFlow中文论坛
TensorFlow中文官方手册
TensorFlow源码

【注】TensorFlow官网有需要翻墙,对于新手来说,参考以上网站就够了。

猜你喜欢

转载自blog.csdn.net/u013162035/article/details/80433018