使用plumber生成SG失败,一直报错



  • 使用plumber生成SG失败
    Traceback (most recent call last):
    File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/importer.py", line 418, in import_graph_def
    graph._c_graph, serialized, options) # pylint: disable=protected-access
    tensorflow.python.framework.errors_impl.InvalidArgumentError: NodeDef mentions attr 'data_format' not in Op<name=Placeholder; signature= -> output:dtype; attr=dtype:type; attr=shape:shape,default=<unknown>>; NodeDef: {{node placeholder_0}} = Placeholderdata_format="NCHW", dtype=DT_FLOAT, shape=[1,3,300,300]. (Check whether your GraphDef-interpreting binary is up to date with your GraphDef-generating binary.).

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File "/usr/local/bin/plumber_cli", line 11, in <module>
    sys.exit(cli())
    File "/usr/local/lib/python3.5/dist-packages/click/core.py", line 722, in call
    return self.main(*args, **kwargs)
    File "/usr/local/lib/python3.5/dist-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
    File "/usr/local/lib/python3.5/dist-packages/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
    File "/usr/local/lib/python3.5/dist-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
    File "/usr/local/lib/python3.5/dist-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
    File "/usr/local/lib/python3.5/dist-packages/click/decorators.py", line 17, in new_func
    return f(get_current_context(), *args, **kwargs)
    File "/usr/local/lib/python3.5/dist-packages/plumber_cli.py", line 337, in sg
    custom_layer_config=custom_layer_config)
    File "/usr/local/lib/python3.5/dist-packages/plumber_cli.py", line 142, in sg_func
    custom_layer_config=custom_layer_config)
    File "plumber/utils.py", line 103, in plumber.utils.gen_sg
    File "plumber/frontend/tf/frontend.py", line 107, in plumber.frontend.tf.frontend.TensorFlowFrontEnd.load
    File "plumber/frontend/tf/frontend.py", line 134, in plumber.frontend.tf.frontend.TensorFlowFrontEnd.rewrite_graph
    File "plumber/frontend/tf/graph_rewriter.py", line 374, in plumber.frontend.tf.graph_rewriter.rewrite_graph_with_placeholder
    File "plumber/frontend/tf/graph_rewriter.py", line 335, in plumber.frontend.tf.graph_rewriter._replace_input_subgraph_by_placeholder
    File "plumber/frontend/tf/graph_rewriter.py", line 336, in plumber.frontend.tf.graph_rewriter._replace_input_subgraph_by_placeholder
    File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/util/deprecation.py", line 488, in new_func
    return func(*args, **kwargs)
    File "/usr/local/lib/python3.5/dist-packages/tensorflow/python/framework/importer.py", line 422, in import_graph_def
    raise ValueError(str(e))
    ValueError: NodeDef mentions attr 'data_format' not in Op<name=Placeholder; signature= -> output:dtype; attr=dtype:type; attr=shape:shape,default=<unknown>>; NodeDef: {{node placeholder_0}} = Placeholderdata_format="NCHW", dtype=DT_FLOAT, shape=[1,3,300,300]. (Check whether your GraphDef-interpreting binary is up to date with your GraphDef-generating binary.).
    如何解决?用了好多不同的模型都这样



  • Hi @张文,我在plumber和plumber_env_cpu_16bit两个docker里面都使用了tutorial 2的checkpoint文件来生成SG,并没有出现您所遇到的问题。我已经将我们支持人员的联系方式发到了您的邮箱,麻烦您看一下,这样交流起来会更高效一些



  • @张文 您是在使用plumber_env_cpu_16bit里面/app路径下的inference_model的模型吗



  • @张文 了解了,我复现一下~



  • @Corerain 是tutorial2的,人脸识别,拿来训练了一下,发现不能生成sg。但是这个例子提供了训练好的checkpoint文件,那个是可以的。麻烦能核实一下吗?



  • Hi @张文,例子中的模型是不会出现无法生成SG的问题的,请问您所使用的例子是tutorial4中的例子吗, 还是板卡上或者其他的地方的?



  • @Corerain 你好,我想问一下问什么你们的例子训练的模型生成sg也出现相同的问题(Check whether your GraphDef-interpreting binary is up to date with your GraphDef-generating binary)。例子也需要改才能用吗?



  • @张文 这个是没有关系的,只需要保证docker里的tensorflow和开发算法的tensorflow版本一致就可以



  • @Corerain 请问训练是用gpu,模型在cpu的docker中去编译,这个没有关系吗?还是说必须要用gpu的docker呢?



  • @张文 是的,我们是在16bit的docker中复现的



  • @Corerain 请问您是在plumber_env_cpu_16bit下复现的吗?



  • Hi @张文,我们周末的时候复现了一下,发现确实存在无法生成SG的问题,我们的研发工程师检查了一下,发现目前存在几点问题,这些问题如下;

    1. 您的网络的输入节点需要修改成placeholder的形式
    2. 我们目前的架构暂时不支持空洞卷积和 l2_normalize的API调用,而这些API在SSD_300_VGG模型中被使用,因此无法生成SG


  • @Corerain said in 使用plumber生成SG失败,一直报错:

    community@corerain.com 已经邮箱发给你了,谢谢。



  • @张文 如果可以的话请问能不能把checkpoint文件发我一下,我在这尝试一下复现,这是我们的邮箱community@corerain.com



  • @Corerain 我训练模型的tensorflow是1.12,和docker里的tensorflow版本是一致的。但是我的模型是gpu训练的,而做模型sg转化是在plumber_env_cpu_16bit做的,会不会是这个问题,gpu训练的模型一定要在gpu用户下的plumber里做处理呢?



  • @张文 我们在github上面看到了类似于你这个问题的报错,这个是tensorflow的问题,你可以尝试将训练模型的tensorflow升级到1.12.0,然后在docker中用pip install tensorflow==1.12.0将docker中的tensorflow升级到匹配版本,然后再试一下。
    因为我们例子中的checkpoint文件就是通过例子中的ssd生成的,所以应该不是plumber而是tensorflow的问题。



  • @Corerain tensorflow版本是一致的,还可能是什么原因呢?



  • @张文 您训练的时候使用的tensorflow版本是什么?还有就是您可以进入docker,然后用pip list查看docker中plumber支持的tensorflow版本,需要这两者匹配才行。其次,目前我们的硬件架构暂时还不支持其他的模型,本月完成架构升级之后就提供对其他模型的支持了。



  • 我用tutorial的ssd代码训练的模型也出现同样问题,但是tutorial给的checkpoint是可以通过的



  • ssd_300_vgg训练的模型,例子的模型没问题,就是自己训练的不行