You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu下TensorFlow plot_model调用pydotplus生成空文件报错求助

TensorFlow plot_model生成0字节文件并抛出InvocationException错误

环境配置

  • Ubuntu 22.04
  • PyCharm 2024.1.3
  • Python 3.12
  • TensorFlow 2.16.1

问题现象

调用tf.keras.utils.plot_model函数绘制并保存模型可视化文件时,生成的文件为0字节无法打开,脚本执行抛出如下错误:

Traceback (most recent call last):
File "/home/linuxpc/PycharmProjects/Semen_project/temp.py", line 314, in 
create_model(model_parameters=model_par)
File "/home/linuxpc/PycharmProjects/Semen_project/temp.py", line 224, in create_model
tf.keras.utils.plot_model(
File "/home/linuxpc/PycharmProjects/Semen_project/.venv/lib/python3.12/site-packages/keras/src/utils/model_visualization.py", line 456, in plot_model
dot.write(to_file, format=extension)
File "/home/linuxpc/PycharmProjects/Semen_project/.venv/lib/python3.12/site-packages/pydotplus/graphviz.py", line 1919, in write
fobj.write(self.create(prog, format))
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/linuxpc/PycharmProjects/Semen_project/.venv/lib/python3.12/site-packages/pydotplus/graphviz.py", line 2031, in create
raise InvocationException(
pydotplus.graphviz.InvocationException: Program terminated with status: -6. stderr follows: failed at node 716[0]
dot: maze.c:311: chkSgraph: Assertion `np->cells[0]' failed

模型构建代码

gobal_input_layer = tf.keras.layers.Input(shape=layer_size[0]['1'][0])

"""Model_1 to detect fibers"""
for lnum, layer in enumerate(layer_size[0]):
    if lnum == 0:
        for vnum, val in enumerate(layer_size[0][layer]):
            if vnum == 0:
                layer = tf.keras.layers.Identity()(gobal_input_layer)
            else:
                layer = tf.keras.layers.Dense(val[0],
                                              activation="sigmoid")(layer)
                if len(val) == 2:
                    layer = tf.keras.layers.Dropout(val[1])(layer)

            output_layer = tf.keras.layers.Dense(2,
                                                 activation="sigmoid")(layer)
            intermediate = tf.keras.layers.Reshape((2, 1), input_shape=(1, 2))(output_layer)
            first_half = tf.keras.layers.Cropping1D(cropping=(0, 1))(intermediate)
            first_half = tf.keras.layers.Reshape((1,), input_shape=(1, 1))(first_half)

            second_half = tf.keras.layers.Cropping1D(cropping=(0, 1))(intermediate)
            second_half = tf.keras.layers.Reshape((1,), input_shape=(1, 1))(second_half)
    elif lnum == 1:
        for vnum, val in enumerate(layer_size[0][layer]):
            if vnum == 0:
                layer_2 = tf.keras.layers.Concatenate()([gobal_input_layer, second_half])

                layer_2 = tf.keras.layers.Identity()(layer_2)
            else:
                layer_2 = tf.keras.layers.Dense(val[0],
                                                activation="sigmoid")(layer_2)
                if len(val) == 2:
                    layer_2 = tf.keras.layers.Dropout(val[1])(layer_2)

            output_layer_2 = tf.keras.layers.Dense(2,
                                                   activation="sigmoid")(layer_2)
    else:
        raise ValueError(f"The length of layers is than 2")

outputs = tf.keras.layers.Concatenate()([output_layer_2, output_layer])
outputs = tf.keras.layers.Identity()(outputs)
model = tf.keras.Model(inputs=gobal_input_layer,
                       outputs=outputs)
model.name = model_parameters["model_name"]
return model

已尝试的排查步骤

  • 更换pydot、pydotplus、pydot-ng(均通过pip安装)
  • 通过sudo apt install graphviz和pip install graphviz两种方式安装Graphviz
  • 更换jpg、png、pdf等输出文件格式
  • 安装相关依赖后重启系统

求助需求

推测问题可能出在图像生成/写入环节,或是模型结构无法转为dot格式,但无法定位具体原因,恳请协助解决或提供排查方向。

内容的提问来源于stack exchange,提问作者Андрей Никитёнок

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 03:44:55