我正在尝试使用Keras软件包在Python中绘制深度学习模型的图/图,但不幸的是,它一直给我一个错误,信息不多。
我在具有Python 3.5.2,Anaconda 4.2.0,Keras 2.1.6的Linux上运行python,并使用tensorflow-gpu 1.7.0后端。
这是错误消息:
keras.utils.plot_model(unet, to_file='model.png', show_shapes=False, show_layer_names=True, rankdir='TB')
['dot', '-Tps', '/tmp/tmphesl1j0c'] return code: 127
stdout, stderr:
b''
b'dot: error while loading shared libraries: libexpat.so.0: cannot open shared object file: No such file or directory\n'
---------------------------------------------------------------------------
AssertionError Traceback (most recent call last)
<ipython-input-9-60bb0e3b97bd> in <module>()
----> 1 keras.utils.plot_model(unet, to_file='model.png', show_shapes=False, show_layer_names=True, rankdir='TB')
/.../anaconda3-4.2.0/lib/python3.5/site-packages/keras/utils/vis_utils.py in plot_model(model, to_file, show_shapes, show_layer_names, rankdir)
132 'LR' creates a horizontal plot.
133 """
--> 134 dot = model_to_dot(model, show_shapes, show_layer_names, rankdir)
135 _, extension = os.path.splitext(to_file)
136 if not extension:
/.../anaconda3-4.2.0/lib/python3.5/site-packages/keras/utils/vis_utils.py in model_to_dot(model, show_shapes, show_layer_names, rankdir)
53 from ..models import Sequential
54
---> 55 _check_pydot()
56 dot = pydot.Dot()
57 dot.set('rankdir', rankdir)
/.../anaconda3-4.2.0/lib/python3.5/site-packages/keras/utils/vis_utils.py in _check_pydot()
24 # Attempt to create an image of a blank graph
25 # to check the pydot/graphviz installation.
---> 26 pydot.Dot.create(pydot.Dot())
27 except OSError:
28 raise OSError(
/.../anaconda3-4.2.0/lib/python3.5/site-packages/pydot.py in create(self, prog, format, encoding)
1882 out=stdout_data,
1883 err=stderr_data))
-> 1884 assert p.returncode == 0, p.returncode
1885 return stdout_data
AssertionError: 127
如果有人可以帮助我解决这个错误,我将不胜感激。
注意:pydot和graphviz均已安装
答案 0 :(得分:3)
我将 keras.utils 更改为 tensorflow.keras.utils,它对我有帮助
答案 1 :(得分:2)
对我来说,解决方案是这样导入:
from keras.utils.vis_utils import plot_model
答案 2 :(得分:0)
评论说
24 # Attempt to create an image of a blank graph
25 # to check the pydot/graphviz installation.
所以我想您需要安装graphviz和pydot
假设您使用的是ubuntu或类似版本:
sudo apt install graphviz
以及您的anaconda env:
pip install pydot
答案 3 :(得分:0)
答案 4 :(得分:0)
对我来说解决方案是:
conda install pydotplus
(pydot-ng不能通过tensorflow-gpu安装)。try: # pydot-ng is a fork of pydot that is better maintained. import pydot_ng as pydot except ImportError: # pydotplus is an improved version of pydot try: import pydotplus as pydot except ImportError: # Fall back on pydot if necessary. try: import pydot except ImportError: pydot = None
其中一个文件只是说import pyplot
。更改之后,它对我有用。
答案 5 :(得分:0)
我解决了program += extension
中的问题注释行117 pydot.py
答案 6 :(得分:0)
如果您运行的是 PyCharm 之类的 IDE,则在安装 pydot 并安装 Graphviz 之后(还将其添加到环境 PATH 变量。例如 C:\Program Files\Graphviz\bin。参见此处 {{ 3}}),您应该重新启动 IDE。
如果您在虚拟环境中工作,我建议您停用并重新启动终端,然后再次激活虚拟环境。
原因 - 包试图从 os.environ['PATH'] 定位 graphviz,但不知何故它没有更新以在路径中显示 graphviz。 重新启动 Pycharm 后,我发现 os.environ['PATH'] 已正确更新并且 plot_model 函数正常工作。
答案 7 :(得分:0)
from keras.utils.vis_utils import plot_model
keras.utils.vis_utils.plot_model(
csf1, to_file='model.png', show_shapes=True, show_dtype=True,
show_layer_names=True, rankdir='TB', expand_nested=True, dpi=96
)
您可以使用此代码,它适用于我的项目。