Tensorflow搭建神经网络及使用Tensorboard进行可视化
创建神经网络模型
1、构建神经网络结构,并进行模型训练
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt #python的结果可视化模块 """定义一个添加神经层的函数
inputs:输入数据
in_size:输入神经元的个数
out_size:输出神经元的个数
activation_function:激活函数
"""
def add_layer(inputs, in_size, out_size, n_layer, activation_function=None):
layer_name = 'layer%s' % n_layer
with tf.name_scope(layer_name):
with tf.name_scope("wights"):
Weights = tf.Variable(tf.random_normal([in_size, out_size]), name='W') #定义权重矩阵
#tf.summary.histogram用于保存变量的变化
tf.summary.histogram(layer_name+'/weights', Weights)
with tf.name_scope("biases"):
biases = tf.Variable(tf.zeros([1, out_size]) + 0.1, name='b')#定义偏置
tf.summary.histogram(layer_name + '/biases', biases)
with tf.name_scope("Wx_plus_b"):
Wx_plus_b = tf.matmul(inputs, Weights) + biases #预测出的值
if activation_function is None:
outputs = Wx_plus_b #线性激活
else:
outputs = activation_function(Wx_plus_b) #非线性激活
tf.summary.histogram(layer_name + '/outputs', outputs)
return outputs """创建数据"""
#定义输入,linspace产生等差数列,加上数据的维度,定义输入数据为300个例子
x_data = np.linspace(-1, 1, 300)[:, np.newaxis]
# print(x_data.shape)
noise = np.random.normal(0, 0.05, x_data.shape) #定义噪声点
y_data = np.square(x_data) - 0.5 + noise # y=x_data*x_data - 0.5 """定义网络
输入层:1个神经元(使用输入的一个元素)
隐藏层:定义10个神经元
输出层:1个神经元(1个输入对应一个输出)
"""
#定义命名空间,使用tensorboard进行可视化
with tf.name_scope("inputs"):
xs = tf.placeholder(tf.float32, [None, 1], name="x_input") #模型的输入x值
ys = tf.placeholder(tf.float32, [None, 1], name="y_input") #模型的输入y值 #隐藏层
l1 = add_layer(xs, 1, 10, n_layer=1, activation_function=tf.nn.relu)
#输出层
prediction = add_layer(l1, 10, 1, n_layer=2, activation_function=None) #损失函数
with tf.name_scope("loss"):
loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction),
reduction_indices=[1]))
tf.summary.scalar('loss', loss) #用于观察常量的变化
#模型训练
with tf.name_scope("train"):
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss) init = tf.global_variables_initializer() #初始化所有变量
with tf.Session() as sess:
merged = tf.summary.merge_all()
writer = tf.summary.FileWriter("logs/", sess.graph) #保存神经网络的所有的信息,方便浏览器访问
sess.run(init) for i in range(1001):
sess.run(train_step, feed_dict={xs: x_data, ys: y_data})
if i % 50 == 0:#每训练50次,合并一下结果
result = sess.run(merged, feed_dict={xs: x_data, ys: y_data})
writer.add_summary(result, i)
"""
fig = plt.figure() #定义一个图片框
ax = fig.add_subplot(1, 1, 1)
ax.scatter(x_data, y_data) #输出样本值
plt.ion() #防止plt后程序暂停
plt.show() #一次输出,将程序暂停 for i in range(1001):
sess.run(train_step, feed_dict={xs:x_data,ys:y_data})
if i % 50 == 0:
# print(i, sess.run(loss, feed_dict={xs:x_data,ys:y_data}))
try:
ax.lines.remove(lines[0]) # 去除lines的第一个线条
except Exception:
pass
prediction_value = sess.run(prediction, feed_dict={xs:x_data})
lines = ax.plot(x_data, prediction_value, 'r-', lw=5) #将预测的值plot上去
plt.gca()
plt.pause(0.1) #每0.1秒输出一次
"""
2、可视化模型的参数变化等操作
使用tensorboard进行可视化
1、将需要可视化的操作保存在‘logs’文件夹下
2、cmd进入logs文件夹所在的父文件路径
3、tensorboard --logdir=logs
4、在浏览器中访问3中命令返回的ip地址
结果展示如下:
3、问题解决
开始训练完模型后无法显示graph。解决方法:必须在lcmd中进入'logs'文件夹的父路径中,在键入tensorboard命令,尽量使用Chrom浏览器,其他的浏览器可能会遇到不兼容的问题。
Tensorflow搭建神经网络及使用Tensorboard进行可视化的更多相关文章
- (转)一文学会用 Tensorflow 搭建神经网络
一文学会用 Tensorflow 搭建神经网络 本文转自:http://www.jianshu.com/p/e112012a4b2d 字数2259 阅读3168 评论8 喜欢11 cs224d-Day ...
- 用Tensorflow搭建神经网络的一般步骤
用Tensorflow搭建神经网络的一般步骤如下: ① 导入模块 ② 创建模型变量和占位符 ③ 建立模型 ④ 定义loss函数 ⑤ 定义优化器(optimizer), 使 loss 达到最小 ⑥ 引入 ...
- 一文学会用 Tensorflow 搭建神经网络
http://www.jianshu.com/p/e112012a4b2d 本文是学习这个视频课程系列的笔记,课程链接是 youtube 上的,讲的很好,浅显易懂,入门首选, 而且在github有代码 ...
- Tensorflow 搭建神经网络及tensorboard可视化
1. session对话控制 matrix1 = tf.constant([[3,3]]) matrix2 = tf.constant([[2],[2]]) product = tf.matmul(m ...
- kaggle赛题Digit Recognizer:利用TensorFlow搭建神经网络(附上K邻近算法模型预测)
一.前言 kaggle上有传统的手写数字识别mnist的赛题,通过分类算法,将图片数据进行识别.mnist数据集里面,包含了42000张手写数字0到9的图片,每张图片为28*28=784的像素,所以整 ...
- TensorFlow实战第四课(tensorboard数据可视化)
tensorboard可视化工具 tensorboard是tensorflow的可视化工具,通过这个工具我们可以很清楚的看到整个神经网络的结构及框架. 通过之前展示的代码,我们进行修改从而展示其神经网 ...
- tensorflow搭建神经网络
最简单的神经网络 import tensorflow as tf import numpy as np import matplotlib.pyplot as plt date = np.linspa ...
- tensorflow搭建神经网络基本流程
定义添加神经层的函数 1.训练的数据2.定义节点准备接收数据3.定义神经层:隐藏层和预测层4.定义 loss 表达式5.选择 optimizer 使 loss 达到最小 然后对所有变量进行初始化,通过 ...
- 用TensorFlow搭建一个万能的神经网络框架(持续更新)
我一直觉得TensorFlow的深度神经网络代码非常困难且繁琐,对TensorFlow搭建模型也十分困惑,所以我近期阅读了大量的神经网络代码,终于找到了搭建神经网络的规律,各位要是觉得我的文章对你有帮 ...
随机推荐
- ehcache缓存框架简介(一)
EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider. 我们使用EhCache缓存框架主要是为了判断重复Url,每次爬取一个网 ...
- 类加载器(ClassLoader)
1. 类加载器概述 1.1 类加载器的作用 把 .class 文件加载到 JVM 的方法区中,变成一个 Class 对象! 1.2 类加载器分类 类加载器也是一个类: ClassLoader; Jav ...
- 滚动标签marquee
- 怎样使用Chrome模拟手机浏览器測试移动端网站
作者:zhanhailiang 日期:2014-10-10 环境说明: Chrome 37.0.2062.124 m 1. 通过[菜单→工具→开发人员工具|Javascript控制台]或[快捷键Ctr ...
- 20170421 F110 常见问题
F110常見問題以及處理方式 1. Vendor中沒有與F110中相同的Payment method 解決辦法: 在Vendor主檔中維護Payment method 2. 結報被Block 解決辦法 ...
- 安卓手机开机键失灵,FASTBOOT模式ADB重启
安装ADB工具 CMD指令fastboot reboot
- "深入理解C语言" 指针
本文对coolshell中的"深入理解C语言"这篇文章中提到的指针问题, 进行简要的分析. #include <stdio.h> int main(void){ ]; ...
- 类百度DOC编辑区域
.mainarea{ position:absolute; top:151px; width:100%; bottom:0px; } .edit_wrap{ background:#fcfcfc; p ...
- Django 之基础续
1.路由系统之动态路由 前言:还记得之前的分页效果,这个如何实现呢?答案就是动态路由. url(r'^detail/(\d+)/$', views.detail), url(r'^detail2/(\ ...
- 数字代币ICO
随着比特币.莱特币.以太币的逐步兴起,越来越多的数字代币开始衍生,虚拟货币扑朔迷离,一不小心就被人割了韭菜..... 从荷兰IPO的故事说起 400多年前,西方有一群精英海盗开了一家公司.为了顺利拓展 ...