创建 CNN 模型图:不能使用 keras.utils.vis_utils 中的 plot_model

数据挖掘 Python 喀拉斯 图表
2022-03-03 00:47:52

我在 Windows 10 上使用带有 PyCharm 的 keras。我正在尝试使用打印我的 tensorflow.keras.Model

from keras.utils.vis_utils import plot_model
...
res_net_model = tf.keras.Model(inputs=inputs,outputs=outputs)
...
plot_model(res_net_model)      #, to_file='cnn_resnet_model.bmp') #, show_shapes=True, show_layer_names=True)    

我出于某种原因得到

  File "C:\Users\Zack's 2016 Tower\.conda\envs\tensorz\lib\site-packages\keras\utils\vis_utils.py", line 240, in plot_model
    expand_nested, dpi)
  File "C:\Users\Zack's 2016 Tower\.conda\envs\tensorz\lib\site-packages\keras\utils\vis_utils.py", line 79, in model_to_dot
    _check_pydot()
  File "C:\Users\Zack's 2016 Tower\.conda\envs\tensorz\lib\site-packages\keras\utils\vis_utils.py", line 28, in _check_pydot
    pydot.Dot.create(pydot.Dot())
  File "C:\Users\Zack's 2016 Tower\.conda\envs\tensorz\lib\site-packages\pydotplus\graphviz.py", line 2032, in create
    status, stderr_output))
pydotplus.graphviz.InvocationException: Program terminated with status: 1. stderr follows: Format: "ps" not recognized. Use one of:


Process finished with exit code 1

我已经确认 conda 已经安装了 graphviz & pydotplus。我还尝试将 graphviz 安装为我路径中的可执行文件。

我浏览了类似的帖子,例如thisthis,但没有运气:没有任何东西符合我的错误。它甚至没有告诉我应该使用什么格式(尽管可能有答案)。没关系,因为 atm 我不要求它生成图像。我不知道它从哪里得到“ps”。

1个回答

我今天遇到了完全相同的问题,偶然发现了你的问题。由于它没有回复,我进一步挖掘并最终找到了一些对我有帮助的东西。对您来说可能为时已晚,但其他任何人都有这个问题,如果我记录我的发现也许会有所帮助。

背景:我的设置是 Windows 10 下的 Python 3.7。

keras 函数plot_model使用pydot它本身依赖于GraphViz. Format: "ps" not recognized. Use one of:此外,您看到的错误消息是由dot所属的工具之一引起的,该工具GraphViz是从内部调用的pydot在玩弄了这个dot工具之后,它最终告诉了我以下信息:

There is no layout engine support for "dot" Perhaps "dot -c" needs to be run (with installer's privileges) to register the plugins?

因此,我启动了一个具有管理员权限的新控制台并运行dot -c. 这使得dot能够使用它的布局引擎,这使得错误消失了。在此之后, plot_model突然为我工作。

希望它可以帮助任何人。