0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

TensorFlow学习之建立一个神经网络添加层

lviY_AI_shequ 来源:未知 作者:李倩 2018-03-31 10:56 次阅读

1.建立一个神经网络添加层

输入值、输入的大小、输出的大小和激励函数

学过神经网络的人看下面这个图就明白了,不懂的去看看我的另一篇博客(http://www.cnblogs.com/wjy-lulu/p/6547542.html)

def add_layer(inputs , in_size , out_size , activate = None):

Weights = tf.Variable(tf.random_normal([in_size,out_size]))#随机初始化

baises = tf.Variable(tf.zeros([1,out_size])+0.1)#可以随机但是不要初始化为0,都为固定值比随机好点

y = tf.matmul(inputs, Weights) + baises #matmul:矩阵乘法,multipy:一般是数量的乘法

if activate:

y = activate(y)

return y

2.训练一个二次函数

import tensorflow as tf

import numpy as np

def add_layer(inputs , in_size , out_size , activate = None):

Weights = tf.Variable(tf.random_normal([in_size,out_size]))#随机初始化

baises = tf.Variable(tf.zeros([1,out_size])+0.1)#可以随机但是不要初始化为0,都为固定值比随机好点

y = tf.matmul(inputs, Weights) + baises #matmul:矩阵乘法,multipy:一般是数量的乘法

if activate:

y = activate(y)

return y

if __name__ == '__main__':

x_data = np.linspace(-1,1,300,dtype=np.float32)[:,np.newaxis]#创建-1,1的300个数,此时为一维矩阵,后面转化为二维矩阵===[1,2,3]-->>[[1,2,3]]

noise = np.random.normal(0,0.05,x_data.shape).astype(np.float32)#噪声是(1,300)格式,0-0.05大小

y_data = np.square(x_data) - 0.5 + noise #带有噪声的抛物线

xs = tf.placeholder(tf.float32,[None,1]) #外界输入数据

ys = tf.placeholder(tf.float32,[None,1])

l1 = add_layer(xs,1,10,activate=tf.nn.relu)

prediction = add_layer(l1,10,1,activate=None)

loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction),reduction_indices=[1]))#误差

train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)#对误差进行梯度优化,步伐为0.1

sess = tf.Session()

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:

print(sess.run(loss, feed_dict={xs: x_data, ys: y_data}))#查看误差

3.动态显示训练过程

显示的步骤程序之中部分进行说明,其它说明请看其它博客(http://www.cnblogs.com/wjy-lulu/p/7735987.html)

import tensorflow as tf

import numpy as np

import matplotlib.pyplot as plt

def add_layer(inputs , in_size , out_size , activate = None):

Weights = tf.Variable(tf.random_normal([in_size,out_size]))#随机初始化

baises = tf.Variable(tf.zeros([1,out_size])+0.1)#可以随机但是不要初始化为0,都为固定值比随机好点

y = tf.matmul(inputs, Weights) + baises #matmul:矩阵乘法,multipy:一般是数量的乘法

if activate:

y = activate(y)

return y

if __name__ == '__main__':

x_data = np.linspace(-1,1,300,dtype=np.float32)[:,np.newaxis]#创建-1,1的300个数,此时为一维矩阵,后面转化为二维矩阵===[1,2,3]-->>[[1,2,3]]

noise = np.random.normal(0,0.05,x_data.shape).astype(np.float32)#噪声是(1,300)格式,0-0.05大小

y_data = np.square(x_data) - 0.5 + noise #带有噪声的抛物线

fig = plt.figure('show_data')# figure("data")指定图表名称

ax = fig.add_subplot(111)

ax.scatter(x_data,y_data)

plt.ion()

plt.show()

xs = tf.placeholder(tf.float32,[None,1]) #外界输入数据

ys = tf.placeholder(tf.float32,[None,1])

l1 = add_layer(xs,1,10,activate=tf.nn.relu)

prediction = add_layer(l1,10,1,activate=None)

loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction),reduction_indices=[1]))#误差

train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)#对误差进行梯度优化,步伐为0.1

sess = tf.Session()

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:

try:

ax.lines.remove(lines[0])

except Exception:

pass

prediction_value = sess.run(prediction, feed_dict={xs: x_data})

lines = ax.plot(x_data,prediction_value,"r",lw = 3)

print(sess.run(loss, feed_dict={xs: x_data, ys: y_data}))#查看误差

plt.pause(2)

while True:

plt.pause(0.01)

4.TensorBoard整体结构化显示

A.利用with tf.name_scope("name")创建大结构、利用函数的name="name"去创建小结构:tf.placeholder(tf.float32,[None,1],name="x_data")

B.利用writer = tf.summary.FileWriter("G:/test/",graph=sess.graph)创建一个graph文件

C.利用TessorBoard去执行这个文件

这里得注意--->>>首先到你存放文件的上一个目录--->>然后再去运行这个文件

tensorboard --logdir=test

(被屏蔽的GIF动图,具体安装操作欢迎戳“原文链接”哈!)

5.TensorBoard局部结构化显示

A. tf.summary.histogram(layer_name+"Weight",Weights):直方图显示

B. tf.summary.scalar("Loss",loss):折线图显示,loss的走向决定你的网络训练的好坏,至关重要一点

C.初始化与运行设定的图表

merge = tf.summary.merge_all()#合并图表2 writer = tf.summary.FileWriter("G:/test/",graph=sess.graph)#写进文件3 result = sess.run(merge,feed_dict={xs:x_data,ys:y_data})#运行打包的图表merge4 writer.add_summary(result,i)#写入文件,并且单步长50

完整代码及显示效果:

import tensorflow as tf

import numpy as np

import matplotlib.pyplot as plt

def add_layer(inputs , in_size , out_size , n_layer = 1 , activate = None):

layer_name = "layer" + str(n_layer)

with tf.name_scope(layer_name):

with tf.name_scope("Weights"):

Weights = tf.Variable(tf.random_normal([in_size,out_size]),name="W")#随机初始化

tf.summary.histogram(layer_name+"Weight",Weights)

with tf.name_scope("Baises"):

baises = tf.Variable(tf.zeros([1,out_size])+0.1,name="B")#可以随机但是不要初始化为0,都为固定值比随机好点

tf.summary.histogram(layer_name+"Baises",baises)

y = tf.matmul(inputs, Weights) + baises #matmul:矩阵乘法,multipy:一般是数量的乘法

if activate:

y = activate(y)

tf.summary.histogram(layer_name+"y_sum",y)

return y

if __name__ == '__main__':

x_data = np.linspace(-1,1,300,dtype=np.float32)[:,np.newaxis]#创建-1,1的300个数,此时为一维矩阵,后面转化为二维矩阵===[1,2,3]-->>[[1,2,3]]

noise = np.random.normal(0,0.05,x_data.shape).astype(np.float32)#噪声是(1,300)格式,0-0.05大小

y_data = np.square(x_data) - 0.5 + noise #带有噪声的抛物线

fig = plt.figure('show_data')# figure("data")指定图表名称

ax = fig.add_subplot(111)

ax.scatter(x_data,y_data)

plt.ion()

plt.show()

with tf.name_scope("inputs"):

xs = tf.placeholder(tf.float32,[None,1],name="x_data") #外界输入数据

ys = tf.placeholder(tf.float32,[None,1],name="y_data")

l1 = add_layer(xs,1,10,n_layer=1,activate=tf.nn.relu)

prediction = add_layer(l1,10,1,n_layer=2,activate=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_step"):

train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)#对误差进行梯度优化,步伐为0.1

sess = tf.Session()

merge = tf.summary.merge_all()#合并

writer = tf.summary.FileWriter("G:/test/",graph=sess.graph)

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%100 == 0:

result = sess.run(merge,feed_dict={xs:x_data,ys:y_data})#运行打包的图表merge

writer.add_summary(result,i)#写入文件,并且单步长50

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 神经网络
    +关注

    关注

    42

    文章

    4562

    浏览量

    98646
  • tensorflow
    +关注

    关注

    13

    文章

    313

    浏览量

    60241

原文标题:TensorFlow学习之神经网络的构建

文章出处:【微信号:AI_shequ,微信公众号:人工智能爱好者社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    TFCNN:Tensorflow构建卷积神经网络CNN的嘻嘻哈哈事详细攻略

    TFCNN:Tensorflow构建卷积神经网络CNN的嘻嘻哈哈事详细攻略
    发表于 12-19 17:03

    KerasML~P:基于Keras中建立的回归预测的神经网络模型

    KerasML~P:基于Keras中建立的回归预测的神经网络模型(根据200数据样本预测新的5+1样本)——回归预测
    发表于 12-20 10:43

    matplotlib动态演示深度学习tensorflow神经网络系统自动学习散点(二次函数+noise)并优化修正并且将输出结果可视化

    TFNN:matplotlib动态演示深度学习tensorflow神经网络系统自动学习散点
    发表于 12-21 10:48

    【PYNQ-Z2试用体验】神经网络基础知识

    超过阈值,输出就跃而起。但我们般用S函数作为激活函数。如下图:图2 该函数相比阶越函数更加接近现实。神经网络原理如图所示是具有两
    发表于 03-03 22:10

    【案例分享】基于BP算法的前馈神经网络

    `BP神经网络首先给出只包含的BP神经网络模型(两
    发表于 07-21 04:00

    【案例分享】ART神经网络与SOM神经网络

    种常用的无监督学习策略,在使用改策略时,网络的输出神经元相互竞争,每时刻只有
    发表于 07-21 04:30

    TensorFlow是什么

    神经网络的计算部署到任意数量的 CPU 或 GPU 的服务器、PC 或移动设备上,且只利用 TensorFlow API。你可能会问,还有很多其他的深度
    发表于 07-22 10:14

    浅谈深度学习TensorFlow

    神经网络和深度学习的概念,但为了完整起见,我们将在这里介绍基础知识,并探讨 TensorFlow 的哪些特性使其成为深度学习的热门选择。神经网络
    发表于 07-28 14:34

    【AI学习】第3篇--人工神经网络

    `本篇主要介绍:人工神经网络的起源、简单神经网络模型、更多神经网络模型、机器学习的步骤:训练与预测、训练的两阶段:正向推演与反向传播、以Tensor
    发表于 11-05 17:48

    如何移植CNN神经网络到FPGA中?

    二次开发。移植神经网络到Lattice FPGA上可以分为三步:第步:使用Tensorflow, Caffe, Keras训练自己的
    发表于 11-26 07:46

    如何构建神经网络

    原文链接:http://tecdat.cn/?p=5725 神经网络种基于现有数据创建预测的计算系统。如何构建神经网络神经网络包括:输入
    发表于 07-12 08:02

    matlab实现神经网络 精选资料分享

    神经神经网络,对于神经网络的实现是如何直没有具体实现下:现看到
    发表于 08-18 07:25

    基于BP神经网络的PID控制

    最近在学习电机的智能控制,上周学习了基于单神经元的PID控制,这周研究基于BP神经网络的PID控制。神经网络具有任意非线性表达能力,可以通过
    发表于 09-07 07:43

    卷积神经网络简介:什么是机器学习

    列文章将只关注卷积神经网络 (CNN)。CNN的主要应用领域是输入数据中包含的对象的模式识别和分类。CNN是种用于深度学习的人工神经网络。此类网络
    发表于 02-23 20:11

    TensorFlow写个简单的神经网络

    这次就用TensorFlow写个神经网络,这个神经网络写的很简单,就三种层,输入层--隐藏层----输出层;
    的头像 发表于 03-23 15:37 5001次阅读
    用<b class='flag-5'>TensorFlow</b>写个简单的<b class='flag-5'>神经网络</b>