我正在跟踪一个关于在片上系统(ARM处理器+ Xilinx )中实现神经网络的Xilinx教程,并且在编译步骤中出现了一个错误。
我在Matlab2020b中训练了一个U-Net,并通过onnx2keras导出到Keras,并遵循本教程的步骤,没有任何错误:
完整的错误消息是:
Traceback (most recent call last):
File "/opt/vitis_ai/conda/envs/vitis-ai-tensorflow/bin/xnnc-run", line 33, in module
sys.exit(load_entry_point('xnnc==1.4.0', 'console_scripts', 'xnnc-run')())
File "/opt/vitis_ai/conda/envs/vitis-ai-tensorflow/lib/python3.6/site-packages/xnnc/__main__.py", line 49, in main
runner.normal_run(args)
File "/opt/vitis_ai/conda/envs/vitis-ai-tensorflow/lib/python3.6/site-packages/xnnc/runner.py", line 123, in normal_run
target=target,
File "/opt/vitis_ai/conda/envs/vitis-ai-tensorflow/lib/python3.6/site-packages/xnnc/xconverter.py", line 145, in run
model_files, model_type, _layout, in_shapes, batchsize
File "/opt/vitis_ai/conda/envs/vitis-ai-tensorflow/lib/python3.6/site-packages/xnnc/core.py", line 123, in make_xmodel
model_type=model_t,
File "/opt/vitis_ai/conda/envs/vitis-ai-tensorflow/lib/python3.6/site-packages/xnnc/translator/tensorflow_translator.py", line 107, in to_xmodel
model_type,
File "/opt/vitis_ai/conda/envs/vitis-ai-tensorflow/lib/python3.6/site-packages/xnnc/translator/tensorflow_translator.py", line 173, in create_xmodel
name, layers, layout, in_shapes, batchsize
File "/opt/vitis_ai/conda/envs/vitis-ai-tensorflow/lib/python3.6/site-packages/xnnc/translator/tensorflow_translator.py", line 289, in __create_xmodel_from_tf1
batchsize,
File "/opt/vitis_ai/conda/envs/vitis-ai-tensorflow/lib/python3.6/site-packages/xnnc/translator/tensorflow_translator.py", line 3192, in __generate_xmodel
), f"[ERROR] Not found op in super_const_dict: name: {weights_id}"
AssertionError: [ERROR] Not found op in super_const_dict: name: Decoder_Section_1_UpConv_1/kernel
起初,我认为编译器可能不支持某些层,比如Conv2DTransposed (一种重采样图像的方式),但是尽管文档中说Tensorflow版本需要高于2.0,而且我使用的是1.15.2,但本教程包含一个由这些层组成的U-Net,而且我编译它时没有任何问题,所以,我认为这不是问题所在。
然后,我决定比较冻结后和量化后的两个神经网络,以便找出我的U-网络中可能缺少的一些信息,其中包括另一个。
冷冻后的检查结果。使用的Op类型(我的U-Net ->教程U-Net):
由于这两个U网是原冻结过程的两个不同的修改版本,所以这两个冻结过程是有区别的。然而,在我看来,我并不认为LeakyRelu、Pad、AddV2或Sub (出现在我的模型而不是本教程的模型中)与错误有关。
同样,量化后,这些是不同的。使用的Op类型(我的U-Net ->教程U-Net):
我不知道这个错误到底是从哪里来的,所以任何帮助都是非常感谢的。
发布于 2021-10-18 13:48:20
该错误似乎与Vitis AI无关,是由于导出过程中的错误Matlab造成的。我在Vitis AI中创建了一个神经网络的裸露副本,在Matlab中进行了训练,并从其中复制了权重和偏差。编译错误现在消失了。
https://datascience.stackexchange.com/questions/103164
复制相似问题