【问题标题】:error when trying to use keras.utils.plot_model尝试使用 keras.utils.plot_model 时出错
【发布时间】:2018-12-02 10:35:35
【问题描述】:

我正在尝试使用 Keras 包在 Python 中制作深度学习模型的绘图/图表,但不幸的是它一直给我一个信息量不大的错误。

我在 Linux 上使用 Python 3.5.2、Anaconda 4.2.0、Keras 2.1.6 运行 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 都已安装

【问题讨论】:

  • 你有答案吗,因为我有同样的问题?
  • @AshishSaini 是的,这是一些兼容性问题。我不记得现在具体是什么了。但是试试这个帖子的一些建议

标签: python tensorflow keras


【解决方案1】:
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
)

您可以使用此代码,它可以正确地与我的项目配合使用。

【讨论】:

    【解决方案2】:

    对我来说,解决方案是像这样导入:

    from keras.utils.vis_utils import plot_model
    

    【讨论】:

    • 谢谢!我很惊讶在我遇到问题前 19 小时就回答了这个问题。你拯救了我的一天!
    【解决方案3】:

    如果您正在运行像 PyCharm 这样的 IDE,在安装 pydot 并安装 Graphviz 之后(也将其添加到环境 PATH 变量。例如 C:\Program Files\Graphviz\bin。请参阅此处 @987654321 @),您应该重新启动 IDE

    如果您在虚拟环境中工作,我建议您停用并重新启动终端并再次激活虚拟环境。

    原因 - 包试图从 os.environ['PATH'] 中找到 graphviz,但不知何故它没有更新以在路径中显示 graphviz。 重启 Pycharm 后,发现 os.environ['PATH'] 更新正常,plot_model 函数正常工作。

    【讨论】:

      【解决方案4】:

      我将 keras.utils 更改为 tensorflow.keras.utils,它帮助了我

      【讨论】:

      • 现在是:tensorflow.python.keras.utils
      【解决方案5】:

      我解决了在 pydot.py 中评论第 117 行 program += extension 的问题

      【讨论】:

        【解决方案6】:

        对我来说,解决方案是:

        • conda install pydotplus(据说 tensorflow-gpu 无法安装 pydot-ng)。
        • 在anaconda目录下搜索viz_utils.py,全部打开。确保在任何地方都导入 pydot,它是通过以下方式完成的:
        尝试: # pydot-ng 是 pydot 的一个分支,维护得更好。 将 pydot_ng 导入为 pydot 导入错误除外: # pydotplus 是 pydot 的改进版 尝试: 将 pydotplus 导入为 pydot 导入错误除外: # 如有必要,回退到 pydot。 尝试: 导入 pydot 导入错误除外: pydot = 无

        其中一个文件刚刚提到import pyplot。更改后,它对我有用。

        【讨论】:

          【解决方案7】:

          似乎存在一些兼容性问题! (Link)

          安装 Graphviz 并将其添加到 paths 对我有用。

          【讨论】:

            【解决方案8】:

            评论说

             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 环境中:

            pip install pydot
            

            【讨论】:

            • pydot 和 graphviz 都安装了
            • 你能在 python shell 中运行pydot.Dot.create(pydot.Dot()) 吗?我做了上述 2 并且它对我有用,但我没有使用 anaconda
            • 我没用,但我认为 () 有错误。我尝试了 () 的不同组合,但每次都显示Badly placed ()'s
            • idk,我完全按照上面的方法做了(apt、pip 和 python 行),它适用于 python 2.7 和 3.5
            猜你喜欢
            • 2017-07-18
            • 2017-02-08
            • 2020-09-07
            • 2021-09-14
            • 2019-04-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多