使用tensorboard显示train和valid的准确率和loss

前期定义

#定义损失函数 以及相对应的优化器
with tf.name_scope('loss'):
    cross_entropy = -tf.reduce_sum(y * tf.log(softmax_result))  #交叉熵损失  |   softmax_result为网络预测值
    tf.summary.scalar("loss", cross_entropy) #将要显示的数据写进summary

 Optimizer = tf.train.AdamOptimizer(1e-4).minimize(cross_entropy) #优化器 
 #初始学习率为1e-4  是将loss计算值cross_entropy保存进summary,而不是优化器

#定义准确率
with tf.name_scope('accuracy'):
    correct_prediction = tf.equal(tf.argmax(softmax_result, 1), tf.argmax(y, 1))
    accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))
    tf.summary.scalar("accuracy", accuracy)   

开始训练

#开辟session进行训练
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    merged = tf.summary.merge_all() #将要显示的数据merge起来

    #定义保存数据的文件路径,train和valid分开,并且valid的后面不需要sess.graph,valid不保存图,所以保存文件比较小
    writer_train = tf.summary.FileWriter('./log/train', sess.graph)
    writer_valid = tf.summary.FileWriter('./log/valid')
    
    '''此处加载图片,定义标签,dropout_rate等'''
    
    #在训练迭代次数内,且在sess内
     for epoch in range(1,501):
         summary_train = sess.run(merged, feed_dict={inputs: img, y: img_label, keep_prob: dropout_rate})
         writer_train.add_summary(summary_train, i) #每迭代一次,sess就run一次,然后将模型计算出的train的loss和acc值写进对应文件
         summary_valid = sess.run(merged, feed_dict={inputs: img_valid, y: img_valid_label, keep_prob: dropout_rate_valid})
         writer_valid.add_summary(summary_valid, i)
         
#最后记得writer_train和writer_valid要close()文件操作,并且要在epoch循环外close,否则只迭代一次,就关闭了文件流
writer_train.close()
writer_valid.close()

打开tensorboard,显示折线图
在cmd里面,cd到./log目录下,activate进入创建的python虚拟环境
如果想同时显示train和valid,就不要进train和valid文件夹内,然后

tensorboard --logdir=./log

系统回复的最后一行会显示一个链接,一般是http://localhost:6006/,即使不是,用这个也可以打开
在谷歌浏览器内打开链接,如果没有马上显示,右上角的下三角尖处选择scalars即可

你可能感兴趣的:(python学习)