本篇文章2688字,读完约7分钟

雷锋。这篇文章的作者杰瑞。原文包含在作者的个人博客中。雷锋。(公开号码:雷锋。com)已被授权。

张量板可以更直观地观察神经网络中数据的变化,或者构造的神经网络的结构。最后一篇文章说matplotlib的第三方可视化可以在一定程度上用于可视化。然而,张量流也有自己的可视化模块张量板,可以更直观地看到整个神经网络的结构。

上面的结构图甚至可以扩展成:

使用结构图:

张量流。名称_范围(图层名称):

直接使用上述代码生成一个带有可扩展符号的字段,并支持嵌套操作:

tf.name_scope(layer_name):

tf.name_scope(权重):

节点通常是变量或常数,需要通过添加“name=“””参数来显示和命名,例如:

tf.name_scope(权重):

权重= TF . variable(TF . random _ normal([in _ size,out_size])

结构图的符号和含义:

变量:

变量可以使用张量流。直方图_摘要()方法:

Tf。直方图摘要(图层名称+"/权重",权重)#名称,权重分配

常数:

常数可以使用张量流.标量_摘要()方法:

Tf.scalar_summary(损失,损失)#命名和分配

显示:

最后,需要整合和存储摘要编写器:

#合并到摘要中

合并= tf.merge _ all _ summaries()

#选择可视存储目录

writer = TF . train . summary writer("/directory ",sess.graph)

合并也需要运行,所以它也需要:

结果= sess.run(合并)#合并后也需要运行

writer.add_summary(结果,I)

执行:

运行后,它将在相应的目录中生成一个文件并执行:

Tensorboard-logdir = "/directory "

将给出一个网址:

只需在浏览器中打开这个网址,由于兼容性问题,火狐不太兼容,建议使用chrome。

常量在事件中,结构图在图形中,变量在最后两个标签中。

附在项目代码后;具体项目承接前一条;

importtensorflowastf

importnumpyasnp

默认层(输入,输入大小,输出大小,n层,激活函数=无):#激活函数=无线性函数

layer_name="layer%s"%n_layer

withtf.name_scope(layer_name):

withtf.name_scope(权重):

重量= TF。变量。random _ normal ([in _ size,out _ size])#权重都是随机变量

Tf。直方图摘要(图层名称+"/权重",权重)#可视化查看变量

withtf.name_scope(偏差):

偏差= TF。变量。零([1,out _ size])+0.1) #偏差建议的初始值不是0

Tf。直方图摘要(图层名称+"/偏差",偏差)#视觉观察变量

withtf.name_scope( wx_plus_b):

wx_plus_b=tf.matmul(输入,权重)+偏差#输入*权重+偏差

Tf .直方图_摘要(layer _ name+"/wx _ plus _ b ",wx _ plus _ b) #可视化查看变量

ifactivation _ functionisnone:

输出=wx_plus_b

否则:

输出=激活功能(wx_plus_b)

Tf。直方图总结(图层名称+"/输出",输出)#视觉观察变量

返回输出

#创建数据x_data,y_data

X _ data = NP。linspace (-1,1,300) [:,np.newaxis] # [-1,1]间隔,300单位,np。新轴增加尺寸

噪声= np.random.normal (0,0.05,x _ data.shape) #噪声

y _ data = NP . square(x _ data)-0.5+噪声

Withtf.name_scope(输入):#结构化

xs=tf.placeholder(tf.float32,[none,1],name= x_input)

ys=tf.placeholder(tf.float32,[none,1],name= y_input)

#三层神经,输入层(1个神经元),隐藏层(10个神经元)和输出层(1个神经元)

L1 = add _ layer (xs,1,10,n _ layer = 1,activation _ function = TF . nn . relu)#隐藏层

预测=添加层(L1,10,1,n _ layer = 2,激活功能=无)#输出层

#预测值不同于y_data

withtf.name_scope(丢失):

损失= TF。减少平均值。减少总和。平方(ys-预测),减少指标= [1]) #平方(平方),总和(总和),平均值(平均值)

Tf.scalar_summary(损失,损失)#视觉观察常数

withtf.name_scope( train):

训练步长= TF。train.gradientcenter优化器(0.1)。最小化(损失)# 0.1学习效率,最小化(损失)减少损失错误

init = TF . initialize _ all _ variables()

sess=tf.session()

#合并到摘要中

合并= tf.merge _ all _ summaries()

#选择可视存储目录

writer = TF . train . summary writer(" desktop/",sess.graph)

Sess.run(init)#首先执行init

#培训1千次

对于范围(1000):

sess.run(train_step,feed_dict={xs:x_data,ys:y_data})

ifi%50==0:

结果=成功。运行(合并,feed _ dict = {xs: x _ data,ys: y _ data}) #合并后也需要运行

作家。add _ summary(结果,I) #结果属于汇总类型,需要放入writer,I steps (x轴)

雷锋。com相关阅读:

本文详细说明了如何使用张量流实现基于lstm(带源代码)的文本分类

万事开头难!为了开始张量流,tf男孩必须理解这9个问题

雷锋文章版权所有。严禁擅自转载。详情请参考转载说明。

来源:搜狐微门户

标题:这才是 TensorFlow 自带可视化工具 TensorBoard 的正确打开方式!(附项目源码)

地址:http://www.shwmhw.com/shxw/60335.html