增加命名空间

为了使代码结构更加清晰,TensorBoard 图结构清楚,可以增加命名空间。

一、代码实例

import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
import tensorflow as tf 
def linear_regression(): 
    with tf.variable_scope('prepare_data'): 
        # 一、准备数据 
        X = tf.random_normal(shape=[100,1],name='feature') 
        y_true = tf.matmul(X,[[0.8]])+0.7 
    with tf.variable_scope('create_mode'): 
        # 二、构造模型 
        # 构造模型参数权重 weight 和偏移 bias
        weight = tf.Variable(initial_value=tf.random_normal(shape=[1,1]),name='Weights') 
        bias = tf.Variable(initial_value=tf.random_normal(shape=[1,1]),name='bias') 
        y_predict = tf.matmul(X,weight)+bias
    with tf.variable_scope('loss_function'):
        # 三、构造损失函数
        error = tf.reduce_mean(tf.square(y_predict-y_true))
    with tf.variable_scope('optimizer'):
        # 四、优化损失
        optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.1).minimize(error)
    
    # 2.收集变量(变量实现给图添加可训练的参数,它们在被创建的时候就带有类型属性和初始值)
    tf.summary.scalar('error',error) 
    tf.summary.histogram('weights',weight) 
    tf.summary.histogram('bias',bias)
    # 3.合并变量
    merged = tf.summary.merge_all() 
    #  显示初始化变量 
    init = tf.global_variables_initializer()
    # 开启会话
    with tf.Session() as sess:
        #  运行初始化变量
        sess.run(init)
        # 1.创建事件文件
        file_writer = tf.summary.FileWriter('e:/events/test',graph=sess.graph)
        print(' 查 看 训 练 前 模 型 参 数 : 权 重 : %f , 偏 量 : %f , 损 失:%f'%(weight.eval(),bias.eval(),error.eval()))

        # 开始训练
        for i in range(100):
            sess.run(optimizer)
            print('训练第%d 次后模型参数:权重:%f,偏量:%f,损失:%f' % ((i+1),weight.eval(), bias.eval(), error.eval()))
            # 4.运行合并变量
            summary = sess.run(merged)
            # 5.将每次迭代后的变量写入事件文件
            file_writer.add_summary(summary,i)
if __name__ == '__main__':
    linear_regression()

二、运行结果

三、变量可视化

  • 1.打开 CMD ,输入命令:tensorboard --logdir="e:/events/test",结果如下:
  • 2.打开浏览器,输入http://localhost:6006/,结果如下:
posted @ 2020-06-11 21:22  小他_W  阅读(201)  评论(0编辑  收藏  举报