我正在尝试使用 plot_model 函数和 TensorFlow 绘制我的模型并将其保存到 Ubuntu 22.04 上的文件中。Pycharm 2024.1.3。python 3.12。Tensorflow 2.16.1。我假设 Pydotplus 和 Graphviz 是
我正在尝试使用 TensorFlow 中的 plot_model 函数来绘制我的模型并将其保存到 Ubuntu 22.04 上的文件中。Pycharm 2024.1.3。python 3.12。Tensorflow 2.16.1。我假设 Pydotplus 和 Graphviz 已正确安装,或者我遗漏了某些内容。文件已创建,但已损坏(0 字节)并且无法打开。
脚本以错误结尾:回溯(最近一次调用最后一次):文件 \'/home/linuxpc/PycharmProjects/Semen_project/temp.py\',第 314 行,在 create_model(model_parameters=model_par)文件 \'/home/linuxpc/PycharmProjects/Semen_project/temp.py\',第 224 行,在 create_modeltf.keras.utils.plot_model(文件 \'/home/linuxpc/PycharmProjects/Semen_project/.venv/lib/python3.12/site-packages/keras/src/utils/model_visualization.py\',第 456 行,在 plot_modeldot.write(to_file,format=extension)文件\'/home/linuxpc/PycharmProjects/Semen_project/.venv/lib/python3.12/site-packages/pydotplus/graphviz.py\',第 1919 行,在 writefobj.write(self.create(prog, format))^^^^^^^^^^^^^^^^^^^^^^^^^^^File \'/home/linuxpc/PycharmProjects/Semen_project/.venv/lib/python3.12/site-packages/pydotplus/graphviz.py\',第 2031 行,在 createraise InvocationException(pydotplus.graphviz.InvocationException: 程序终止,状态为:-6。stderr 如下:在节点 716[0]dot 处失败:maze.c:311:chkSgraph:断言`np->cells[0]'失败
脚本的模型创建部分: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 安装)——结果是一样的。Graphviz 可以通过 \'sudo apt install graphviz\' 或 \'pip install graphviz\' 安装。文件的扩展名无关紧要——我尝试过 jpg、png、pdf。安装 graphviz 后,PC 已重新启动。
Traceback 错误的最后一行没有给我任何信息,我陷入了困境。我发现 dot 出了问题,它生成了状态 [-6],但我不知道是什么问题。我猜是生成图像或/和将其写入文件时出了问题(因为崩溃后文件为空)。另一个想法是一个或多个层或模型本身无法转换为 dot。
有人能帮助我解决这个问题吗?或者建议我至少应该从哪里开始深入研究?我将不胜感激任何人提供的帮助。
``` $ docker network inspect labnet [ { \'名称\':\'labnet\',\'ID\':\'049943c94ec4cbd3dd0c5dfcfbe58abfc47f924324653dc3cefd144b432668a6\',\'创建时间\':\'2024-06-16T22:59:00.141860014 + 01:00\',\'范围\':\'本地\',\'驱动程序\':\'桥接\',\'启用IPv6\':false,\'IPAM\':{\'驱动程序\':\'默认\',\'选项\':{},\'配置\':[{\'子网\': \'192.168.0.0/16\', \'网关\':\'192.168.0.1\'}```