2020 tensorflow入门基础概念篇

1、TensorFlow是什么

Tensorflow是一个Google开发的第二代机器学习系统,字面上理解,TensorFlow就是以张量(Tensor)在计算图(Graph)上流动(Flow)的方式的实现和执行机器学习算法的框架。具有以下特点:

灵活性。TensorFlow不是一个严格的“神经网络”库。只要可以将计算表示成数据流图,就可以使用TensorFlow,比如科学计算中的偏微分求解等。(实际上其官网的介绍中对TF的定位就是基于数据流图的科学计算库,而非仅仅是机器学习库)

可移植性。同一份代码几乎不经过修改既可以部署到有任意数量CPU、GPU或TPU(Tensor Processing Unit,Google专门为机器学习开发的处理器)的PC、服务器或移动设备上。

自动求微分。同Theano一样,TensorFlow也支持自动求微分,用户不需要再通过反向传播求解梯度。

多语言支持。TensorFlow官方支持Python、C++、Go和Java接口,用户可以在硬件配置较好的机器中用Python进行实验,在资源较紧张或需要低延迟的环境中用C++进行部署。

性能。虽然TensorFlow最开始发布时仅支持单机,在性能评测上并不出色,但是凭借Google强大的开发实力,TensorFlow性能已经追上了其他框架。

2、Google为什么开源Tensorflow

Google选择开源TensorFlow的原因很简单:第一是希望借助社区的力量,大家一起完善TensorFlow。第二是回馈社区,Google希望让这个优秀的工具得到更多的应用,提高学术界和工业界使用机器学习的效率。

3、TensorFlow架构

TensorFlow架构

用户在搭建算法时,可以根据个人喜好和实际需求采用合适的前端语言来构建计算图。图搭建完成后,以Session为桥梁连接TF的后端,启动并执行图的计算过程。TF的后端根据当前硬件环境调用Operation的Kernal(Operation在某种硬件设备的特定实现)完成具体的计算。

4、TensorFlow编程模式

符号式编程则将计算过程抽象为计算图,所有输入节点、运算节点和输出节点均符号化处理。将上述命令式编程代码转换为符号式编程:

A = Variable('A')

B = Variable('B')

C = B * AD = C + Constant(1)

# compiles the function

f = compile(D)

d = f(A=np.ones(10), B=np.ones(10)*2)

TensorFlow编程模式

5、TensorFlow基本概念

要使用TensorFlow,我们必须理解TensorFlow:

使用图(Graph)表示计算流程

在会话(Session)中执行图

使用张量(Tensor)表示数据

使用变量(Variable)维护状态

使用feed和fetch为任意的操作赋值或从中获取数据

TF使用graph表示计算流程。图中的节点称为操作(Operation,以下简称OP)。每个OP接受0到多个Tensor,执行计算,输出0到多个Tensor。图是对计算流程的描述,需要在Session中运行。Session将计算图的OP分配到CPU或GPU等计算单元,并提供相关的计算方法,并且会返回OP的结果。

张量(Tensor)

TF使用Tensor表示所有数据,相当于Numpy中的ndarray,0维的数值、一维的矢量、二维的矩阵到n维数组都是Tensor。

变量(Variable)

在训练模型时,Variable被用来存储和更新参数。Variable包含张量储存在内存的缓冲区中,必须显式地进行初始化,在训练后可以写入磁盘。

一般来说,用户使用一系列Variable来表示一个统计模型,在训练过程中运行图计算来不断更新,训练完成后可以使用这些Variable构成的模型进行预测。

Feed

TensorFlow除了可以使用Variable和Constant引入数据外,还提供了Feed机制实现从外部导入数据。一般Feed总是与占位符placeholder一起使用。

Fetch

要获取操作的输出,需要执行会话的run()函数,并且提供需要提取的OP。

图和会话

由于TF采用符号式编程模式,所以TF程序通常可以分为两部分:图的构建和图的执行。

图的构建

构建图的第一步,是创建源OP(source op),源操作不需要任何输入,例如常量(constant),源操作的输出被传递给其它操作做运算。

Python库中,OP构造器的返回值代表被构造出的OP的输出,这些返回值可以传递给其它OP构造器作为输入。

上面使用TensorFlow提供的默认图构建了包含三个节点的计算图:两个constant()操作和一个matmul()操作。要实际执行矩阵乘法,必须在Session中运行该计算图。

图的执行

要执行计算图,首先需要创建Session对象,如果不提供参数,Session构造器将运行默认图。

Session结束后,需要关闭以释放资源。用户也可以使用with控制语句自动关闭会话。


原文链接:https://blog.csdn.net/qq_38361726/java/article/details/87717447

参考资料:

1、世界最清楚tensorflow入门教程

https://blog.csdn.net/qq_38361726/article/details/87717447

你可能感兴趣的:(2020 tensorflow入门基础概念篇)