TensorFlow基本概念与用法

TensorFlow是用数据流图(data flow graphs)技术来进行数值计算的。数据流图是描述有向图中的数值计算过程。

有向图中,节点通常代表数学运算表示节点之间的某种联系,它负责传输多维数据(Tensors)。

节点可以被分配到多个计算设备上,可以异步和并行地执行操作。因为是有向图,所以只有等到之前的入度节点们的计算状态完成后,当前节点才能执行操作。

TensorFlow基本概念与用法_第1张图片

一.TensorFlow 基本用法分为以下五步:

1.将计算流程表示成图; 
2.通过Sessions来执行图计算; 
3.将数据表示为tensors; 
4.使用Variables来保持状态信息; 
5. 分别使用feeds和fetches来填充数据和抓取任意的操作结果

【注】:(1)使用图(graph)来表示任务(2)被称之为会话(Session)的上下文(context)中执行图 (3)使用tensor表示数据(4) 通过变量(Variable)维护状态 (5)使用feed和fetch可以为任意操作(arbitrary operation)赋值或者从其中获取数据

过程就是:建图->启动图->运行取值

计算矩阵相乘:

import tensorflow as tf

# 建图
matrix1 = tf.constant([[3., 3.]])
matrix2 = tf.constant([[2.],[2.]])

product = tf.matmul(matrix1, matrix2)

# 启动图
sess = tf.Session()

# 取值
result = sess.run(product)
print result

sess.close()

必须在会话(Session)里被启动,会话(Session)将图的op分发到CPU或GPU之类的设备上,同时提供执行op的方法,这些方法执行后,将产生的张量(tensor)返回。 创建一个 Session 对象, 如果无任何创建参数, 会话构造器将启动默认图。 
会话负责传递 op 所需的全部输入,op 通常是并发执行的。

总结:

1.tensorflow在开始时是在构建一个有向图,形成数据流图。

2.然后使用会话(session)run并发执行有向图节点(option)。

二.对于程序运行中的session和run介绍
 

# 启动默认图.
sess = tf.Session()

# 调用 sess 的 'run()' 方法, 传入 'product' 作为该方法的参数,
# 触发了图中三个 op (两个常量 op 和一个矩阵乘法 op),
# 向方法表明, 我们希望取回矩阵乘法 op 的输出.
result = sess.run(product)

# 返回值 'result' 是一个 numpy `ndarray` 对象.print result
# ==> [[ 12.]]# 任务完成, 需要关闭会话以释放资源。
sess.close()

交互式使用
在 Python API 中,使用一个会话 Session 来 启动图, 并调用 Session.run() 方法执行操作.


三.针对variable,initialize_all_variables理解

1.变量 Variable,是维护图执行过程中的状态信息的. 需要它来保持和更新参数值,是需要动态调整的

2.tf.initialize_all_variables,是预先对变量初始化。Tensorflow 的变量必须先初始化,然后才有值!而常值张量是不需要的。

下面的 assign() 操作和 add() 操作,在调用 run() 之前, 它并不会真正执行赋值和加和操作

#例:使用变量实现一个简单的计数器
# -创建一个变量, 初始化为标量 0.  初始化定义初值
state = tf.Variable(0, name="counter")

# 创建一个 op, 其作用是使 state 增加 1
one = tf.constant(1)
new_value = tf.add(state, one)
update = tf.assign(state, new_value)
# 启动图后, 变量必须先经过`初始化` (init) op 初始化,
# 才真正通过Tensorflow的initialize_all_variables对这些变量赋初值
init_op = tf.initialize_all_variables()
# 启动默认图, 运行 op
with tf.Session() as sess:  
  # 运行 'init' op
  sess.run(init_op)  
  # 打印 'state' 的初始值
  # 取回操作的输出内容, 可以在使用 Session 对象的 run() 调用 执行图时, 
  # 传入一些 tensor, 这些 tensor 会帮助你取回结果. 
  # 此处只取回了单个节点 state,
  # 也可以在运行一次 op 时一起取回多个 tensor: 
  print sess.run(state) 
  # 运行 op, 更新 'state', 并打印 'state'
  for _ in range(3):
    sess.run(update)
    print sess.run(state)
    # 输出:# 0# 1# 2# 3

TensorFlow基本概念与用法_第2张图片

Tensorflow文档中使用了三种记号来方便地描述张量的维度:阶,形状以及维数。以下展示了它们之间的关系: 


作者:QQ595454159
链接:https://www.imooc.com/article/details/id/41019
来源:慕课网
本文原创发布于慕课网 ,转载请注明出处,谢谢合作

你可能感兴趣的:(Python自学习)