我已经阅读了类似的问题-我的错误似乎不同,因为提出的解决方案不能解决我的问题。
我在绘制keras模型的图表时遇到了麻烦。
我使用homebrew安装了graphviz二进制文件
我使用pip(也尝试过conda,因为这似乎是过去的问题)安装了graphviz python包装器和pydot。
使用python 3.5
运行:
from keras.utils import plot_model
plot_model(cnn_model, to_file='cnn_model.png')
我收到以下错误:
导入pydot失败。您必须安装pydot和graphviz才能使
pydotprint
正常工作。
带有跟踪:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
/Users/jusjosgra/anaconda/lib/python3.5/site-packages/keras/utils/vis_utils.py in _check_pydot()
26 # so no specific class can be caught.
---> 27 raise ImportError('Failed to import pydot. You must install pydot'
28 ' and graphviz for `pydotprint` to work.')
AttributeError: 'NoneType' object has no attribute 'Dot'
During handling of the above exception, another exception occurred:
ImportError Traceback (most recent call last)
<ipython-input-450-82ff54d9260b> in <module>()
1 from keras.utils import plot_model
----> 2 plot_model(cnn_model, to_file='cnn_model.png')
/Users/jusjosgra/anaconda/lib/python3.5/site-packages/keras/utils/vis_utils.py in plot_model(model, to_file, show_shapes, show_layer_names, rankdir)
133 if not extension:
134 extension = 'png'
--> 135 else:
136 extension = extension[1:]
137 dot.write(to_file, format=extension)
/Users/jusjosgra/anaconda/lib/python3.5/site-packages/keras/utils/vis_utils.py in model_to_dot(model, show_shapes, show_layer_names, rankdir)
54 dot.set('rankdir', rankdir)
55 dot.set('concentrate', True)
---> 56 dot.set_node_defaults(shape='record')
57
58 if isinstance(model, Sequential):
/Users/jusjosgra/anaconda/lib/python3.5/site-packages/keras/utils/vis_utils.py in _check_pydot()
29
30
---> 31 def model_to_dot(model,
32 show_shapes=False,
33 show_layer_names=True,
我可以成功地单独导入pydot和graphviz。
看起来keras和graphviz之间存在一些历史性的错误。有没有解决方案?
brew install graphviz
但没有成功。然后我执行了brew link --overwrite graphviz
,一切都按预期工作了! - Qiushi Huang