本篇文章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