1. 多曲线

1.1 使用pyplot方式

import numpy as np
import matplotlib.pyplot as pltx = np.arange(1, 11, 1)plt.plot(x, x * 2, label="First")
plt.plot(x, x * 3, label="Second")
plt.plot(x, x * 4, label="Third")plt.legend(loc=0, ncol=1)   # 参数:loc设置显示的位置,0是自适应;ncol设置显示的列数plt.show()

1.2 使用面向对象方式

import numpy as np
import matplotlib.pyplot as pltx = np.arange(1, 11, 1)fig = plt.figure()
ax = fig.add_subplot(111)ax.plot(x, x * 2, label="First")
ax.plot(x, x * 3, label="Second")ax.legend(loc=0)
# ax.plot(x, x * 2)
# ax.legend([”Demo“], loc=0)plt.show()

2. 双y轴曲线

双y轴曲线图例合并是一个棘手的操作,现以MNIST案例中loss/accuracy绘制曲线。

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
import time
import matplotlib.pyplot as plt
import numpy as npx_data = tf.placeholder(tf.float32, [None, 784])
y_data = tf.placeholder(tf.float32, [None, 10])
x_image = tf.reshape(x_data, [-1, 28, 28, 1])# convolve layer 1
filter1 = tf.Variable(tf.truncated_normal([5, 5, 1, 6]))
bias1 = tf.Variable(tf.truncated_normal([6]))
conv1 = tf.nn.conv2d(x_image, filter1, strides=[1, 1, 1, 1], padding='SAME')
h_conv1 = tf.nn.sigmoid(conv1 + bias1)
maxPool2 = tf.nn.max_pool(h_conv1, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME')# convolve layer 2
filter2 = tf.Variable(tf.truncated_normal([5, 5, 6, 16]))
bias2 = tf.Variable(tf.truncated_normal([16]))
conv2 = tf.nn.conv2d(maxPool2, filter2, strides=[1, 1, 1, 1], padding='SAME')
h_conv2 = tf.nn.sigmoid(conv2 + bias2)
maxPool3 = tf.nn.max_pool(h_conv2, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME')# convolve layer 3
filter3 = tf.Variable(tf.truncated_normal([5, 5, 16, 120]))
bias3 = tf.Variable(tf.truncated_normal([120]))
conv3 = tf.nn.conv2d(maxPool3, filter3, strides=[1, 1, 1, 1], padding='SAME')
h_conv3 = tf.nn.sigmoid(conv3 + bias3)# full connection layer 1
W_fc1 = tf.Variable(tf.truncated_normal([7 * 7 * 120, 80]))
b_fc1 = tf.Variable(tf.truncated_normal([80]))
h_pool2_flat = tf.reshape(h_conv3, [-1, 7 * 7 * 120])
h_fc1 = tf.nn.sigmoid(tf.matmul(h_pool2_flat, W_fc1) + b_fc1)# full connection layer 2
W_fc2 = tf.Variable(tf.truncated_normal([80, 10]))
b_fc2 = tf.Variable(tf.truncated_normal([10]))
y_model = tf.nn.softmax(tf.matmul(h_fc1, W_fc2) + b_fc2)cross_entropy = - tf.reduce_sum(y_data * tf.log(y_model))train_step = tf.train.GradientDescentOptimizer(1e-3).minimize(cross_entropy)sess = tf.InteractiveSession()
correct_prediction = tf.equal(tf.argmax(y_data, 1), tf.argmax(y_model, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))
sess.run(tf.global_variables_initializer())mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)fig_loss = np.zeros([1000])
fig_accuracy = np.zeros([1000])start_time = time.time()
for i in range(1000):batch_xs, batch_ys = mnist.train.next_batch(200)if i % 100 == 0:train_accuracy = sess.run(accuracy, feed_dict={x_data: batch_xs, y_data: batch_ys})print("step %d, train accuracy %g" % (i, train_accuracy))end_time = time.time()print("time:", (end_time - start_time))start_time = end_timeprint("********************************")train_step.run(feed_dict={x_data: batch_xs, y_data: batch_ys})fig_loss[i] = sess.run(cross_entropy, feed_dict={x_data: batch_xs, y_data: batch_ys})fig_accuracy[i] = sess.run(accuracy, feed_dict={x_data: batch_xs, y_data: batch_ys})
print("test accuracy %g" % sess.run(accuracy, feed_dict={x_data: mnist.test.images, y_data: mnist.test.labels}))# 绘制曲线
fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
lns1 = ax1.plot(np.arange(1000), fig_loss, label="Loss")
# 按一定间隔显示实现方法
# ax2.plot(200 * np.arange(len(fig_accuracy)), fig_accuracy, 'r')
lns2 = ax2.plot(np.arange(1000), fig_accuracy, 'r', label="Accuracy")
ax1.set_xlabel('iteration')
ax1.set_ylabel('training loss')
ax2.set_ylabel('training accuracy')
# 合并图例
lns = lns1 + lns2
labels = ["Loss", "Accuracy"]
# labels = [l.get_label() for l in lns]
plt.legend(lns, labels, loc=7)
plt.show()

注:数据集保存在MNIST_data文件夹下

其实就是三步:

1)分别定义loss/accuracy一维数组

fig_loss = np.zeros([1000])
fig_accuracy = np.zeros([1000])
# 按间隔定义方式:fig_accuracy = np.zeros(int(np.ceil(iteration / interval)))

2)填充真实数据

 fig_loss[i] = sess.run(cross_entropy, feed_dict={x_data: batch_xs, y_data: batch_ys})fig_accuracy[i] = sess.run(accuracy, feed_dict={x_data: batch_xs, y_data: batch_ys})

3)绘制曲线

fig, ax1 = plt.subplots()
ax2 = ax1.twinx()
lns1 = ax1.plot(np.arange(1000), fig_loss, label="Loss")
# 按一定间隔显示实现方法
# ax2.plot(200 * np.arange(len(fig_accuracy)), fig_accuracy, 'r')
lns2 = ax2.plot(np.arange(1000), fig_accuracy, 'r', label="Accuracy")
ax1.set_xlabel('iteration')
ax1.set_ylabel('training loss')
ax2.set_ylabel('training accuracy')
# 合并图例
lns = lns1 + lns2
labels = ["Loss", "Accuracy"]
# labels = [l.get_label() for l in lns]
plt.legend(lns, labels, loc=7)

TensorFlow绘制loss/accuracy曲线相关推荐

  1. python画loss曲线_TensorFlow绘制loss/accuracy曲线的实例

    1. 多曲线 1.1 使用pyplot方式import numpy as np import matplotlib.pyplot as plt x = np.arange(1, 11, 1) plt. ...

  2. 如何根据keras的fit后返回的history绘制loss acc曲线

    model.summary() #绘制acc-loss曲线 import matplotlib.pyplot as plt plt.plot(hist.history['loss'],color='r ...

  3. python学习——绘制loss、acc学习曲线

    两种方式 1.直接画 # model.fit返回acc和loss的日志 hist=model.fit(train_data, train_label,batch_size=64,epochs=2,va ...

  4. Caffe学习系列(19): 绘制loss和accuracy曲线

    转载自: Caffe学习系列(19): 绘制loss和accuracy曲线 - denny402 - 博客园 http://www.cnblogs.com/denny402/p/5110204.htm ...

  5. Caffe---Pycaffe 绘制loss和accuracy曲线

    Caffe---Pycaffe 绘制loss和accuracy曲线 <Caffe自带工具包---绘制loss和accuracy曲线>:可以看出使用caffe自带的工具包绘制loss曲线和a ...

  6. ubuntu16.04下Caffe绘制训练过程的loss和accuracy曲线

    在利用Caffe训练相应的网络模型后,往往需要绘制训练过程中的数据,这样可以更加直观地展示我们的实验结果,事实上,caffe自带了这样的小工具,当然你也可以自己写个代码,下面分别介绍这两种方法: (一 ...

  7. Caffe—根据log日志绘制loss曲线和accuracy

    本文在此只讲述Ubuntu16.04下 caffe训练日志绘制loss曲线以及accuracy 如果是windows平台直接跳转文末 caffe中其实已经自带了这样的小工具 caffe-master/ ...

  8. 【caffe】caffe采用multistep,绘制loss曲线出错

    (如何绘制loss曲线:http://blog.csdn.net/u013078356/article/details/51154847) 先贴错误: list index out of range~ ...

  9. Python绘制loss曲线、准确率曲线

    Python 绘制 loss 曲线.准确率曲线 使用 python 绘制网络训练过程中的的 loss 曲线以及准确率变化曲线,这里的主要思想就时先把想要的损失值以及准确率值保存下来,保存到 .txt ...

最新文章

  1. 快速实现dNet三层架构项目图解
  2. mongodb--find高级用法
  3. UVA 11210 Chinese Mahjong
  4. Servlet全面讲解
  5. 总结python中基本的面试题
  6. android是语言吗,android – 内容描述应该是多种语言吗?
  7. 云图说|SAP技术画册“一点通”
  8. Struts2环境搭建
  9. angularjs 模块化
  10. WPF - ViewModle中关闭Window
  11. 初一数学教材人教版_【期中试卷+知识点总结】初中初一初二初三年级各科期中试卷+知识点总结...
  12. Erlang初学:Erlang的一些特点和个人理解总结
  13. final关键字深入解析
  14. 软件工程硕士论文撰写指导
  15. QQ浏览器侧边栏添加腾讯翻译君
  16. wpf listview 大数据界面刷新
  17. html中如何调整图片的对比色,风光照片如何调出冷暖对比色?后期案例分享
  18. 高乐计算机课程,长春理工大学
  19. oracle蓝屏解决方法,win10系统蓝屏怎么办 蓝屏代码0x000007e的3种解决方法
  20. php去除图片水印源代码,基于python的图片修复程序(实现水印去除)

热门文章

  1. python3GUI--翻译器-v2.0(附源码)
  2. 开发多商家商城系统的功能优势
  3. 腾讯CEO马化腾:从“抄袭”开始创业之路
  4. 转录组分析 - 使用 sratoolkit docker镜像 - 目录挂载 - docker中的路径和linux中的路径
  5. 弘辽科技:拼多多活动布局三大招!
  6. Visual Basci中的几个函数split(),ubound(),lbound(),instr(),mid().
  7. 基于观测器的T-S模糊系统故障分析simulink仿真
  8. 《职业教育研究》(月刊)投稿经验分享
  9. 【转】手机充电器原理
  10. Python闭包和装饰器