人工智能TensorFlow(十)-TensorBoard可视化神经网络
通过上期的分享TensorBoard可视化基础,我们分享了TensorBoard的基础操作,但是上期的文章,只是显示了一个TensorFlow的基本层的GRAPHS,并没有实际的训练,本期修改一下上期的代码,用TensorBoard显示下图biases 与weights信息以及其他训练信息
TensorFlow可视化
定义数据
x_data=np.linspace(-1,1,300)[:,np.newaxis] noise=np.random.normal(0,0.05,x_data.shape) y_data=np.square(x_data)-0.5+noise
定义一个一元二次函数,TensorFlow来训练拟合此函数
添加层
with tf.name_scope('inputs'): xs=tf.placeholder(tf.float32,[None,1],name='x_input') ys=tf.placeholder(tf.float32,[None,1],name='y_input') #添加层 lay_one=add_layer(xs,1,10,n_layer=1,activation_function=tf.nn.relu)#hidden layer predition=add_layer(lay_one,10,1,n_layer=2,activation_function=None)#output layer
添加隐藏层与输出层
定义loss 与train
with tf.name_scope('loss'): loss=tf.reduce_mean(tf.reduce_sum(tf.square(ys-predition),reduction_indices=[1])) tf.summary.scalar('loss',loss)#搜集loss信息 with tf.name_scope('train'): train_step=tf.train.GradientDescentOptimizer(0.1).minimize(loss)
通过summary.scalar方法,可以在TensorBoard下scalars视图看到loss的变化信息,通过查看loss的变化,能够分析出你的TensorFlow是否在训练
loss
loss越来越小,说明TensorFlow在优化训练
初始化TensorFlow
在这里,我们可以看到除了变量需要初始化外,tf.summary需要搜集所有的summary信息,并合并到一起
init = tf.global_variables_initializer() merged=tf.summary.merge_all()
训练TensorFlow
with tf.Session() as sess: #写summary文件到log文件夹 writer=tf.summary.FileWriter("logs/",sess.graph) sess.run(init) for i in range(1000): sess.run(train_step,feed_dict={xs:x_data,ys:y_data}) if i%50==0: #每50step搜集一个summary信息 result=sess.run(merged,feed_dict={xs:x_data,ys:y_data}) #添加summary信息到log文件 writer.add_summary(result,i)
运行TensorBoard(参考上期),可以看到完整的可视化数据
TensorFlow可视化
不仅能够看到每层的biases与weights训练过程,也可以清楚的看到loss的变化曲线
下期预告
下期分享TensorFlow中的过拟合(Overfitting)与dropout的概念