AYE89

coding & learning

导航

TensorFlow使用基础-Tensor

Posted on 2017-11-14 14:22  AYE89  阅读(342)  评论(0编辑  收藏  举报

使用 TensorFlow 之前你需要了解关于 TensorFlow 的以下基础知识 :
• 使用图 (graphs) 来表示计算 .
• 在会话 ( Session ) 中执行图 .
• 使用张量 (tensors) 来代表数据 .
• 通过变量 ( Variables ) 维护状态 .
• 使用供给 ( feeds ) 和取回 ( fetches ) 将数据传入或传出任何操作

概述

TensorFlow 是一个以图 (graphs) 来表示计算的编程系统 , 图中的节点被称之为 op(op-
eration 的缩写 ). 一个 op 获得零或多个张量 (tensors) 执行计算 , 产生零或多个张量。张量
是一个按类型划分的多维数组。例如 , 你可以将一小组图像集表示为一个四维浮点数数
组 , 这四个维度分别是 [batch, height, width, channels] 。

 

TensorFlow 的图是一种对计算的抽象描述。在计算开始前 , 图必须在 会话 ( Session
() ) 中被启动 . 会话将图的 op 分发到如 CPU 或 GPU 之类的设备 ( Devices() ) 上 , 同时提供
执行 op 的方法。这些方法执行后 , 将产生的张量 (tensor) 返回。在 Python 语言中 , 将返
回 numpy 的 ndarray 对象 ; 在 C 和 C++ 语言中 , 将返回 tensorflow::Tensor 实例。

计算图

通常, TensorFlow 编程可按两个阶段组织起来 : 构建阶段和执行阶段 ; 前者用于组
织计算图,而后者利用 session 中执行计算图中的 op 操作。

构建过程完成后就可运行执行过程。为了载入之前所构建的图,必须先创建一个
会话对象 ( Session object) 。会话构建器在未指明参数时会载入默认的图。
完整的会话 API 资料,请参见会话类 (Session object) 。

TensorFlow 事实上通过一个“翻译”过程, 将定义的图转化为不同的可用计算资源
间实现分布计算的操作,如 CPU 或是显卡 GPU 。通常不需要用户指定具体使用的 CPU
或 GPU , TensorFlow 能自动检测并尽可能的充分利用找到的第一个 GPU 进行运算。

张量

TensorFlow 程序使用 tensor 数据结构来代表所有的数据 , 计算图中 , 操作间传递的
数据都是 tensor. 你可以把 TensorFlow 的张量看作是一个 n 维的数组或列表 . 一个 tensor
包含一个静态类型 rank, 和一个 shape. 想了解 TensorFlow 是如何处理这些概念的 , 参见
Rank, Shape, 和 Type] 。

每个Tensor中的元素都有相同的data type,并且data type总是已知的。

shape表示有几维和每个维度的size,可能有部分未知

除了tf.Variable,一个张量的值是不可变的

 

Rank

 tf.Tensor对象的rank表示有几个维度

tf.Tensor切片

[ ]中每个数字代表一个索引(index),index本身可以是一个tf.Tensor的标量

Rank为2的tensor,输入两个索引得到一个标量,如下:

 

Shape

表示每个维度的size

 

Data types

tensor中的数据类型,引用tf.DataType

 

Tensor.eval

用于计算一个tensor的值