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

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

海边度假 伞下应有一片光
AI芯片群雄争霸中国AI芯片厂商发力崛起
一文带你了解那些时光里的科技
并购安全审查获批 广东骏亚申请恢复重大资产重组审查
安科瑞电力监控系统在山水六旗主题乐园的应用
TensorFlow学习之建立一个神经网络添加层
索尼发布4K PTZ智能中心构图摄像机SRG-A40与SRG-A12
数据仓库技术会因为云计算有什么不一样
小米10钢化膜疑似曝光 或将是小米数字系列首款曲面屏机型
海信U8E电视评测 令人激动的画质表现
机械敏感离子通道在触觉感受器中的关键作用机制
近期全球最畅销的手机是哪款,你知道吗?
未来经济的发展方向将是从虚拟经济加互联网,开始进入到实体经济加互联网
各种室内环境检测仪及空气控制器介绍
AI滥用风险已迫在眉睫 研究人员呼吁各国做好防范
高精度农业土壤肥料养分检测仪有哪些的详解
酒店里刷卡开门是如何实现的?
如何将区块链应用于零售行业
顶尖电子博览会预告,特殊时期的特殊规划
BASIC语言概述及特点