精华内容
下载资源
问答
  • Qt超强绘图QCustomplot 动态图静态图时间坐标轴

    千次阅读 多人点赞 2019-03-19 18:26:45
    这个功能很强 画曲线折线柱状图动态静态 放大缩小 都很好用 10w条数据量无压力 秒画出来 一点也不卡 这是下载地址 https://www.qcustomplot.com/index.php/download 里面分为 QCustomPlot 2 和 QCustom...

    前言:

    前段时间用 QChart 模块画图,一条曲线上面放8000条数据就会卡的不行,必须要换个其他的控件找到了QCustomplot
    这个功能很强 画曲线图折线图柱状图动态静态 放大缩小 都很好用 10w条数据量无压力 秒画出来 一点也不卡
    这是下载地址
    https://www.qcustomplot.com/index.php/download
    里面分为
    QCustomPlot 2 和 QCustomPlot 1 我用的2 这两个有一些函数的差异
    下载解压 以后 我们只需要 qcustomplot.h 和 qcustomplot.cpp
    !!!pro 文件里面 写入 QT+= printsupport!!!

    动态效果

    在这里插入图片描述

    画静态图

    //他继承QWidget 所以构造里面 放控件就会画到控件上
    QCustomPlot *pCustomPlot = new QCustomPlot(ui->label);
    //添加一条曲线
    QCPGraph* pgraph = pCustomPlot->addGraph();
    
    //给曲线准备数据 设置数据 
        QVector<double> x(80000);
        QVector<double> y(80000);
    
        for(int i = 0; i<x.size();i++)
        {
            x[i] = i;
            if(i%2==0)
                y[i] = 10;
            else
                y[i] = 20;
        }
    	
    	//设置数据
        pCustomPlot->graph(0)->setData(x,y);
    
    	//设置Y轴范围
        pCustomPlot->yAxis->setRange(0,30);
    	//x轴名字
        pCustomPlot->xAxis->setLabel("X");
        //Y轴名字
        pCustomPlot->yAxis->setLabel("Y");
    	//设置大小
        pCustomPlot->resize(ui->label->width(),ui->label->height());
    	//可以进行鼠标位置 放大缩小 拖拽  放大缩小坐标系!!!功能非常强大
        pCustomPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom);
    
    	//重绘 每次改变完以后都要调用这个进行重新绘制
        pCustomPlot->replot();
    
    

    在这里插入图片描述

    画时间为坐标轴的静态图

    大致差不多 区别在于x轴改为时间

        QCustomPlot* p2 = new QCustomPlot(ui->label_2);
    
        QVector<double> time;
        QVector<double> y;
    
    	//模拟几个时间 .toTime_t()是转换为 时间戳 从1970年到现在的秒数
        time<<QDateTime::fromString("2019-01-15 17:08:23","yyyy-MM-dd hh:mm:ss").toTime_t();
        time<<QDateTime::fromString("2019-01-25 17:08:23","yyyy-MM-dd hh:mm:ss").toTime_t();
        time<<QDateTime::fromString("2019-02-15 17:08:23","yyyy-MM-dd hh:mm:ss").toTime_t();
        time<<QDateTime::fromString("2019-02-25 17:08:23","yyyy-MM-dd hh:mm:ss").toTime_t();
        time<<QDateTime::fromString("2019-03-27 13:08:23","yyyy-MM-dd hh:mm:ss").toTime_t();
    
        y<<5<<15<<5<<15<<5;
    	
    	//增加一条线
        p2->addGraph();
        //设置Y轴范围
        p2->yAxis->setRange(0,20);
        
    	//QCPAxisTickerDateTime 时间坐标轴 必须要用 智能指针 
        QSharedPointer<QCPAxisTickerDateTime> timer(new QCPAxisTickerDateTime);
    
    	//设置时间格式
        timer->setDateTimeFormat("yyyy-MM-dd");
        //设置时间轴 一共几格
        //timer->setTickCount(6);
        //设置label 旋转30° 横着显示可能显示不全 
        p2->xAxis->setTickLabelRotation(30);
    
       // timer->setTickStepStrategy(QCPAxisTicker::tssMeetTickCount);
    	//设置坐标轴
        p2->xAxis->setTicker(timer);
    
        p2->xAxis->setRange(time.at(0),time.at(4));
    
        p2->graph(0)->setData(time,y);
    
        p2->resize(ui->label_2->width(),ui->label_2->height());
    
         p2->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom);
    

    在这里插入图片描述

    下图动态曲线是我用传感器采集的,你们没有传感器代码我就不提供了
    我提供了一个画动态图的demo 下方↓

    在这里插入图片描述

    画动态曲线

    假设图像只显示10个点 第11个点将会把第一个点挤出去 就是一个vector 出栈入栈 里面一直保持10个数据

    		//QVector<double> sx_vec,xAxis_vec 存放数据的容器
     	
    		//m_chartPoint_counter  计数器  一直增加 来一条数据增加一下 控制x轴前进 实现动态效果
    	
    		//这时容器里面还没10个点 所有一直向里面存
            if(m_chartPoint_counter < 10)
            {
            	
                sx_vec.append(sx_);
    
                xAxis_vec.append(m_chartPoint_counter);
    	
    			//设置范围正好 能显示当前点				
                sx_plot->xAxis->setRange(0,xAxis_vec.at(xAxis_vec.size()-1));
              
    
            }
            else
            {
            	//容器数据现在是正好10个  把第一个出栈  把第11个入栈  正好还是10个数据
                sx_vec.removeFirst();
                xAxis_vec.removeFirst();
    			
    			//入栈
                xAxis_vec.append(m_chartPoint_counter);
                sx_vec.append(sx_);
    
    
    
    
    			//设置范围正好 能显示当前点		
                sx_plot->xAxis->setRange(xAxis_vec.at(0),xAxis_vec.at(
                                             xAxis_vec.size()-1));
    
    
            }
    		//设置Y轴坐标系 自动缩放以正常显示所有的数据
            sx_plot->yAxis->rescale(true);
        	//设置数据
            sx_plot->graph()->setData(xAxis_vec,sx_vec);
    		//重绘制
            sx_plot->replot();
    
    	//这里必须要一直增加 如果增加到10就不增加 效果就是第10个点一直变化 不会出现动态效果
    	m_chartPoint_counter++;
    
    

    这里没有准备动态图片就 想象一下吧

    //图像数据清空
    QCPGraph* thresholdY_line;
    thresholdY_line->data().data()->clear();
    

    这里只是介绍一些基本的功能 ,一些强大的功能 在 下载的examples里有在这里插入图片描述

    如果此文对您有帮助,请点个关注点个赞,这是对我最大的支持,谢谢!

    展开全文
  • 对于使用者来说,两种形式的计算有着非常大的区别,同时静态图动态图都有他们各自的优点,比如动态图比较方便debug,使用者能够用任何他们喜欢的方式进行debug,同时非常直观,而静态图是通过先定义后运行的方式...
  • 神经网络——动态图静态图

    千次阅读 2020-01-13 21:04:11
    目前神经网络框架分为静态图框架和动态图框架,PyTorch和TensorFlow、Caffe等框架最大的区别就是他们拥有不同的计算表现形式。TensorFlow1.*使用静态图(在TensorFlow2.*中使用的是动态图),这意味着我们先定义...

    目前神经网络框架分为静态图框架和动态图框架,PyTorch和TensorFlow、Caffe等框架最大的区别就是他们拥有不同的计算图表现形式。TensorFlow1.*使用静态图(在TensorFlow2.*中使用的是动态图),这意味着我们先定义计算图,然后不断使用它,而在PyTorch中,每次都会重新构建一个新的计算图。

    静态图和动态图有各自的优点。动态图比较方便DEBUG,使用者能够使用任何他们喜欢的方式进行debug,同时非常直观,而静态图是通过先定义后运行的方式,之后再次运行的时候就不再需要重新构建计算图,所以速度会比动态图更快。

     

    import torch
    from torch.autograd import Variable
    
    x=Variable(torch.randn(1,10))
    prev_h=Variable(torch.randn(1,20))
    W_h=Variable(torch.randn(20,20))
    W_x=Variable(torch.randn(20,10))
    
    i2h=torch.mm(W_x,x.t())
    h2h=torch.mm(W_h,prev_h.t())
    
    

    比较while循环语句在TensorFlow和PyTorch中的定义

    TensorFlow

    import tensorflow as tf
    
    first_counter=tf.constant(0)
    second_counter=tf.constant(10)
    
    def cond(first_counter,second_counter,*args):
        return first_counter<second_counter
    
    def body(first_counter,second_counter):
        first_counter=tf.add(first_counter,2)
        second_counter=tf.add(second_counter,1)
        return first_counter,second_counter
    
    c1,c2=tf.while_loop(cond,body,[first_counter,second_counter])
    
    with tf.Session() as sess:
        counter_1_res,counter_2_res=sess.run([c1,c2])
    
    print(counter_1_res)
    print(counter_2_res)
    

    可以看到TensorFlow需要将整个图构成静态的,每次运行的时候图都是一样的,是不能够改变的,所以不能直接使用Python的while循环语句,需要使用辅助函数tf.while_loop写成TensorFlow内部形式。

     

    PyTorch

    import torch
    first_counter=torch.Tensor([0])
    second_counter=torch.Tensor([10])
    
    while(first_counter<second_counter):
        first_counter+=2
        second_counter+=1
    
    print(first_counter)
    print(second_counter)
    
    
    
    

    可以看到PyTorch的写法和Python的写法是完全一致的,没有任何额外的学习成本。

    动态图的方式更加简单且直观。

    展开全文
  • 小结:动态图实时解释执行,这样在训练的过程中可以终止,然后修改然后再接着进行训练。比如,在训练的过程中发现loss下降很慢,我可以终止程序,调大学习率,然后再接着训练。静态图的话是有大量的预定义,将所有的...

    小结:动态图实时解释执行,这样在训练的过程中可以终止,然后修改然后再接着进行训练。比如,在训练的过程中发现loss下降很慢,我可以终止程序,调大学习率,然后再接着训练。静态图的话是有大量的预定义,将所有的配置都定义好了,再交由执行器一次执行完,有点像yml配置文件,所有的都配置好了,在执行。这样就无法在训练的过程中进行修改。

    展开全文
  • MFC 加载图片 动态加载图片 静态加载图片 ,解决了从网上找的代码的内存泄漏的问题。
  • 目前神经网络框架分为静态图框架和动态图框架,PyTorch 和 TensorFlow、Caffe 等框架最大的区别就是他们拥有不同的计算表现形式。 TensorFlow 使用静态图,这意味着我们先定义计算,然后不断使用它,而在 ...

    Pytorch Note5 动态图和静态图

    全部笔记的汇总贴:Pytorch Note 快乐星球

    动态图和静态图

    目前神经网络框架分为静态图框架和动态图框架,PyTorch 和 TensorFlow、Caffe 等框架最大的区别就是他们拥有不同的计算图表现形式。 TensorFlow 使用静态图,这意味着我们先定义计算图,然后不断使用它,而在 PyTorch 中,每次都会重新构建一个新的计算图。通过这次课程,我们会了解静态图和动态图之间的优缺点。

    对于使用者来说,两种形式的计算图有着非常大的区别,同时静态图和动态图都有他们各自的优点,比如动态图比较方便debug,使用者能够用任何他们喜欢的方式进行debug,同时非常直观,而静态图是通过先定义后运行的方式,之后再次运行的时候就不再需要重新构建计算图,所以速度会比动态图更快。

    下面我们比较 while 循环语句在 TensorFlow 和 PyTorch 中的定义

    TensorFlow

    # tensorflow
    import tensorflow as tf
    
    first_counter = tf.constant(0)
    second_counter = tf.constant(10)
    
    def cond(first_counter, second_counter, *args):
        return first_counter < second_counter
    
    def body(first_counter, second_counter):
        first_counter = tf.add(first_counter, 2)
        second_counter = tf.add(second_counter, 1)
        return first_counter, second_counter
    
    c1, c2 = tf.while_loop(cond, body, [first_counter, second_counter])
    
    with tf.Session() as sess:
        counter_1_res, counter_2_res = sess.run([c1, c2])
    
    print(counter_1_res)
    print(counter_2_res)
    

    20
    20

    可以看到 TensorFlow 需要将整个图构建成静态的,换句话说,每次运行的时候图都是一样的,是不能够改变的,所以不能直接使用 Python 的 while 循环语句,需要使用辅助函数 tf.while_loop 写成 TensorFlow 内部的形式

    这是非常反直觉的,学习成本也是比较高的

    下面我们来看看 PyTorch 的动态图机制,这使得我们能够使用 Python 的 while 写循环,非常方便

    PyTorch

    # pytorch
    import torch
    first_counter = torch.Tensor([0])
    second_counter = torch.Tensor([10])
    
    while (first_counter < second_counter)[0]:
        first_counter += 2
        second_counter += 1
    
    print(first_counter)
    print(second_counter)
    

    20
    [torch.FloatTensor of size 1]
    20
    [torch.FloatTensor of size 1]

    可以看到 PyTorch 的写法跟 Python 的写法是完全一致的,没有任何额外的学习成本

    PyTorch的动态图框架主要是由torch/csrc/autograd下的代码实现的。这个目录下定义了3个主要的基类:Variable、Function、Engine,这三个基类及其继承体系共同构成了PyTorch动态图的根基。

    为什么叫作动态图呢?图容易理解,Function是nodes/vertices,(Function, input_nr)是edges。那么动态体现在什么地方呢?每一次前向时构建graph,反向时销毁。

    上面的例子展示如何使用静态图和动态图构建 while 循环,看起来动态图的方式更加简单且直观。

    下一章传送门:Note6 自动求导Autograd

    展开全文
  • 深度学习框架:动态图 vs 静态图

    万次阅读 多人点赞 2019-04-04 11:01:31
    动态图框架对应的是 命令式编程 静态图框架对应的是 符号式编程 命令式编程 vs 符号式编程 参考 https://blog.csdn.net/z0n1l2/article/details/80873608 ...
  • Pytorch学习(二):动态图静态图

    千次阅读 2019-11-24 21:51:29
    ​ 目前神经网络框架分为静态图框架和动态图框架,PyTorch 和 TensorFlow、Caffe 等框架最大的区别就是他们拥有不同的计算表现形式。 TensorFlow 使用静态图,这意味着我们先定义计算,然后不断使用它,而在 ...
  • 动态图静态图区别,可以理解为解释执行和编译执行的区别动态图就是原生python编程习惯,而静态图其实是加了编译层,理论上编译的要比解释的快,但实际上有些任务速度区别不大,因为原生python也可以优化的很快...
  • 深度学习框架 动态图静态图

    万次阅读 2020-09-27 18:06:56
    Tensorflow,Pytorch,PaddlePaddle,在介绍框架的时候都会提及到动态图静态图。 计算: 不论是动态图还是静态图,它们都属于计算。计算是用来描述运算的有向无环,它有两个主要元素:结点(Node)和边...
  • PyTorch学习:动态图静态图

    万次阅读 2018-11-09 15:20:21
    目前神经网络框架分为静态图框架和动态图框架,PyTorch 和 TensorFlow、Caffe 等框架最大的区别就是他们拥有不同的计算表现形式。 TensorFlow 使用静态图,这意味着我们先定义计算,然后不断使用它,而在 ...
  • 点击关注我哦一篇文章带你了解动态图静态图区别和优劣但凡我们接触深度学习框架,肯定都会听过“计算”这个概念,如果有具体使用过某个框架,可以知道计算又可以分为:静态图动态图。深度学...
  • 目前神经网络框架分为静态图框架和动态图框架,PyTorch 和 TensorFlow、Caffe 等框架最大的区别就是他们拥有不同的计算表现形式。 TensorFlow使用静态图,这意味着我们先定义计算,然后不断使用它,而在PyTorch...
  • 本篇为《深度学习》系列博客的第十一篇,该系列博客主要记录深度学习相关...PaddlePaddle的静态图动态图静态图动态图的概念静态图动态图代码对比使用tensorflow实现静态图代码使用PyTorch实现动态图代码使用Padd
  • 静态图动态图的优劣

    万次阅读 2019-06-25 21:21:00
    静态图只建一次,然后不断复用它,容易在上做优化,的效率更高 ...动态图相比静态图代码更简洁 在tensorflow静态图中条件和循环需要特定的语法,pytorch只用python的语法就可以实现 pytorch适合研究,te...
  • 计算动态图静态图

    千次阅读 2020-03-01 16:24:34
    计算   计算是用来描述运算的有向无环。计算有两个主要元素:结点(Node) 和边(Edge)。结点表示数据,如向量,矩阵,张量;边表示运算,如加减乘除卷积等。 用计算表示 y = ( x+ w) * ( w + 1 )  拆...
  • 在本身的项目中需要动态请求后端图片 一般需要在created中写因为...静态图片想要动态的添加或者改变我们需要改变图片的目录结构 把图片放在static中然后 imgUrl : ['/static/clinical.png','/static/nursing
  • 深度学习中常见的动态图静态图

    千次阅读 2019-11-20 15:19:40
    目前神经网络框架分为静态图框架和动态图框架,PyTorch 和 TensorFlow、Caffe 等框架最大的区别就是他们拥有不同的计算表现形式。 TensorFlow使用静态图,这意味着我们先定义计算,然后不断使用它,而在PyTorch...
  • 机器学习中常见的动态图静态图

    万次阅读 2018-12-23 20:34:57
     目前神经网络框架分为静态图框架和动态图框架,PyTorch 和 TensorFlow、Caffe 等框架最大的区别就是他们拥有不同的计算表现形式。 TensorFlow 使用静态图,这意味着我们先定义计算,然后不断使用它,而在 ...
  • 动态图命令: convert 原路径 -coalesce -gravity northwest -geometry +6.0+5.75 null: 水印图片路径 -layers composite -layers optimize 输出图片路径 -gravity 用于定义水印图片的位置,有以下几个值可取: ...
  • 目前神经网络框架分为静态图框架和动态图框架,PyTorch 和 TensorFlow、Caffe 等框架最大的区别就是他们拥有不同的计算表现形式。 TensorFlow 使用静态图,这意味着我们先定义计算,然后不断使用它,而在 ...
  • PaddlePaddle即飞桨,我在学习这个框架的过程中,其实是很迷的,迷惑的地方就在它的静态图动态图。于是,我打算好好整理整理,把两者的特点给大家解析一下,让新入门的开发者少走弯路。 关于飞桨的版本 静态图 动态图 ...
  • PyTorch系列5 ---动态图静态图

    千次阅读 2019-05-22 10:28:04
    #目前,神经网络框架分为静态图框架和动态图框架,,PyTorch 和 TensorFlow、 Caffe等框架最大的区别就是他们拥有不同的计算表现形式。 # TensorFlow使用静态图,这意味着我们先定义计算,,然后不断地使用它。...
  • 初探PaddlePaddle的静态图动态图

    千次阅读 2020-10-26 09:29:04
    最近学习paddle的分割框架,使用了paddle的动态图,自己实现了一遍,发现和pytorch的结构很相似,再把静态图也实现了遍,果然又和tensorflow相似。下面是mnist的两种实现,顺便把paddle的优化器和学习率调整也学习了...
  • TensorFlow的静态图动态图

    千次阅读 2018-10-23 11:52:02
    TensorFlow之前是静态图,即必须把所有的操作以及网络结构定义好,最后才执行,是分开的,后来有了动态图功能,即Eager Execution 。
  • 动态测试是使用和运行被测软件,通常意义上的测试;它的对象必须是能够由计算机真正运行的被测试的程序。本教程操作环境:windows10系统、Dell G3电脑。1、静态测试静态测试(static testing)就是不实际运行被测软件...
  • 动态库与静态库、动态链接与静态链接 的区别
  • TensorFlow2.0的动态图静态图切换 part 2 在part1中,我们学习了如何使用tf.function将python函数转换成tf的静态图,也学习了转换时创建一个状态(tf.Variable)可能出现的问题以及解决办法。 在第二部分,我们将...
  • 本章节缕一缕PyTorch的动态图机制与Tensorflow的静态图机制(最新版的TF也支持动态图了似乎)。 1 动态图的初步推导 计算是用来描述运算的有向无环 计算有两个主要元素:结点(Node)和边(Edge); 结点表示...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 373,148
精华内容 149,259
关键字:

动态图静态图区别