首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Vitis AI中编译神经网络时出错,“在super_const_dict中找不到op :名称:解码器_节_1_UpConv_1/内核”

在Vitis AI中编译神经网络时出错,“在super_const_dict中找不到op :名称:解码器_节_1_UpConv_1/内核”
EN

Data Science用户
提问于 2021-10-15 11:00:34
回答 1查看 179关注 0票数 0

我正在跟踪一个关于在片上系统(ARM处理器+ Xilinx )中实现神经网络的Xilinx教程,并且在编译步骤中出现了一个错误。

我在Matlab2020b中训练了一个U-Net,并通过onnx2keras导出到Keras,并遵循本教程的步骤,没有任何错误:

  • 验证在Matlab和Vitis AI (正确出口)中获得相同的测试成绩。
  • 将Keras模型转化为TF检查点和推理图。
  • 冻结TF图。
  • 量化从32位浮点到8位定点.
  • 运行编译器(解析原始模型时出错)。

完整的错误消息是:

代码语言:javascript
运行
复制
 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):

  • 康斯特78 -> 52
  • 身份28 -> 26
  • BiasAdd 13 -> 13
  • LeakyRelu 12 -->
  • 雷鲁--> 11
  • Conv2D 11 -> 11
  • 垫10 ->
  • AddV2 8 -->
  • 分8->
  • StridedSlice 6->6
  • Mul 4->4
  • ConcatV2 2->2
  • Conv2DBackpropInput 2->2
  • MaxPool 2->2
  • 包2->2
  • 形状2->2
  • 占位符1->1

由于这两个U网是原冻结过程的两个不同的修改版本,所以这两个冻结过程是有区别的。然而,在我看来,我并不认为LeakyRelu、Pad、AddV2或Sub (出现在我的模型而不是本教程的模型中)与错误有关。

同样,量化后,这些是不同的。使用的Op类型(我的U-Net ->教程U-Net):

  • 康斯特78 -> 52
  • FixNeuron 48 -> 44
  • BiasAdd 13 -> 13
  • LeakyRelu 12 --> --
  • 雷鲁--> 11
  • Convd2D 11 -> 11
  • 垫10 -> --
  • AddV2 8 --> --
  • 分8->
  • StridedSlice 6->6
  • Mul 4->4
  • ConcatV2 2->2
  • Conv2DBackpropInput 2->2
  • MaxPool 2->2
  • 包2->2
  • 形状2->2
  • 占位符1->1

我不知道这个错误到底是从哪里来的,所以任何帮助都是非常感谢的。

EN

回答 1

Data Science用户

发布于 2021-10-18 13:48:20

该错误似乎与Vitis AI无关,是由于导出过程中的错误Matlab造成的。我在Vitis AI中创建了一个神经网络的裸露副本,在Matlab中进行了训练,并从其中复制了权重和偏差。编译错误现在消失了。

票数 1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/103164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档