我正在设置一个远程工作站,以便在另一台包含GPU的计算机上从我的笔记本电脑运行机器学习相关的Python代码。
我使用vscode的SSH远程特性来远程运行和调试我的代码,我对界面非常满意。但是,我无法生成来自"matplotlib"库的图形。
我尝试修改一些matlplotlib选项,但没有成功:
import matplotlib
matplotlib.use('Agg')
如以下文件所示:_tkinter.TclError: no display name and no $DISPLAY environment variable
简而言之,我的问题出现在下面的示例代码中:
x一个一个一个一个x一个一个二个x
谢谢你帮我!
6条答案
按热度按时间woobm2wo1#
我发现前面的答案的一个微小的变化工作得很好。
将打印保存为
.png
,而不是打印。plt.savefig("dummy_name.png")
前面的答案建议通过
scp
移动文件。我建议用Visual Code打开dummy_name.png
,不需要写命令,它会在你绘制其他东西时自动刷新图像。我在美国用SSH测试了这个,在欧洲的服务器上,图像刷新不到半秒。gudnpqoy2#
我设法解决了这个问题,方法是运行一个启用X11转发的并行Putty ssh连接,并在启动python脚本之前在vscode的终端中写入
export DISPLAY=localhost:10.0
。然而,我有安全方面的考虑,我想知道为什么我必须手动做这些命令,以便它的工作...任何见解将不胜感激!
sh7euo9m3#
为了方便配置,您有2个选项:
1.不显示绘图,通过SSH传输图片文件
此选项包括将
plt.show()
替换为More information关于保存
matplotlib
图之后,您可以使用
scp
传输此数字1.使用Jupyter笔记本
您可以轻松地绘制到Jupyter Notebook中。下面是a tutorial,介绍如何通过
ssh
设置树莓派,为Jupyter Notebook创建远程服务器。在Jupyter Notebook上,在导入
matplotlib
之前,需要在笔记本的第一行添加,以便在单元格之后绘制图像。2skhul334#
另一种方法是使用Tensorboard,现在可以通过VS代码中的扩展来使用它。您可以保存图像或绘图(以及其他类型的数据),并通过VS代码选项卡中的Tensorboard界面立即查看它。我一直通过ssh使用它。但是,您确实需要Tensorflow或Pytorch来完成此操作。
下面是一个在Pytorch中的numpy.array或torch.tensor格式的图像示例。请确保首先启动您的Tensorboard会话。
以下是matplotlib图形的示例:
刷新你的Tensorboard,你应该马上看到它。
smtd7mpg5#
你也可以使用pickle来哑的文件在服务器上,然后重新绘制他们在本地之一。你可以使用“SCP”来复制原始数据到您的本地机器。有时它的帮助,因为你可以有实时互动的绘图。我下面这2个链接:
1.保存绘图数据python matplotlib save graph as data file
1.使用SCP Copying files from server to local computer using SSH复制
x6492ojm6#
我建议创建一个新的笔记本并运行这个笔记本中的python文件,这对我来说是最好的。