深度学习 03 tensorboard可视化

到目前为止,我们就会感觉TensorFlow就像一个黑盒子,调用一些东西就能得到结果,但是我们却看不到他的内部长什么样子。

在使用TensorFlow过程中,实际上他有两套语言两套变量,一套是用Python、前端语言定义的程序,另一套是真正在TensorFlow上执行的程序,那我们能不能通过什么方法看到TensorFlow平台上的执行过程呢?接下来就让我们学习——tensorboard可视化

什么是可视化

  • 可视化是用来查看在tensorflow平台下程序运行的过程,包括张量/变量、操作、数据流、学习过程等,从而方便tensorflow程序的理解,调试与优化。
  • tensorflow提供了专门的可视化工具tensorboard,他将tensorflow执行的数据、模型、过程用图形方式进行显示。TensorFlow在执行过程中,可以通过某些操作,将模型、数据、graph等信息,保存到磁盘中events文件中去,从而提供给tensorboard进行可视化。

启动tensorboard

1.首先利用cmd cd指令一步一步进入到python中的Scrips文件中

2.tensorboard. exe  --logdir="事件文件路径"

事件文件指你要执行那个文件,那个就是事件文件

还有在python中反斜杠有特殊含义,路径中最好用双斜杠

启动成功提示

 

进入tensorboard输入localhost:127.0.0.1.6006

案例1:为操作添加可视化

import tensorflow as tf

import os

#.创建一组操作

a = tf. constant([1, 2, 3, 4, 5])

var = tf. Variable(tf. random_normal([2, 3], mean = 0. 0, stddev = 1. 0), name = "var")

b = tf. constant(3. 0, name = "a")

c = tf. constant(4. 0, name = "b")

d = tf. add(b, c, name = "add")

#显式初始化

init_op = tf. global_variables_initializer()

with tf. Session as sess: 

sess. run(init_op)

#将当前session的graph信息写入事件文件

fw = tf. summary. FileWriter(".. /summary/", graph = sess. graph)

print(sess. run[a, var, d])

摘要与事件文件操作

如果需要将变量/张量在tensorboard中显示,需要执行一下两步:

1.收集变量

tf. summary. scalar(name, tensor)#收集标量,name为名字,tensor为值

tf. summary. histogram(name, tensor)#收集高纬度变量参数

tf. summary. image(name, tensor)#收集图片张量

2.合并变量并写入事件文件

merged = tf. summary. merge_all()#合并所有变量(将所有收集到的数据转换为可以存储到文件中的格式)

summary = sess. run(merged)#运行合并,每次迭代训练都需要执行

FileWriter. add_summary(summary, i)#添加摘要,i表示第几次的值

综合案例:实现线性回归

  • 任务描述

        -给定一组输入,输出作为样本

        -定义线性模型,并进行训练

        -将训练过程可视化

  • 线性回归思想

        -线性回归要在一组样本中找到一条直线,最佳拟合样本。

        -线性模型表达式为:y = wx + b,其中x, y为一直,w和b为要学习的参数

        -线性模型建立后,通过梯度下降,逐渐调整w和b的值,使之逐步接近真实值,如果精度达到预期,则停止训练

import tensorflow as tf

#创建样本数据

x = tf. random _normal([100, 1], mean = 1. 75, stddev = 0. 5, name = "x_data")

y_true = tf. matmul(x, [[2. 0]]) + 5. 0#计算 y=2x+5

#建立线性模型

##初始化权重(随机数)和偏置(固定设置为0),计算wx+b得到预测值

weight = tf. Variable(tf. random_normal([1, 1], name = "w", trainable = True)#训练过程中值是否允许变化

bias = tf. Variable(0. 0, name = "b", trainable = True)#偏置

y_predict = tf. matmul(x, weight) + bias#计算预测值

#创建损失函数

loss = tf. reduce_mean(tf. square(y_true - y_predict))#均方差损失函数

#使用梯度下降进行训练

train_op = tf. train. GradientDescentOptimizer(0. 1). minimize(loss)

init_op = tf. global_variables_initializer()

with tf. Session as sess: 

sess. run(init. op)

print("weight: ", weight. eval(), "bias: ", bial. eval())

for 1 in range(10): 

sess. run(train. op)

print(1, ": ", "weight: ", weight. eval(), "bias: ", bial. eval())

 

import tensorflow as tf

#创建样本数据

x = tf. random _normal([100, 1], mean = 1. 75, stddev = 0. 5, name = "x_data")

y_true = tf. matmul(x, [[2. 0]]) + 5. 0#计算 y=2x+5

#建立线性模型

##初始化权重(随机数)和偏置(固定设置为0),计算wx+b得到预测值

weight = tf. Variable(tf. random_normal([1, 1], name = "w", trainable = True)#训练过程中值是否允许变化

bias = tf. Variable(0. 0, name = "b", trainable = True)#偏置

y_predict = tf. matmul(x, weight) + bias#计算预测值

#创建损失函数

loss = tf. reduce_mean(tf. square(y_true - y_predict))#均方差损失函数

#使用梯度下降进行训练

train_op = tf. train. GradientDescentOptimizer(0. 1). minimize(loss)

#收集损失函数的值

tf. summary. scalar("losses", loss)

merged = tf. summary. merge_all()#合并摘要操作

init_op = tf. global_variables_initializer()

with tf. Session as sess: 

sess. run(init. op)#执行初始化op

#打印初始权重和偏置

print("weight: ", weight. eval(), "bias: ", bial. eval())

#指定事件文件并记录图的信息

fw = tf. summary. FileWriter(".. /summary/", graph = sess. graph)

#循环训练

for 1 in range(10): 

sess. run(train. op)#执行训练

summary = sess. run(merged)#执行摘要合并操作

fw. add_summary(summary, i)#写入事件文件

print(1, ": ", "weight: ", weight. eval(), "bias: ", bial. eval())

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值