1. 什么是Tensorflow
Tensorflow是Google开源的基于数据流图的科学计算库,适用于机器学习。Tensor的意思是张量,向量是一阶张量,矩阵是二阶张量;flow是流动的意思。因此Tensorflow的意思是张量在图中流动。
Tensorflow使用tensor来表示数据;使用图(graph)来表示计算任务;在会话(session)的上下文(context)中执行图。
TensorFlow是一个编程系统,使用图来表示计算任务。图中的节点被称之为op (operation 的缩写)。一个op获得0个或多个Tensor,执行计算,产生0个或多个Tensor。每个Tensor 是一个类型化的多维数组。一个TensorFlow图描述了计算的过程。为了进行计算,图必须在会话里被启动。会话将图的op分发到诸如CPU或GPU之类的设备上,同时提供执行op的方法。这些方法执行后,将产生的tensor返回。在Python语言中,返回的tensor是numpy中的ndarray对象。
2.构建图
构建图的第一步是创建源op(source op),源op不需要任何输入,例如常量(Constant)。源op的输出被传递给其它op做运算。
import tensorflow as tf
# 创建一个常量 op, 产生一个 1x2 矩阵. 这个 op 被作为一个节点加到默认图中.
matrix1 = tf.constant([[3., 3.]])
# 创建另外一个常量 op, 产生一个 2x1 矩阵.
matrix2 = tf.constant([[2.],[2.]])
# 创建一个矩阵乘法 matmul
product = tf.matmul(matrix1, matrix2)
TensorFlow的Python库有一个默认图(default graph),op构造器可以为其增加节点。这个默认图对许多程序来说已经足够用了。
import tensorflow as tf
# 创建一个常量 op, 产生一个 1x2 矩阵. 这个 op 被作为一个节点加到默认图中.
# 构造器的返回值代表该常量 op 的返回值.
matrix1 = tf.constant([[3., 3.]])
# 创建另外一个常量 op, 产生一个 2x1 矩阵.
matrix2 = tf.constant([[2.],[2.]])
# 创建一个矩阵乘法 matmul
product = tf.matmul(matrix1, matrix2)
if matrix1.graph is tf.get_default_graph():
print('matrix1所在的图(Graph)是当前上下文默认的图')
if matrix2.graph is tf.get_default_graph():
print('matrix2所在的图(Graph)是当前上下文默认的图')
if product.graph is tf.get_default_graph():
print('product所在的图(Graph)是当前上下文默认的图')
运行结果:
matrix1所在的图(Graph)是当前上下文默认的图
matrix2所在的图(Graph)是当前上下文默认的图
product所在的图(Graph)是当前上下文默认的图
3.启动图
构造阶段完成后,才能启动图。启动图的第一步是创建一个Session对象,如果无任何创建参数,会话构造器将启动默认图。
# 方法1
import tensorflow as tf
# 创建一个常量 op, 产生一个 1x2 矩阵. 这个 op 被作为一个节点加到默认图中.
matrix1 = tf.constant([[3., 3.]])
# 创建另外一个常量 op, 产生一个 2x1 矩阵.
matrix2 = tf.constant([[2.],[2.]])
# 创建一个矩阵乘法 matmul op , 把 'matrix1' 和 'matrix2' 作为输入.
# 返回值 'product' 代表矩阵乘法的结果.
product = tf.matmul(