TensorFlow绘制loss/accuracy曲线
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曲线相关推荐
- 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. ...
- 如何根据keras的fit后返回的history绘制loss acc曲线
model.summary() #绘制acc-loss曲线 import matplotlib.pyplot as plt plt.plot(hist.history['loss'],color='r ...
- python学习——绘制loss、acc学习曲线
两种方式 1.直接画 # model.fit返回acc和loss的日志 hist=model.fit(train_data, train_label,batch_size=64,epochs=2,va ...
- Caffe学习系列(19): 绘制loss和accuracy曲线
转载自: Caffe学习系列(19): 绘制loss和accuracy曲线 - denny402 - 博客园 http://www.cnblogs.com/denny402/p/5110204.htm ...
- Caffe---Pycaffe 绘制loss和accuracy曲线
Caffe---Pycaffe 绘制loss和accuracy曲线 <Caffe自带工具包---绘制loss和accuracy曲线>:可以看出使用caffe自带的工具包绘制loss曲线和a ...
- ubuntu16.04下Caffe绘制训练过程的loss和accuracy曲线
在利用Caffe训练相应的网络模型后,往往需要绘制训练过程中的数据,这样可以更加直观地展示我们的实验结果,事实上,caffe自带了这样的小工具,当然你也可以自己写个代码,下面分别介绍这两种方法: (一 ...
- Caffe—根据log日志绘制loss曲线和accuracy
本文在此只讲述Ubuntu16.04下 caffe训练日志绘制loss曲线以及accuracy 如果是windows平台直接跳转文末 caffe中其实已经自带了这样的小工具 caffe-master/ ...
- 【caffe】caffe采用multistep,绘制loss曲线出错
(如何绘制loss曲线:http://blog.csdn.net/u013078356/article/details/51154847) 先贴错误: list index out of range~ ...
- Python绘制loss曲线、准确率曲线
Python 绘制 loss 曲线.准确率曲线 使用 python 绘制网络训练过程中的的 loss 曲线以及准确率变化曲线,这里的主要思想就时先把想要的损失值以及准确率值保存下来,保存到 .txt ...
最新文章
- 快速实现dNet三层架构项目图解
- mongodb--find高级用法
- UVA 11210 Chinese Mahjong
- Servlet全面讲解
- 总结python中基本的面试题
- android是语言吗,android – 内容描述应该是多种语言吗?
- 云图说|SAP技术画册“一点通”
- Struts2环境搭建
- angularjs 模块化
- WPF - ViewModle中关闭Window
- 初一数学教材人教版_【期中试卷+知识点总结】初中初一初二初三年级各科期中试卷+知识点总结...
- Erlang初学:Erlang的一些特点和个人理解总结
- final关键字深入解析
- 软件工程硕士论文撰写指导
- QQ浏览器侧边栏添加腾讯翻译君
- wpf listview 大数据界面刷新
- html中如何调整图片的对比色,风光照片如何调出冷暖对比色?后期案例分享
- 高乐计算机课程,长春理工大学
- oracle蓝屏解决方法,win10系统蓝屏怎么办 蓝屏代码0x000007e的3种解决方法
- php去除图片水印源代码,基于python的图片修复程序(实现水印去除)
热门文章
- python3GUI--翻译器-v2.0(附源码)
- 开发多商家商城系统的功能优势
- 腾讯CEO马化腾:从“抄袭”开始创业之路
- 转录组分析 - 使用 sratoolkit docker镜像 - 目录挂载 - docker中的路径和linux中的路径
- 弘辽科技:拼多多活动布局三大招!
- Visual Basci中的几个函数split(),ubound(),lbound(),instr(),mid().
- 基于观测器的T-S模糊系统故障分析simulink仿真
- 《职业教育研究》(月刊)投稿经验分享
- 【转】手机充电器原理
- Python闭包和装饰器