Skip to main content
 首页 » 编程设计

python之keras 和 pydot 中的 plot_model 问题

2025年05月04日15myhome

我读过类似的问题 - 我的错误似乎有所不同,因为提出的解决方案没有解决我的问题。

我在绘制 keras 模型图时遇到问题。

我已经使用自制软件安装了 graphviz 二进制文件

我已经使用 pip 安装了 graphviz python 包装器和 pydot(也尝试使用 conda,因为这在过去似乎是一个问题)。

使用 python 3.5

运行:

从 keras.utils 导入 plot_model plot_model(cnn_model, to_file='cnn_model.png')

我得到错误:

ImportError: Failed to import pydot. You must install pydot and graphviz for pydotprint to work.

跟踪:

--------------------------------------------------------------------------- 
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 之间似乎有错误的历史。关于解决方案的任何想法?

请您参考如下方法:

我用

解决了

sudo apt-get install graphviz