问题描述
事情是这样的,当时我正在愉快地使用Keras
搭建模型,发现官方还有一个绘制模型的函数plot_model()
,于是我愉快地调用了这个函数keras.utils.plot_model(model, 'model.png', show_shapes=True)
,结果就报了下面的错误:
InvocationException: GraphViz's executables not found
...
ImportError: Failed to import pydot. You must install pydot and graphviz for `pydotprint` to work.
我寻思了一下,是不是因为我没装pydot
和graphviz
才导致的报错?于是我愉快地打开PyCharm
,给我的虚拟环境装上了pydot
和graphviz
,可是它还在报错。
然后我就自闭了一会,自闭完呢,我就去百度和谷歌寻找解决方案,果然,有很多人遇到了跟我一样的问题。根据大佬 [1] 的回答,这是一个环境问题,解决方案是在命令行pip install graphviz
什么的,或者手动在官网下载graphviz
的安装包,然后添加系统环境变量Path
,例如C:\Program Files (x86)\Graphviz2.38\bin
这样的东西。
我寻思这个解决方案挺靠谱的,然后我就愉快地试了一下,结果,仍旧报错。
然后我再次自闭了一会,重新寻找解决方案。有人 [2] 说,安装的顺序很重要,要先安装pydot
,后安装graphviz
;有人 [3] 说要使用keras.utils.vis_utils.plot_model
而不是keras.utils.plot_model
。总之,感觉都不靠谱。
最后你猜这么着,我在PyCharm
里把安装好的graphviz
和pydot
都给卸载了,然后再命令行里安装了pydot
(pip install pydot
),就!成功了!
然后我寻思了一会到底是什么原因导致的报错,我试着把graphviz
的系统变量删了,居然没报错,哎,算啦算啦,能用就行啦!
环境
- Windows 10
- Python 3.6
- TensorFlow 2.0 Beta (内置的 Keras)
效果图
Reference
- Rob. (August 25, 2018). Graphviz and Pydotplus not working. Retrieved from https://datascience.stackexchange.com/questions/37428/graphviz-and-pydotplus-not-working
- web_ninja. (August 26, 2013). Why is pydot unable to find GraphViz’s executables in Windows 8? Retrieved from https://stackoverflow.com/questions/18438997/why-is-pydot-unable-to-find-graphvizs-executables-in-windows-8
- XifengGuo. (November, 6, 2017). pydot issue. Retrieved from https://github.com/XifengGuo/CapsNet-Keras/issues/7