前言

  1. 每迭代100次保存一次loss值
  2. 每迭代1000次保存一次validation值
  3. 曲线表示平均值,背景表示方差

码代码

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import rcParams
from matplotlib.ticker import FuncFormatterdef mean_list(valid_ids, valid_values, stride=2, iters=1000):length = len(valid_ids)nums = length // strideused_ids = []mean_values = []std_vallues = []valid_values = np.asarray(valid_values)for k in range(nums):used_ids.append(int(k*stride*iters))temp_list = valid_values[k*stride:(k+1)*stride]mean = np.mean(temp_list)std = np.std(temp_list)mean_values.append(mean)std_vallues.append(std)return used_ids, mean_values, std_vallues# 设置全局格式,包括字体风格和大小等等
# 这里主要用来修改文本字体里面的格式
font_size = 25
config = {"font.family":'serif',"font.size": font_size,"mathtext.fontset":'stix',"font.serif": ['SimSun'],
}
rcParams.update(config)# 修改x轴的显示方式,科学计数法
def formatnumx(x, pos):return '%d' % (x/1000)
formatterx = FuncFormatter(formatnumx)fig, ax1 = plt.subplots(figsize=(7,5),dpi=100)
ax2 = ax1.twinx()# train_ids 为迭代次数(每一百次为一个单位)
# train_mse 为每100次的loss值
used_ids, mean_values, std_vallues = mean_list(train_ids, train_mse, stride=2, iters=100)
std_down = [mean_values[x]-std_vallues[x] for x in range(len(mean_values))]
std_up = [mean_values[x]+std_vallues[x] for x in range(len(mean_values))]
ax1.plot(used_ids, mean_values, color='C0')
ax1.fill_between(used_ids, std_down, std_up, color='C0', alpha=0.3)# valid_ids 为迭代次数(每一千次为一个单位)
# valid_mse 为每1000次的validation值
used_ids, mean_values, std_vallues = mean_list(valid_ids, valid_mse, stride=2, iters=1000)
std_down = [mean_values[x]-std_vallues[x] for x in range(len(mean_values))]
std_up = [mean_values[x]+std_vallues[x] for x in range(len(mean_values))]
ax2.plot(used_ids, mean_values, color='C1', label='Ours w/o PT')
ax2.fill_between(used_ids, std_down, std_up, color='C1', alpha=0.3)ax1.set_xlabel(r'Iterations $\times 10^3$', fontdict={'family': 'Times New Roman', 'size': font_size})
ax1.set_ylabel('Training loss (BCE)', color='C0', fontdict={'family': 'Times New Roman', 'size': font_size})
ax2.set_ylabel('Validation result (VOI)', color='C1', fontdict={'family': 'Times New Roman', 'size': font_size})plt.gca().xaxis.set_major_formatter(formatterx)ax1.tick_params(labelsize=font_size)
labels = ax1.get_xticklabels() + ax1.get_yticklabels()
[label.set_fontname('Times New Roman') for label in labels]
ax2.tick_params(labelsize=font_size)
labels = ax2.get_xticklabels() + ax2.get_yticklabels()
[label.set_fontname('Times New Roman') for label in labels]ax2.set_ylim((1, 6.5))
plt.show()

结果展示

参考

https://blog.csdn.net/qq_33757398/article/details/115056483?spm=1001.2014.3001.5501

Matplotlib画论文图之loss和validation曲线相关推荐

  1. 如何使用python画折线图-Python 使用 matplotlib 画折线图教程

    话不多说,直接上代码.最近修改一篇论文,实验部分的图全部重画了一下,也正好在此进行整理.使用 Python 的 matplotlib 库来画图还是比较方便的,今天整理一下用 matplotlib 画折 ...

  2. 防止matplotlib画完图后自动关闭

    为防止matplotlib画完图后自动关闭图像窗口,可以在代码的尾部加上 pyplot.pause(0) 例: import tensorflow as tf import numpy as np i ...

  3. 防止matplotlib画完图后自动关闭NN

    https://blog.csdn.net/oMoDao1/article/details/81222465 为防止matplotlib画完图后自动关闭图像窗口,可以在代码的尾部加上 pyplot.p ...

  4. python 画三维函数图-如何用Matplotlib 画三维图的示例代码

    最基本的三维图是由(x, y, z)三维坐标点构成的线图与散点图,可以用ax.plot3D和ax.scatter3D函数来创建,默认情况下,散点会自动改变透明度,以在平面上呈现出立体感 三维的线图和散 ...

  5. python画三维立体图-如何用Matplotlib 画三维图的示例代码

    用Matplotlib画三维图 最基本的三维图是由(x, y, z)三维坐标点构成的线图与散点图,可以用ax.plot3D和ax.scatter3D函数来创建,默认情况下,散点会自动改变透明度,以在平 ...

  6. python怎样画立体图-如何用Matplotlib 画三维图的示例代码

    用Matplotlib画三维图 最基本的三维图是由(x, y, z)三维坐标点构成的线图与散点图,可以用ax.plot3D和ax.scatter3D函数来创建,默认情况下,散点会自动改变透明度,以在平 ...

  7. python画厢式图_用matplotlib画箱体图(boxplot)

    画boxplot的接口为 matplotlib.pyplot.boxplot,不过在画之前,我需要好好理解一下箱体图所代表的含义和计算方法. 用一个实际的例子来说明如何画boxplot,这个例子来自w ...

  8. Matplotlib画折线图

    Matplotlib画折线图 有一些离散点,想看看这些点的变动趋势: import matplotlib.pyplot as pltx1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1 ...

  9. Matplotlib画蜡烛图

    mpl_finance.candlestick_ohlc() 以前使用Matplotlib画蜡烛图的时候是使用matplotlib.finance这个工具库里面candlestick_ohlc函数,最 ...

最新文章

  1. 2012百度实习生招聘面试题
  2. nginx 禁止通过IP,未绑定域名访问服务器
  3. python3爬虫初探(五)之从爬取到保存
  4. oracle crs 命令,ORACLE RAC CRSCTL 命令使用 及 执行的用户
  5. php 失去 焦点 另一个表单猎取值,同一表单如何根据某一个文本框的值 改变另一个文本框的值...
  6. Java中Spring中的方法加上try catch后事务管理器失效无法回滚的情况
  7. win10安装Anaconda+tensorflow2.0-CPU+Pycharm
  8. .Net中加密解密相关知识
  9. ACL Findings | 任务共舞,小样本场景下的多任务联合学习方法初探
  10. 设为首页 加入收藏代码
  11. 犀牛脚本插件-python-vb-编辑使用方式-rhino脚本插件
  12. 神经网络学习笔记4:CPN网络的实现
  13. 二十八条改善 ASP 性能和外观的技巧
  14. Java关键字,标识符,数据类型,运算符
  15. PG与mysql的区别
  16. Android开发-简介(一)
  17. 推荐系统入门(二):协同过滤(附代码)
  18. 命令计算机组装机器人,一种计算机组装机器人的制作方法
  19. 可变形的四旋翼飞行器——无人机
  20. 利用C语言获取设备的MAC address

热门文章

  1. java群侠传_梦幻群侠传之天剑如虹(下)
  2. iPhone 14 电池耗电怎么样?iPhone 14和13比对那个续航好?
  3. [附源码]计算机毕业设计Python保护濒危动物公益网站(程序+源码+LW文档)
  4. vue渲染大量数据优化_vue大数据表格卡顿问题的完美解决方案
  5. C. The Intriguing Obsession
  6. 由 An Intriguing Failing of Convolutional Neural Networks and the CoordConv Solution 引起的思考
  7. 蚂蚁金服副 CTO胡喜:从 BASIC 到 basic ,蚂蚁金服十五年技术架构演进之路
  8. 乔布斯当场“复活”,苹果发AirPods 3和地表最强电脑芯片,秀刘海屏Macbook Pro
  9. 酷睿i7 8565u属于什么级别 i78565u相当于什么水平
  10. XML文件处理——XML文件简介