创建神经网络模型

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进行可视化的更多相关文章

  1. (转)一文学会用 Tensorflow 搭建神经网络

    一文学会用 Tensorflow 搭建神经网络 本文转自:http://www.jianshu.com/p/e112012a4b2d 字数2259 阅读3168 评论8 喜欢11 cs224d-Day ...

  2. 用Tensorflow搭建神经网络的一般步骤

    用Tensorflow搭建神经网络的一般步骤如下: ① 导入模块 ② 创建模型变量和占位符 ③ 建立模型 ④ 定义loss函数 ⑤ 定义优化器(optimizer), 使 loss 达到最小 ⑥ 引入 ...

  3. 一文学会用 Tensorflow 搭建神经网络

    http://www.jianshu.com/p/e112012a4b2d 本文是学习这个视频课程系列的笔记,课程链接是 youtube 上的,讲的很好,浅显易懂,入门首选, 而且在github有代码 ...

  4. Tensorflow 搭建神经网络及tensorboard可视化

    1. session对话控制 matrix1 = tf.constant([[3,3]]) matrix2 = tf.constant([[2],[2]]) product = tf.matmul(m ...

  5. kaggle赛题Digit Recognizer:利用TensorFlow搭建神经网络(附上K邻近算法模型预测)

    一.前言 kaggle上有传统的手写数字识别mnist的赛题,通过分类算法,将图片数据进行识别.mnist数据集里面,包含了42000张手写数字0到9的图片,每张图片为28*28=784的像素,所以整 ...

  6. TensorFlow实战第四课(tensorboard数据可视化)

    tensorboard可视化工具 tensorboard是tensorflow的可视化工具,通过这个工具我们可以很清楚的看到整个神经网络的结构及框架. 通过之前展示的代码,我们进行修改从而展示其神经网 ...

  7. tensorflow搭建神经网络

    最简单的神经网络 import tensorflow as tf import numpy as np import matplotlib.pyplot as plt date = np.linspa ...

  8. tensorflow搭建神经网络基本流程

    定义添加神经层的函数 1.训练的数据2.定义节点准备接收数据3.定义神经层:隐藏层和预测层4.定义 loss 表达式5.选择 optimizer 使 loss 达到最小 然后对所有变量进行初始化,通过 ...

  9. 用TensorFlow搭建一个万能的神经网络框架(持续更新)

    我一直觉得TensorFlow的深度神经网络代码非常困难且繁琐,对TensorFlow搭建模型也十分困惑,所以我近期阅读了大量的神经网络代码,终于找到了搭建神经网络的规律,各位要是觉得我的文章对你有帮 ...

随机推荐

  1. 类与类之间关系,用C#和JavaScript体现

    前言 在面向对象中,类之间的关系有六种,分别是: 关联关系(Association) 泛化关系(Generalization) 依赖(Dependency) 聚合(Aggregation) 组合(Co ...

  2. AGS Server 10.1 切图工具

    在AGS Sever中很重要的功能就是地图缓存的制作,安装AGS Sever会在catalog中增加相关的工具箱,利用这些工具可以制作.删除.更新切片 一.Convert map server cac ...

  3. ThinkPHP在入口文件中判断是手机还是PC端访问网站

    <?php// +----------------------------------------------------------------------// | ThinkPHP [ WE ...

  4. 使用selenium进行密码破解(绕过账号密码JS加密)

    经常碰到网站,账号密码通过js加密后进行提交.通过burp拦截抓到的账号密码是加密后的,所以无法通过burp instruder进行破解.只能模拟浏览器填写表单并点击登录按钮进行破解.于是想到了自动化 ...

  5. servlet 3.0 的新特性之三对异步处理的支持

    一.异步处理 1. 什么是异步处理 原来,在服务器没有结束响应之前,浏览器是看不到响应内容的!只有响应结束时,浏览器才能显示结果! 现在异步处理的作用:在服务器开始响应后,浏览器就可以看到响应内容,不 ...

  6. 交叉熵(Cross-Entropy) [转载]

    交叉熵(Cross-Entropy) 交叉熵是一个在ML领域经常会被提到的名词.在这篇文章里将对这个概念进行详细的分析. 1.什么是信息量? 假设X是一个离散型随机变量,其取值集合为X,概率分布函数为 ...

  7. 001infor record 计划时间取值增强-20150622

    ZMD_MRP_PARAMETERS 3000公司下工厂跑MRP时,如果为外购则通过外挂表取infor record计划交期. METHOD if_ex_md_mrp_parameters~adjus ...

  8. English Phrases

    @1:Phrases requst sth from/of sb 向某人要求某物 a new lease on life   重获新生.焕发生机 state of the art 最先进的 at th ...

  9. CodeForces - 691E Xor-sequences 【矩阵快速幂】

    题目链接 http://codeforces.com/problemset/problem/691/E 题意 给出一个长度为n的序列,从其中选择k个数 组成长度为k的序列,因为(k 有可能 > ...

  10. perspective 能玩点什么

    今天看又在看张鑫旭的博客,本来是在玩 transform:Matrix() 的,有讲到单个变化的矩阵设置,但多个变化的就不是那么回事了. 不过这都不是事啦,人生嘛,显然总会有些难关不是轻易能过去的,反 ...