二、Tensorflow的作用域和图

作用域主要用来不用重复定义变量,另外就是用与画图

import tensorflow as tf

'''
可视化
tf.summary.scalar  添加一个标量
tf.summary.audio 添加一个音频变量
tf.summary.image 添加一个图片变量
tf.summary.histogram 添加一个直方图变量
tf.summary.test 添加一个字符串类型的变量
'''

'''
后台执行命令
tensorboard --logdir ~/PycharmProjects/tensorflow/resutl
看到启动了一个6006的端口
'''

'''
代码部分
'''
#定义使用cpu
with tf.device('/cpu:0'):
    #定义作用域名字为'foo'
    with tf.variable_scope('foo'):
        #初始化一个值
        x_init1 = tf.get_variable('init_x',[10],tf.float32,initializer=tf.random_normal_initializer())[0]
        x = tf.Variable(initial_value=x_init1,name='x')
        y = tf.placeholder(dtype=tf.float32,name='y')
        z = x + y

    with  tf.variable_scope('bar'):
        a = tf.constant(3.0) + 4.0

    w = z * a

#开始记录信息
tf.summary.scalar('scalar_init_x',x_init1)
tf.summary.scalar(name='scalar_x',tensor=x)
tf.summary.scalar('scalar_z',z)
tf.summary.scalar('scalar_w',w)

assign_op = tf.assign(x,x + 1.0)
with tf.control_dependencies([assign_op]):
    with tf.device('/cpu:0'):
        out = x * y
    tf.summary.scalar('scalar_y',y)

with tf.Session(config=tf.ConfigProto(log_device_placement=True)) as sess:
    # merger all summary
    merged_summary = tf.summary.merge_all()
    #得到输出的文件对象
    writer = tf.summary.FileWriter('./result',sess.graph)

    #初始化
    sess.run(tf.global_variables_initializer())
    #print
    for i in range(1,5):
        summary,r_out,r_x,r_w = sess.run([merged_summary,out,x,w],feed_dict={y:i})
        writer.add_summary(summary,i)
        print("{},{},{}".format(r_out,r_x,r_w))

 

posted @ 2019-04-16 19:33  Allen_GC  阅读(217)  评论(0编辑  收藏  举报