Tensor

Tensor

TensorFlow中的Tensor就是张量,张量是任意维的数组。常用的张量有:

  • constant(标量/常量):零维数组,零阶张量。例如,0或一个字符串常量。
  • vector(向量/矢量):一维数组,一阶张量。例如,[0]或[0, 1, 1, 2, 3, 5].
  • matrix(矩阵):二维数组,二阶张量。例如,[[4, 9, 2], [3, 5, 7], [8, 1, 6]]

在TensorFlow中,张量的创建、销毁和控制由指令完成。典型的TensorFlow代码大多数都是指令。

Graph

TensorFlow中的图,也叫作计算图或数据流图(数据库原理和软件工程中的数据流图看似百无一用),是一种数据结构

TensorFlow程序可以选择创建一张或者多张图。

图的节点是指令;图的边是张量。(张量就像是在图中的流动,所以称为Tensor Flow).

张量流经图,在每个节点由一个指令控制。一个指令的输出张量通常会变成后续指令的输入张量

TensorFlow实现延迟执行模型,系统仅会根据相关节点的需求在需要时计算节点。

常量和张量都是图中的一种指令常量是始终会返回同一张量值的指令变量是会返回分配给它的任何张量的指令

图必须要在TensorFlow会话Session中运行,会话存储了被会话运行的图的状态.

会话可以将图发布到多台设备上(假如程序在某个分布式计算框架上运行)。官方提供的分布式TensorFlow文档.

TensorFlow 提供了一个默认图。不过,我们建议您明确创建自己的 Graph,以便跟踪状态(例如,您可能希望在每个单元格中使用一个不同的 Graph)。

举例,“海伦-秦九韶公式”三斜求积

相关API.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import tensorflow as tf

# create a graph
g = tf.Graph()

# establish g as the "default" graph

with g.as_default():
a = tf.constant(3.0, name="a")
b = tf.constant(4.0, name="b")
c = tf.constant(5.0, name="c")
two = tf.constant(2.0)

p = tf.divide(tf.add(a, tf.add(b, c)), two)
pa = tf.subtract(p, a)
pb = tf.subtract(p, b)
pc = tf.subtract(p, c)

s = tf.sqrt(tf.multiply(tf.multiply(p, pa), tf.multiply(pb, pc)))

with tf.Session() as sess:
print(s.eval())
6.0

总结

TensorFlow编程本质是两个步骤:

  1. 将常量、变量和指令整合到一个图中;
  2. 在一个会话中评估这些常量、变量和指令。