tensorflow学习笔记(1):基础元素

来源:互联网 发布:云短信软件 编辑:程序博客网 时间:2024/05/15 22:15

如果你想使用TensorFlow,你需要了解它的基本元素和运行方式:

  • 使用计算图(graph ) 定义计算任务

  • 在被称之为会话 (Session) 的上下文 (context) 中,运行计算图(graph)

  • 使用张量(tensor)表示数据

  • 通过变量(Variable)维护状态

  • 使用注入(feed)为任意操作(arbitrary operation) 赋值,使用取回(fetch)从任意操作中获取数据

TensorFlow是一个编程系统,结合下图,我们从基本元素开始说起。

这里写图片描述


1. 节点(operation)

节点被称之为op(节点也叫操作、算子,是operation的缩写)。一个op获得0个或多个tensor,执行计算产生0个或多个tensor。

2. 边(tensor)

TensorFlow,字面意思就是张量的流动(flow)。计算图的一条边,就是一个tensor。而张量的流动则是指保持计算节点不变,让数据进行流动。tensor是一个数据类型的一维、二维、三维、四维等多维数组。例如,你可以把一组图像集表示为一个四维浮点数的数组,这四个维度分别是 [batch, height, width, channels]。

3. 计算图(graph)

节点和边相互连接成计算图,一个计算图描述了一次计算过程。

这是一个声明式的编程方式,如同做菜,我们需要先把主材和佐料都准备好,才能添油烹制。TensorFlow的计算方式也是如此。在构建阶段,我们需要把网络(如神经网络)以计算图的形式构建出来,接着启动会话(session),运行先前构建的图,得到目标结果。

4. 会话(session)

使用TensorFlow编写的程序,通常被组织成一个构建阶段和一个运行阶段:在构建阶段,操作的执行步骤被描述成一个计算图;在运行阶段,使用会话执行计算图中的操作。

为了得到结果,计算图必须在会话里被启动。会话将计算图的op分发到诸如CPU或GPU之类的设备上,同时提供执行op的方法。这些方法执行后,将产生的tensor返回。在Python语言中, 返回的tensor是numpy ndarray对象;在C和C++语言中,返回的tensor是tensorflow Tensor实例。


5. 数据结构tensor

TensorFlow使用张量的数据结构表示所有数据。在计算图中,操作间传递的数据都是tensor。你可以把tensor看作一个n维的数组或列表。一个tensor包含一个静态类型rank和一个动态类型shape。

5.1 维度 (Shape)

TensorFlow中使用了三种记号描述张量的维度:阶,形状以及维数。下表展示了他们之间的关系:

阶 形状 维数 实例 0 [ ] 0-D 一个0维张量是一个常量,如5 1 [D0] 1-D 一个1维张量是一个矢量,如[5, 4] 2 [D0, D1] 2-D 一个2维张量是一个矩阵,如[[5, 4], [2, 3]] 3 [D0, D1, D2] 3-D 一个3维张量是一个立方矩阵,如[[[5, 4], [2, 3]], [[5, 4], [2, 3]] n [D0, D1, D2,….Dn] n-D 一个n维张量是一个多维数组

5.2 阶(Rank)

在TensorFlow系统中,张量的维数来被描述为阶。但是张量的阶和矩阵的阶并不是同一个概念:张量的阶(关于如顺序、度数或者是n维)是张量维数的一个数量描述。比如,Python中的list列表就是2阶。

你可以认为零阶张量是一个常量;一阶张量是一个向量;二阶张量就是我们平常所说的矩阵,你可以用语句t[i, j]来访问其中的任何元素;对于三阶张量,你可以用t[i, j, k]来访问其中的任何元素。

5.3 数据类型 (Type)

除了维度,tensor还有一个数据类型属性。你可以为一个张量指定下列数据类型中的任意一个类型:

这里写图片描述


6. 变量(variable)

在运行计算图过程中,变量用于维护某个参数的状态。TensorFlow通常会将一个统计模型中的参数表示为一组变量,例如你可以将一个神经网络的权重作为某个变量存储在一个tensor中。在训练过程中, 通过重复运行计算图,更新这个tensor。


参考文章

  1. tensorflow原理

  2. tensorflow架构

原创粉丝点击