tensorflow编程一些需要知道的 - 1

本文介绍了Tensorflow的编程基础知识,包括图的概念、变量、操作和会话执行。Tensorflow通过图来表示计算,操作是图中的节点,张量作为输入输出。编程分为图构建和执行两阶段,执行时利用Session运行图。为了调试,可以使用占位符和feed机制,以及Tensorboard进行可视化。此外,Variables用于保存模型参数和状态。
摘要由CSDN通过智能技术生成


1. Tensorflow 中有4种类型:tensor(张量), op(操作),Variables(变量), graph(图). tensorflow是以图来表示计算的系统。op是graph中的节点,tensor作为op的输入输出。Variables(变量)维持了图执行过程中的状态信息

2. 在编程时,一般分为两个阶段:1)图构建;2)执行图。 后者是在session(会话)中载入graph,通过op来驱动计算。

3. 在运行时,TensorFlow 上通过一个“翻译”过程,将定义的图转化为不同的可用计算资源间实现分布计算的操作,如cpu,GPU。

4. 一个 tensor包含一个静态类型 rank, 和一个 shape.

5. Value op 有 constant, sequence, random等类型。

6. Variables代表一个可修改的tensor,可作为op的输入。通常将一些训练时的统计值、模型参数等用Variables来表达。

7. Tensorflow是基于图的计算,为了debug,你无法在你的代码中直接print变量,因为这些代码往往都是在构建图,而不是执行。为了取回操作的输出内容, 可以在使用 Session 对象的 run() 调用执行图时, 传入一些 tensor, 这些 tensor 会帮助你取回结果,可以取回多个 tensor。

8. Tensorflow 还提 供给 (feed) 机制, 该机制可临时替代图中的任意操作中的 tensor, 并只在调用的时候有效。它是使用tf.placeholder()为这些操作创建占位符。比如在训练CNN时使用feed来实现读图片,即先tf.placeholder一个位置,然后在循环读图片时,run(feed_dict={the_output_image, tf.placeholder(dtype=tf.string): image_data})

9. Tensorflow把图的构建放在python等各种容易开发的语言里做,而把全部图的高密集计算放在python外做。

10. 通过SummaryWriter可以对graph进行序列化,并在tensorboard可视化,从而对你的graph有个全局到细节的掌控。

11. 通过tf.Summary进行变量存储和统计,通过SummaryWriter和tensorboard进行可视化。


写一个简单的sample code作为上述例子

import tensorflow as tf
import random

print "test basic"
a1 = tf.constant([[3., 3.]])
a2 = tf.constant([[2.,],[1.,]])
p = tf.matmul(a1, a2)
state = tf.Variable(13, name="counter")
init_op = tf.initialize_all_variables()
with tf.Session() as sess:
    sess.run(init_op)
    result1 = sess.run(a1)
    result2 = sess.run(a2)
    result3 = sess.run(p)
    for _ in range(10):
        result4 = sess.run(state.assign_add(1))
    print result1, result2, result3, result4


#test fetch

print ("test fetch")
with tf.Session() as sess:
    result = sess.run([a1, p])
    print result

#test placeholder
print ("test placeholder")
plh = tf.placeholder(dtype=tf.int32)
plhr = tf.add (plh, 2)
with tf.Session() as sess:
    print sess.run (plhr, feed_dict={plh:1})


#test save and restore
saver = tf.train.Saver()
init_op = tf.initialize_all_variables()
with tf.Session() as sess:
    sess.run(init_op)
    save_path = saver.save(sess, "/tmp/model.ckpt")


state2 = tf.Variable(0, name="counter")
restorer = tf.train.Saver()
with tf.Session() as sess:
    restorer.restore(sess, "/tmp/model.ckpt")
    print sess.run(state2)


#test visualize
summ = tf.Summary()
summ.value.add(tag='testsum', simple_value=111)
with tf.Session() as sess:
    sess.run(init_op)
    writer = tf.train.SummaryWriter("/tmp/modelvis", sess.graph)
    for global_step in range(50):
        cnt = sess.run (state.assign_add(random.randint(1,100)))
        tmp_summ = tf.Summary()
        tmp_summ.value.add(tag="sess_res", simple_value = cnt.item())
        writer.add_summary (tmp_summ, global_step)




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值