Tensorflow06-可视化
来源:互联网 发布:非诚勿扰程序员专场 编辑:程序博客网 时间:2024/06/18 08:19
1.pyplot
import tensorflow as tfimport numpy as npimport matplotlib.pyplot as plt# 添加神经层的函数def add_layer(inputs,in_size,out_size,activation_function=None):# None means linear Weights=tf.Variable(tf.random_normal([in_size,out_size]))# in_size行,out_size列的矩阵 biases=tf.Variable(tf.zeros([1,out_size])+0.1)# 向量,初始值最好不为0 Wx_plus_b=tf.matmul(inputs,Weights)+biases#矩阵乘法加上偏移就是预测值 if activation_function is None: outputs=Wx_plus_b else: outputs=activation_function(Wx_plus_b) return outputs x_data=np.linspace(-1,1,300)[:,np.newaxis] # -1~1之间300个单位,并指定维度noise=np.random.normal(0,0.05,x_data.shape) # 噪点,均值0,方差0.05,与x_data一样的格式y_data=np.square(x_data)-0.5+noise# 给train_step的值,数据只有1个,可以给任意个例子xs=tf.placeholder(tf.float32,[None,1])ys=tf.placeholder(tf.float32,[None,1])# 输入层输入多少个data就有多少神经元、隐藏层假设10个神经元、,输出层输出多少个data就有多少神经元# 隐藏层l1=add_layer(xs,1,10,activation_function=tf.nn.relu) # 输入数据为x_data、输入一个数据、输出10个数据(隐藏层有10个神经元)# 输出层prediction=add_layer(l1, 10, 1, activation_function=None) # 线性函数# 预测之前,计算预测值与真实值的差别loss=tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction),reduction_indices=[1])) # 实际算出的是每个例子的平方,需要求和,再求出平均值# 训练,提升误差,选择了一个最常用的Optimizer,需要指定学习效率,一般小于1,Optimizer用于减小误差train_step=tf.train.GradientDescentOptimizer(0.1).minimize(loss)# 初始化所有变量init=tf.initialize_all_variables()# 定义sessionsess=tf.Session()# 开始运算sess.run(init)# 可视化fig=plt.figure() # 生成一个图片框ax=fig.add_subplot(1,1,1) # 编号ax.scatter(x_data,y_data) # 以点的形式显示在图片上plt.ion() # 需要指定不终止程序plt.show() # 本会将整个程序暂停,画出# 学习重复1000次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}))# lines=[] try: # 每次要先抹除之前的线 ax.lines.remove(lines[0]) except Exception: pass prediction_vlaue=sess.run(prediction,feed_dict={xs:x_data}) lines=ax.plot(x_data,prediction_vlaue,'r-',lw=5) # 以曲线的形式画出,红色-线,宽度为5 plt.pause(0.1) # 每次暂停0.1秒
2.tensorboard
import tensorflow as tfimport numpy as np# 添加神经层的函数def add_layer(inputs,in_size,out_size,name_layer,activation_function=None):# None means linear layer_name='layer%s'%name_layer with tf.name_scope(layer_name): # 大的框架 with tf.name_scope('weights'): # 小的部件 Weights=tf.Variable(tf.random_normal([in_size,out_size]),name='W')# in_size行,out_size列的矩阵 tf.summary.histogram(' ',Weights) # 想要用histogram查看的变量下加这句 with tf.name_scope('biases'): # 小的部件 biases=tf.Variable(tf.zeros([1,out_size])+0.1,name='b')# 向量,初始值最好不为0 tf.summary.histogram(' ',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('/outputs',outputs) return outputs x_data=np.linspace(-1,1,300)[:,np.newaxis] # -1~1之间300个单位,并指定维度noise=np.random.normal(0,0.05,x_data.shape) # 噪点,均值0,方差0.05,与x_data一样的格式y_data=np.square(x_data)-0.5+noise# 给train_step的值,数据只有1个,可以给任意个例子with tf.name_scope('inputs'): # 名字的象征,包含了x_input和y_input xs=tf.placeholder(tf.float32,[None,1],name='x_input') # 值的名字 ys=tf.placeholder(tf.float32,[None,1],name='y_input')# 输入层输入多少个data就有多少神经元、隐藏层假设10个神经元、,输出层输出多少个data就有多少神经元# 每加一个图层都会加一个框架# 隐藏层l1=add_layer(xs,1,10,name_layer=1,activation_function=tf.nn.relu) # 输入数据为x_data、输入一个数据、输出10个数据(隐藏层有10个神经元)# 输出层prediction=add_layer(l1, 10, 1, name_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) # 用scalar查看loss,如果loss在减小说明神经网络学到了东西with tf.name_scope('train'):# 训练,提升误差,选择了一个最常用的Optimizer,需要指定学习效率,一般小于1,Optimizer用于减小误差 train_step=tf.train.GradientDescentOptimizer(0.1).minimize(loss)# 定义sessionsess=tf.Session()# 将所有的summary打包放到一起merge=tf.summary.merge_all()# 将整个框架加载到一个文件中writer=tf.summary.FileWriter("logs/",sess.graph)# 开始运算sess.run(tf.initialize_all_variables())# 学习重复1000次for i in range(1000): sess.run(train_step,feed_dict={xs:x_data,ys:y_data}) # 这样传入可以只传入一部分数据,小步骤训练可以提升效率=,这里假设用全部的数据来提升运算 if i%50==0: result=sess.run(merge,feed_dict={xs:x_data,ys:y_data}) writer.add_summary(result,i) # 每隔50步记一个点在logs文件夹中会出现events.....文件,这些文件就记录了可视化的内容
阅读全文
0 0
- Tensorflow06-可视化
- 可视化
- 可视化
- 可视化
- tensorflow06 《TensorFlow实战Google深度学习框架》笔记-04-04正则化
- 【可视化】数据图表可视化
- 数据可视化、信息可视化与知识可视化
- 可视化博客, 可视化网站, 可视化资源
- 可视化工作流
- 可视化建模
- 可视化软件
- 关于可视化
- 可视化数据结构
- 信息可视化
- 可视化思考
- 傅里叶变换可视化
- 可视化程序设计
- 信息可视化
- 写于2017年8月29
- mysql-cluster环境搭建
- jquery 实现表格行的上下移动和置顶
- Android Studio 插件汇总
- java对象和对象引用
- Tensorflow06-可视化
- 微信小程序链接
- 关于GCD的一些函数
- 数据结构-哈希
- 用powershell
- yii 后台模版 adminLTE 以及后台用户分离
- 1209:梯形
- OpenCV imgproc组件之 图像处理
- Spring源码学习之IoC