微信公众号关注我,更多计算机知识告诉你!

 1 import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt #创建一个input数据,-1到1之间300个数,[:,np.newaxis]把x_data变成300维的
x_data=np.linspace(-1,1,300)[:,np.newaxis]
#添加噪点,把他变得更像真实数据
noise=np.random.normal(0,0.05,x_data.shape)
#创建一个input的数据
y_data=np.square(x_data)-0.5+noise

 #这里定义了一个添加神经层的方法
def add_layer(inputs,in_size,out_size,n_layer,activation_function=None):
#定义layer_name是为了在可视化中可以看到这个模块的名字,这里传入的
#n_layer代表我们现在正创建第几个神经层
layer_name='layer%s' % n_layer
#在这里是我们layer_name模块,可视化的时候我们可以看到结果
with tf.name_scope(layer_name):
with tf.name_scope('weights'):
#这里定义的weights模块中,tf.random_normal方法从正态分布中输出随机值
#输出形状为[in_size,out_size]的矩阵,令其为初始值,名字为W
Weights=tf.Variable(tf.random_normal([in_size,out_size]),name='W')
#在这里将这个模块命名为layer_name+weights
#并用tf.summary.histogram输入到日志文件中
tf.summary.histogram(layer_name+'/weights',Weights) with tf.name_scope('biases'):
#在这里另一个形状为[1,out_size]的矩阵为初始值
#矩阵的每一个元素均为初始值
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
#之后加上biases时是矩阵的每一行都去加biases这个数组
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)
#sess=tf.Session()
return outputs
 with tf.name_scope('inputs'):
#这里用tf.placeholder定义一个参数,方便后续为其传值
xs=tf.placeholder(tf.float32,[None,1],name='x_input')
ys=tf.placeholder(tf.float32,[None,1],name='y_input')
 #这里第一层输入参数inputs=xs,Weights是一个1*10的矩阵
#激活函数为relu
l1=add_layer(xs,1,10,n_layer=1,activation_function=tf.nn.relu)
#这里第二层输入参数inputs=l1,Weights是一个1*10的矩阵
#激活函数为空
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)
 sess=tf.Session()
merged= tf.summary.merge_all()
#这里将神经网络结构输入到一个文件中
writer=tf.summary.FileWriter("logs/",sess.graph)
 sess=tf.Session()
merged= tf.summary.merge_all()
#这里将神经网络结构输入到一个文件中
writer=tf.summary.FileWriter("logs/",sess.graph) sess.run(tf.global_variables_initializer())
for i in range(1000):
#开始训练,设置迭代次数为1000次
#这里输入的x_data参数为一个300*1的矩阵
#先在l1网络层运算,将300*10的矩阵Wx_plus_b输入到激活函数Relu中,然后输出
#输出结果也为300*10的矩阵
#然后在输出层prediction
#输入为300*10的矩阵,Weights为10*1的矩阵
#相乘后为300*1的矩阵然后加上1*1的biases
#输出为300*91的矩阵
#然后与之前的y_data去做loss误差分析
#计算误差
sess.run(train_step,feed_dict={xs:x_data,ys:y_data})
if i % 50==0:
#每迭代50次输出带日志文件,将所有日志文件都merged合并起来
result=sess.run(merged,feed_dict={xs:x_data,ys:y_data})
writer.add_summary(result,i)

  博文中的图都是tensorflow自带的可视化部件tensorboard展示出来的。我们用

writer=tf.summary.FileWriter("logs/",sess.graph)

  这个语句将结构输出到文件中,打开命令行,敲上语句

  tensorboard --logdir=C:\Users\yuanninesuns\Desktop\python\logs

  将控制台输出的这个网址敲到浏览器上就能看到可视化内容。

神经网络一(用tensorflow搭建简单的神经网络并可视化)的更多相关文章

  1. [DL学习笔记]从人工神经网络到卷积神经网络_3_使用tensorflow搭建CNN来分类not_MNIST数据(有一些问题)

    3:用tensorflow搭个神经网络出来 为什么用tensorflow呢,应为谷歌是亲爹啊,虽然有些人说caffe更适合图像啊mxnet效率更高等等,但爸爸就是爸爸,Android都能那么火,一个道 ...

  2. 用pytorch1.0快速搭建简单的神经网络

    用pytorch1.0搭建简单的神经网络 import torch import torch.nn.functional as F # 包含激励函数 # 建立神经网络 # 先定义所有的层属性(__in ...

  3. 用pytorch1.0搭建简单的神经网络:进行多分类分析

    用pytorch1.0搭建简单的神经网络:进行多分类分析 import torch import torch.nn.functional as F # 包含激励函数 import matplotlib ...

  4. 用pytorch1.0搭建简单的神经网络:进行回归分析

    搭建简单的神经网络:进行回归分析 import torch import torch.nn.functional as F # 包含激励函数 import matplotlib.pyplot as p ...

  5. 深度学习(五)基于tensorflow实现简单卷积神经网络Lenet5

    原文作者:aircraft 原文地址:https://www.cnblogs.com/DOMLX/p/8954892.html 参考博客:https://blog.csdn.net/u01287127 ...

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

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

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

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

  8. 基于tensorflow搭建一个神经网络

    一,tensorflow的简介 Tensorflow是一个采用数据流图,用于数值计算的 开源软件库.节点在图中表示数字操作,图中的线 则表示在节点间相互联系的多维数据数组,即张量 它灵活的架构让你可以 ...

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

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

随机推荐

  1. numpy基础整理

    记笔记用jupyter实在太方便了,懒得再重新写到博客园上,直接放个链接吧→_→ numpy(一):https://douzujun.github.io/page/%E6%95%B0%E6%8D%AE ...

  2. (一)在Lingo中使用集合

    1.    在Lingo中使用集合 4.1 集合的基本用法和lingo模型的基本要素 Lingo虽然使用方便,但是如果要解决几万个,几十万个变量的优化问题时,我们总不能一个一个地列出x1,x2,…,x ...

  3. Java并发编程原理与实战三十六:阻塞队列&消息队列

    一.阻塞队列 1.阻塞队列BlockingQueue ---->可以理解成生产者消费者的模式---->消费者要等待到生产者生产出来产品.---->而非阻塞队列ConcurrentLi ...

  4. Python入门系列教程(四)字典

    既能存储多个数据,还能在访问元素的很方便就能够定位到需要的那个元素 增 Dic = {'name':'沐风', 'city':'北京'} Dic['sex']='男' print Dic 删 del ...

  5. LintCode 407: Plus One

    LintCode 407: Plus One 题目描述 给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组. 该数字按照位权大小进行排列,位权最大的数在列表的最前面. 样例 给定 ...

  6. Linux日志文件/var/log详解

    更多内容推荐微信公众号,欢迎关注: 如果愿意在Linux环境方面花费些时间,首先就应该知道日志文件的所在位置以及它们包含的内容.在系统运行正常的情况下学习了解这些不同的日志文件有助于你在遇到紧急情况时 ...

  7. D. Makoto and a Blackboard(积性函数+DP)

    题目链接:http://codeforces.com/contest/1097/problem/D 题目大意:给你n和k,每一次可以选取n的因子代替n,然后问你k次操作之后,每个因子的期望. 具体思路 ...

  8. Cesium entity click

    var url = 'http://202.107.245.51:81/user/dev/api/v2/sql?rows_per_page=40&page=0&sort_order=a ...

  9. C#之WinForm基础 新建一个不可编辑的comboBox

    慈心积善融学习,技术愿为有情学.善心速造多好事,前人栽树后乘凉.我今于此写经验,愿见文者得启发. 1.拉控件 2.添加可选数据 3.改变基本样式 4.效果图 C#优秀,值得学习.Winform,WPF ...

  10. 关于一些问题的解决办法[记录]TF400017

    这个问题是今天在改东西的时候,突然断电导致的,google了很久之后,终于找到了办法 方法: 就是删除下面这个文件 -========================================= ...