tensorflow入门(一)

使用Tensorflow必须要明白Tensorflow

1.使用图(graph)来表示计算任务

2.在被称之为会话(Session)中的上下文(context)中执行图

3.使用tensor(张量)表示数据

4.通过遍历(Variable)维护状态

5.使用feed和fetch可以为任意的操作(arbitary operation)赋值或者从其中获取数据

Tensorflow 是一个编程系统,使用图来表示计算任务,图中的节点被称之为op,一个op获得0个或者多个tensor,执行计算,产生0个或者多个tensor。每个tensor是一个类型化的多维数组,例如,你可以将一个小组图像集表示为一个四维浮点数数组 ,这四个纬度分别是[batch, height, width, channels]。

一个tensorflow图描述了计算的过程,为了进行计算,图必须在会话里启动,会话将图的op分发到诸如cpu,gpu之类的设备上,同时提供执行op的方法,这些方法执行后,将产生的tensor返回,在python语言中,返回tensor是numpy ndarray对象;在c,c++语言中返回的tensor是tensorflow::tensor实例。

计算图
TensorFlow 程序通常被组织成一个构建阶段和一个执行阶段. 在构建阶段, op 的执行步骤 被描述成一个图. 在
执行阶段, 使用会话执行执行图中的 op.
例如, 通常在构建阶段创建一个图来表示和训练神经网络, 然后在执行阶段反复执行图中的训练 op.
TensorFlow 支持 C, C++, Python 编程语言. 目前, TensorFlow 的 Python 库更加易用, 它提供了大量的辅助
函数来简化构建图的工作, 这些函数尚未被 C 和 C++ 库支持.

三种语言的会话库 (session libraries) 是一致的 。

构建图
构建图的第一步, 是创建源 op (source op). 源 op 不需要任何输入, 例如
常量 (Constant) . 源 op 的输出
被传递给其它 op 做运算.
Python 库中, op 构造器的返回值代表被构造出的 op 的输出, 这些返回值可以传递给其它 op 构造器作为输入.
TensorFlow Python 库有一个默认图 (default graph), op 构造器可以为其增加节点. 这个默认图对 许多程序
来说已经足够用了. 阅读
Graph 类 文档 来了解如何管理多个图.


import tensorflow as tf
# 创建一个常量 op, 产生一个 1x2 矩阵. 这个 op 被作为一个节点
# 加到默认图中.
#
# 构造器的返回值代表该常量 op 的返回值.
matrix1 = tf.constant([[3., 3.]])
# 创建另外一个常量 op, 产生一个 2x1 矩阵.
matrix2 = tf.constant([[2.],[2.]])
# 创建一个矩阵乘法 matmul op , 把 'matrix1' 和 'matrix2' 作为输入.
# 返回值 'product' 代表矩阵乘法的结果.
product = tf.matmul(matrix1, matrix2)
默认图现在有三个节点, 两个 constant() op, 和一个 matmul() op. 为了真正进行矩阵相乘运算, 并得到矩阵
乘法的 结果, 你必须在会话里启动这个图.

在一个会话中启动图
构造阶段完成后, 才能启动图. 启动图的第一步是创建一个
Session 对象, 如果无任何创建参数, 会话构造器
将启动默认图.

欲了解完整的会话 API, 请阅读Session 类.

# 启动默认图.
sess = tf.Session()
# 调用 sess 的 'run()' 方法来执行矩阵乘法 op, 传入 'product' 作为该方法的参数.
# 上面提到, 'product' 代表了矩阵乘法 op 的输出, 传入它是向方法表明, 我们希望取回
# 矩阵乘法 op 的输出.
#
# 整个执行过程是自动化的, 会话负责传递 op 所需的全部输入. op 通常是并发执行的.
#
# 函数调用 'run(product)' 触发了图中三个 op (两个常量 op 和一个矩阵乘法 op) 的执行.
#
# 返回值 'result' 是一个 numpy `ndarray` 对象.
result = sess.run(product)
print result
# ==> [[ 12.]]
# 任务完成, 关闭会话.
sess.close()
Session 对象在使用完后需要关闭以释放资源. 除了显式调用 close 外, 也可以使用 "with" 代码块 来自动完
成关闭动作.

with tf.Session() as sess:
result = sess.run([product])
print(result)

猜你喜欢

转载自blog.csdn.net/javaisnotgood/article/details/79898535