首页 > 其他分享 >pytorch(3-0) 可视化训练误差折线图有

pytorch(3-0) 可视化训练误差折线图有

时间:2023-09-25 22:56:59浏览次数:36  
标签:acc loss plt self pytorch train 可视化 折线图 import

 

缺点 必须手动点击下关闭才能刷新最新的图,起码不会阻塞训练过程

 

 

 

 

 

### 画图 训练损失  训练精度  测试精度
import matplotlib.pyplot as plt
import threading
import time

import matplotlib.animation as animation

class Animator:
    def __init__(self):

        self.fmts=('-', 'm--', 'g-.', 'r:') #颜色 和线性

        #1 基础绘图
        #第1步:定义x和y坐标轴上的点   x坐标轴上点的数值
        self.x=[]
        #y坐标轴上点的数值
        self.train_loss=[]
        self.train_acc =[]
        self.test_acc=[]


    def add(self, x_,train_loss_,train_acc_,test_acc_ ):
 

        self.x.append(x_)
        self.train_loss.append(train_loss_)
        self.train_acc.append(train_acc_)
        self.test_acc.append(test_acc_)


    def ShowALL(self):     


        fig, ax = plt.subplots()
        
        plot1=ax.plot(self.x, self.train_loss, self.fmts[0],label="train_loss")
        plot2=ax.plot(self.x, self.train_acc, self.fmts[1],label="train_acc")
        plot3=ax.plot(self.x, self.test_acc, self.fmts[2],label="test_acc")

       
        plt.legend(bbox_to_anchor=(1, 1),bbox_transform=plt.gcf().transFigure)# 添加图例

        plt.grid()#网格

        plt.show()







import threading

import time

class MyThread(threading.Thread):

    def __init__(self,name_):

        threading.Thread.__init__(self)


        self.name_ = name_
        print("线程名字",self.name_ )

        self.is_running = 1# 控制标志位
        
        self.animator=Animator() # 画图类


    def run(self):

        while self.is_running:
           
            print("Thread is running...")

            print(self.animator.x,self.animator.train_loss)

            self.animator.ShowALL()
        
        print("线程停止")
     

    def stop(self):

        self.is_running = False




    # 创建并启动线程




# 调用 
my_thread = MyThread("可视化训练过程")
my_thread.setDaemon(True)#伴随主进程自动关闭
my_thread.start()

i=0
while 1:
    i=i+1
    my_thread.animator.add(i,i-3,i-2,i-1) # 加入新数据
    time.sleep(1)



my_thread.stop()# 通过标志为 手动关闭

  

标签:acc,loss,plt,self,pytorch,train,可视化,折线图,import
From: https://www.cnblogs.com/gooutlook/p/17729064.html

相关文章

  • 1、pytorch_geometric基本使用
    工具包安装方法:¶一定参考其GITHUB:https://github.com/pyg-team/pytorch_geometric(千万不要pip直接安装,肯定不行的)   In [1]:%matplotlibinlineimporttorchimportnetworkxasnximportmatplotlib.pyplotaspltdefvisualize_gra......
  • pytorch(3-2) 多层 线性回归 训练和预测代码
     脱离网页化python没有可视化    #%matplotlibinlineimporttorchimporttorchvisionfromtorch.utilsimportdatafromtorchvisionimporttransformsfromd2limporttorchasd2l#通过ToTensor实例将图像数据从PIL类型变换成32位浮点数格式,#并除以2......
  • 使用json+echarts实现数据库数据的可视化
    因为我上次是使用的另外一种方法实现的可视化,对json了解的不够,所以来补充一下这一块的知识点1、新建一个SpringBoot项目2、添加依赖<dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId></dependency><d......
  • 如何在低代码平台中应用可视化编程
    可视化编程,亦即可视化程序设计:以“所见即所得”的编程思想为原则,力图实现编程工作的可视化,即随时可以看到结果,程序与结果的调整同步。可视化编程的理念来源于可视化技术,它指的是一种把计算机程序中的文本指令转换为用户可以完全理解和操作的图形化界面。传统上,用户通过文本编程来......
  • 对企业数据分析来说,使用数据可视化至关重要的几个原因?
    在当今信息时代,企业面临着大量的数据产生和积累。这些数据蕴含着巨大的价值,可以为企业提供深入洞察、支持决策以及发掘业务机会。然而,将这些庞大的数据转化为有意义的见解并进行决策,并不是一件容易的事情。这正是为什么数据可视化在企业数据分析中至关重要的原因之一。1.向日益......
  • R语言使用Metropolis-Hastings采样算法自适应贝叶斯估计与可视化|附代码数据
    原文链接:http://tecdat.cn/?p=19889原文出处:拓端数据部落公众号 最近我们被客户要求撰写关于Metropolis-Hastings采样的研究报告,包括一些图形和统计输出。如果您可以写出模型的似然函数,则 Metropolis-Hastings算法可以负责其余部分(即MCMC)。我写了r代码来简化对任意模型的后......
  • R语言逻辑回归、决策树、随机森林、神经网络预测患者心脏病数据混淆矩阵可视化
    全文链接:https://tecdat.cn/?p=33760原文出处:拓端数据部落公众号概述:众所周知,心脏疾病是目前全球最主要的死因。开发一个能够预测患者心脏疾病存在的计算系统将显著降低死亡率并大幅降低医疗保健成本。机器学习在全球许多领域中被广泛应用,尤其在医疗行业中越来越受欢迎。机器......
  • 代码变更风险可视化系统建设与实践
    本文整理自美团技术沙龙第77期《美团亿级流量系统的质量风险防控和稳定性治理实践》。文章第一部分介绍了软件系统风险与变更;第二部分介绍了代码变更风险可视化系统的能力建设;第三部分介绍了整个系统在美团内部实践落地的情况;最后是对未来的规划和展望。希望对大家能有所帮助或启发......
  • Transformer架构解析及其pytorch实现
    备注本文对Transformer架构的分析来源于论文AttentionisAllYouNeed以及部分其引用的论文,可以理解为对该论文的翻译以及相关内容的整理。本文对Transformer的实现基于Pytorch,但是不直接调用Pytorch封装的Transformer,而是手动实现Encoder和Decoder等;与Transformer......
  • 《动手学深度学习 Pytorch版》 7.7 稠密连接网络
    7.7.1从ResNet到DenseNetDenseNet可以视为ResNet的逻辑扩展。ResNet将函数展开为\(f(\boldsymbol{x})=x+g(\boldsymbol{x})\),即一个简单的线性项和一个复杂的非线性项。若将\(f\)拓展成超过两部分,则DenseNet便是其中一种方案。这即是DenseNet和ResNet的主要区......