首页 炼丹房 帖子详情
关于Ploter绘制动态图的疑问
收藏
快速回复
炼丹房 问答新手上路 2116 7
关于Ploter绘制动态图的疑问
收藏
快速回复
炼丹房 问答新手上路 2116 7

在进行Regression的新手入门时, 运行所给的示例程序没有任何问题, 动态图可以正常运行; 但是简单的调整了动态图代码出现的位置之后, 动态图的代码就造成了整个程序的崩溃。然后我和这短短5行的ploter代码殊死搏斗了2个小时,发现了一些有趣的现象:

1. 如下代码不能画出图像 , 但是删掉print函数之后就可以(并且如果print函数出现在for循环里,如下代码也无法运行);

import numpy as np 
from paddle.utils.plot import Ploter 
%matplotlib inline
train_prompt = "trainCost" 
# print(train_prompt)
plot_prompt = Ploter(train_prompt)
for i in range(5): 
    plot_prompt.append(title = train_prompt, step =i , value = 8- i) 
    plot_prompt.plot()

2. 上述不含print的代码块, 在main()函数中的出现位置决定其是否能正确出图。

3. 在部分情况下, 如果在main函数中加入上述不含print的代码块,并成功画出图; 那么train(infer)函数中Ploter方法就能够成功作图;

我不相信计算机是玄学, 有没有大佬给讲讲,咋回事啊?这可咋整啊?不行只能去看源码了,幸好paddle开源了, 不过还是希望有大佬能帮帮忙给个解释呀。

0
收藏
回复
全部评论(7)
时间顺序
AIStudio810261
#2 回复于2019-10

这个是因为notebook有个先天局限, 不能同时输出print和plot. 分散到不同的cell里就好了. 

0
回复
w
wangwei8638
#3 回复于2019-10
这个是因为notebook有个先天局限, 不能同时输出print和plot. 分散到不同的cell里就好了. 

这俩还会有冲突?

0
回复
AIStudio810261
#4 回复于2019-10
这俩还会有冲突?

是的, Notebook的底层问题. 

0
回复
g
gbsrept
#5 回复于2020-06

notebook调用的是ipython.display包,plot()实际上是先clear再画个新的。加个print,clear就不管用了,自然没法更新。

都是开源的,多看两行源码就知道了,别什么玄学的瞎扯。

0
回复
g
gbsrept
#6 回复于2020-06

可以参考一下这个代码:

https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/utils/plot.py

0
回复
AIStudio810258
#7 回复于2020-06

现在有Visual DL组件,已经2.0版本了。看训练过程挺方便的。

0
回复
AIStudio810258
#8 回复于2020-06

简单的就直接matplotlib

0
回复
在@后输入用户全名并按空格结束,可艾特全站任一用户