tensorflow学习,几个基本概念:图,会话,feed,fetch等(一)

基本概念


tensorflow 的安装可以参考:tensorflow的安装
计划学习 tensorflow,于是找了一本书来看,说是白话书,却看得我一头雾水,什么 会话feedfetch等,完全不了解,这里搜集了一些资料,结合自己的理解,贴在这里。
以下几点是 TensorFlow 的一些基本概念,在学习和使用的过程中,是首先要明白的。

  • 在 tensorflow 中,一个图(grapg) 表示一个计算任务
  • 执行图(任务)的上下文,称之为 会话(session)
  • tensorflow 的数据单元当然是 张量(tensor)
  • tensorflow 通过 变量(variable) 维护状态
  • 图中的节点被称之为 op (operation 的缩写) . 一个 op 获得 0 个或多个 Tensor , 执行计算, 产生 0 个或多个 Tensor . 每个 Tensor 是一个类型化的多维数组
  • tensorflow 使用 feedfetch 可以为任意的操作赋值,或者从中获取数据。

接下来本节几部分内容都是围绕这几句话阐述的。

tensorflow 的一次基础 python 代码流程


插入一点代码,结合着,再理解上面几句话。

#encoding=utf8
import tensorflow as tf
# 使用 tensorflow 的默认图 tf

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

# 创建一个矩阵乘法 matmul op , 把 'matrix1' 和 'matrix2' 作为输入.
product = tf.matmul(matrix1, matrix2)

# 现在我们在默认图 tf 上添加了 3 个 op(matrix1, matrix2, product)
# 按照上面说的,tensorflow 计算需要在 session 里进行

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

# 执行计算
res = session.run(product)
print res

# 使用完要关闭 session
session.close()

结合注释,应该大概了解 tensorflow 的一次 python 代码基本流程了。

tensorflow 的变量


在实战项目中,变量(tensor)可以存储神经网络的权重,通过重复运行训练图,更新这个 tensor.

#encoding=utf8
import tensorflow as tf
# 使用 tensorflow 的默认图 tf

# 创建变量,初始化为标量 0
state = tf.Variable(0, name='counter')

# 常量 op
one = tf.constant(1)

# 加法 op
tmp = tf.add(state, one)

# assign() 操作是图所描绘的表达式的一部分, 正如 add() 操作一样. 
# 在调用 run() 执行表达式之前, 它并不会真正执行赋值操作.
new = tf.assign(state, tmp)

# 初始化 op 到图中
initOp = tf.global_variables_initializer()

# 创建 session
session = tf.Session()

session.run(initOp)
print session.run(state)    # 初始值

for _ in range(3):
    session.run(new)
    print session.run(state)

相信注释已经非常清楚了。

tensorflow 的 fetch


fetch,顾名思义,就是取数据而已,在上面的例子中,我们都是取出单个 tensor,tensorflow 支持同时取出多个 tensor,以下是一个实例,是本节第一个实例改写的:

#encoding=utf8
import tensorflow as tf
# 使用 tensorflow 的默认图 tf

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

# 添加了 sum op
product = tf.matmul(matrix1, matrix2)
sum     = tf.add(matrix1, matrix2)

session = tf.Session()

# 执行计算 乘积 与 和
res = session.run([product, sum])
print res

# 使用完要关闭 session
session.close()

tensorflow 的 feed


feed,看其名字猜测就是给某些变量(tensor)传递数据,官方的解释是:

feed 使用一个 tensor 值临时替换一个操作的输出结果. 你可以提供 feed 数据作为 run() 调用的参数. feed只在调用它的方法内有效, 方法结束, feed 就会消失.

还是以实例说明:

#encoding=utf8
import tensorflow as tf
# 使用 tensorflow 的默认图 tf

input1 = tf.placeholder(tf.types.float32)
input2 = tf.placeholder(tf.types.float32)
# 此时,input1 和 input2 只说明了数据类型,还没有传递数据
output = tf.mul(input1, input2)
with tf.Session() as sess:
    # feed 传递数据给 output op 的 input1 和 input2
    print sess.run([output], feed_dict={input1:[7.], input2:[2.]})
至此,已经对 tensorflow 有了一定的了解。
阅读更多:   tensorflow
已有 6 条评论
  1. […] 下面就可以初始化,训练了,要在 session 里训练,这点可以参考上一节:几个基本概念:图,会话,feed,fetch […]

  2. […] tensorflow学习,几个基本概念:图,会话,feed,fetch等(一) […]

  3. […] tensorflow学习,几个基本概念:图,会话,feed,fetch等(一) […]

  4. […] tensorflow学习,几个基本概念:图,会话,feed,fetch等(一) […]

  5. […] tensorflow学习,几个基本概念:图,会话,feed,fetch等(一) […]

  6. 博主真的是太棒了! 感谢无私分享

添加新评论

icon_redface.gificon_idea.gificon_cool.gif2016kuk.gificon_mrgreen.gif2016shuai.gif2016tp.gif2016db.gif2016ch.gificon_razz.gif2016zj.gificon_sad.gificon_cry.gif2016zhh.gificon_question.gif2016jk.gif2016bs.gificon_lol.gif2016qiao.gificon_surprised.gif2016fendou.gif2016ll.gif