增加命名空间
为了使代码结构更加清晰,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/
,结果如下:
正是江南好风景