首先介绍几个用法:

with tf.name_scope(name = "inputs"):

这个是用于区分区域的。如,train,inputs等。

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

name用于对节点的命名。

merged = tf.summary.merge_all()

注:这里很多代码可能跟莫烦老师的代码并不一样,主要是由于版本变迁,tensorflow很多函数改变。

这一步很重要!!!如果你想看loss曲线,一定要记得家上这一步。还有

 with tf.name_scope("loss"):
loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys-l2),reduction_indices=[1]))
tf.summary.scalar("loss",loss)

对于你绘制的曲线。一定要记得是分成各个点来绘制的。所以在最后也会有改动,每一个都要加到summary 里面。

所有代码:

 for i in range(1000):
sess.run(train_step, feed_dict={xs:x_data, ys:y_data})
if i%50 == 0:
rs = sess.run(merged,feed_dict={xs:x_data,ys:y_data})
writer.add_summary(rs, i)

至于启动tensorboard:

首先在cmd或者terminal切换到当前文件所在的文件夹,然后输入:
tensorboard --logdir=logs/(貌似不需要斜杠也可以可以试一下),当然 这里直接输入路径也是可以的。

最后会给你一个网址:0.0.0.0:6006还是什么。很多windows同学打不开,那就把前面的ip直接换成localhost即可

所有代码:

 # -*- coding: utf-8 -*-
"""
Created on Wed Jun 14 17:26:15 2017 @author: Jarvis
""" import tensorflow as tf
import numpy as np
def addLayer(inputs,inSize,outSize,level,actv_func = None):
layername = "layer%s"%(level)
with tf.name_scope("Layer"):
with tf.name_scope("Weights"):
Weights = tf.Variable(tf.random_normal([inSize,outSize]),name="W")
# tf.summary.histogram(layername+"/Weights",Weights)
with tf.name_scope("bias"):
bias = tf.Variable(tf.zeros([1,outSize]),name = "bias")
# tf.summary.histogram(layername+"/bias",bias) with tf.name_scope("Wx_plus_b"):
Wx_plus_b = tf.matmul(inputs,Weights)+bias
# tf.summary.histogram(layername+"/Wx_plus_b",Wx_plus_b)
if actv_func == None:
outputs = Wx_plus_b
else:
outputs = actv_func(Wx_plus_b)
tf.summary.histogram(layername+"\outputs",outputs)
return outputs
x_data = np.linspace(-1,1,300)[:,np.newaxis]
noise= np.random.normal(0, 0.05, x_data.shape).astype(np.float32)
y_data = np.square(x_data)+0.5+noise
with tf.name_scope("inputs"):
xs = tf.placeholder(tf.float32,[None,1],name = "x_input")
ys = tf.placeholder(tf.float32,[None,1],name = "y_input") l1 = addLayer(xs,1,10,level = 1,actv_func=tf.nn.relu)
l2 = addLayer(l1,10,1,level=2,actv_func=None)
with tf.name_scope("loss"):
loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys-l2),reduction_indices=[1]))
tf.summary.scalar("loss",loss)
with tf.name_scope("train"):
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss) sess = tf.Session()
merged = tf.summary.merge_all()
writer = tf.summary.FileWriter("logs/",sess.graph)#很关键一定要在run之前把这个加进去 sess.run(tf.global_variables_initializer()) for i in range(1000):
sess.run(train_step, feed_dict={xs:x_data, ys:y_data})
if i%50 == 0:
rs = sess.run(merged,feed_dict={xs:x_data,ys:y_data})
writer.add_summary(rs, i)

很多用spyder的同学可能老师报一些莫名奇妙的错误,你不妨试试重启一下kernel试试

TFboy养成记 tensorboard的更多相关文章

  1. TFboy养成记 多层感知器 MLP

    内容总结与莫烦的视频. 这里多层感知器代码写的是一个简单的三层神经网络,输入层,隐藏层,输出层.代码的目的是你和一个二次曲线.同时,为了保证数据的自然,添加了mean为0,steddv为0.05的噪声 ...

  2. TFBOY 养成记 一些比较好多文章。

    API解释中文版(简书文章,没事看看): http://www.jianshu.com/p/e3a79eac554f Tensorlfow op辨异:tf.add()与tf.nn.bias_add() ...

  3. TFboy养成记 CNN

    1/先解释下CNN的过程: 首先对一张图片进行卷积,可以有多个卷积核,卷积过后,对每一卷积核对应一个chanel,也就是一张新的图片,图片尺寸可能会变小也可能会不变,然后对这个chanel进行一些po ...

  4. TFboy养成记 MNIST Classification (主要是如何计算accuracy)

    参考:莫烦. 主要是运用的MLP.另外这里用到的是批训练: 这个代码很简单,跟上次的基本没有什么区别. 这里的lossfunction用到的是是交叉熵cross_entropy.可能网上很多形式跟这里 ...

  5. TFboy养成记 tf.cast,tf.argmax,tf.reduce_sum

    referrence: 莫烦视频 先介绍几个函数 1.tf.cast() 英文解释: 也就是说cast的直译,类似于映射,映射到一个你制定的类型. 2.tf.argmax 原型: 含义:返回最大值所在 ...

  6. TFboy养成记 tensor shape到底怎么说

    tensor.shape 对于一位向量,其形式为[x,] 对于矩阵,二维矩阵[x,y],三维矩阵[x,y,z] 对于标量,也就是0.3*x这种0.3,表示形式为() 如果说这个矩阵是三维的,你想获得其 ...

  7. TFboy养成记 简单小程序(Variable & placeholder)

    学习参考周莫烦的视频. Variable:主要是用于训练变量之类的.比如我们经常使用的网络权重,偏置. 值得注意的是Variable在声明是必须赋予初始值.在训练过程中该值很可能会进行不断的加减操作变 ...

  8. TFboy养成记

    转自:http://www.cnblogs.com/likethanlove/p/6547405.html 在tensorflow的使用中,经常会使用tf.reduce_mean,tf.reduce_ ...

  9. 2016级算法第六次上机-F.AlvinZH的学霸养成记VI

    1082 AlvinZH的学霸养成记VI 思路 难题,凸包. 分析问题,平面上给出两类点,问能否用一条直线将二者分离. 首先应该联想到这是一个凸包问题,分别计算两类点的凸包,如果存在符合题意的直线,那 ...

随机推荐

  1. UVa10723 - Cyborg Genes

    这题我能想到的解决方法是: 最优解的长度好找,两串的长度和-LCS: 根据anslen,枚举出解的数目...但想不出简单有效的枚举方法,这种做法可能超时 网上看大神的博客后,发现大家都用的此方法: 最 ...

  2. Django(一)

    Django 一.什么是web框架 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演 ...

  3. Python3中urllib详细使用方法(header,代理,超时,认证,异常处理) 转

    urllib是python的一个获取url(Uniform Resource Locators,统一资源定址器)了,我们可以利用它来抓取远程的数据进行保存哦,下面整理了一些关于urllib使用中的一些 ...

  4. MYSQL 总结

    1.数据库实质中访问的是 DBMC,数据库是一种存储介质 2.groub by 与 having 理解 group by 有一个原则,select后面的所有列中,没有使用聚合函数的列必须出现在 gro ...

  5. call()与apply() 改变this指向

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 15.0px Consolas; color: #a5b2b9 } span.Apple-tab-span ...

  6. Java基础(00)

    Java发展史 Java之父:詹姆斯.高斯林(James Gosling). SUN(Stanford University Network 斯坦福大学网络公司)产物. 1995年5月23日,java ...

  7. 加载web项目时报的错误:Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modul

    用eclipse开发的java项目不能加载到tomcat6.0服务器,原因是:jst.web的版本高了 <installed facet="jst.web" version= ...

  8. spark-shell启动报错:Yarn application has already ended! It might have been killed or unable to launch application master

    spark-shell不支持yarn cluster,以yarn client方式启动 spark-shell --master=yarn --deploy-mode=client 启动日志,错误信息 ...

  9. C# Request.InputStream 读取输入流为空的原因处理

    今天在手机App测试接口的时候发现一个通过POST方式的接口 获取body中的参数一直为空,但是在数据量小的时候却可以获取到数据,开始怀疑是不是POST的长度有限制,然后在web.config中修改了 ...

  10. 轻松学会ES6新特性之生成器

    生成器虽然是ES6最具魔性的新特性,但也是最难懂得的一节,笔者写了大量的实例来具体化这种抽象的概念,能够让人一看就懂,目的是希望别人不要重复或者减少笔者学习生成器的痛苦经历. 在说具体的ES6生成器之 ...