首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Vitis-AI编译模型时出错:数据值超出范围

使用Vitis-AI编译模型时出错:数据值超出范围
EN

Stack Overflow用户
提问于 2020-09-16 02:51:10
回答 2查看 292关注 0票数 0

我正在构建一个简单的自定义Keras模型,如下所示:

代码语言:javascript
复制
model = Sequential()
model.add(Conv2D(16, (16, 1), activation='relu', input_shape=(300,2,1) ))   
model.add(Dropout(0.1))

model.add(Conv2D(32, (16, 1), activation='relu'))                               
model.add(Dropout(0.2))

model.add(Flatten())

model.add(Dense(32, activation='relu'))
model.add(Dropout(0.5))

model.add(Dense(3, activation='softmax'))

Keras模型需要使用Xilinx的Vitis-AI编译,才能在FPGA上运行。我们正在遵循Xilinx's Vitis AI tutorials概述的步骤来编译模型。

然而,我们在编译阶段遇到了以下错误:

代码语言:javascript
复制
[VAI_C-BACKEND][Check Failed: (kernel_h - stride_h) <= 3 * pixel_parallel * stride_h][/home/xbuild/conda-bld/dnnc_1592904456005/work/submodules/asicv2com/src/Operator/OperatorConv.cpp:53][DATA_OUTRANGE][Data value is out of range!]

你知道这条错误消息是什么意思吗?甚至,我们如何获得更多的调试信息?

我们之前已经在python环境中使用这个模型成功地训练和运行了推理。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-06-30 08:05:50

对于VITIS AI,CNN模型的输入需要是正方形。上面问题中提出的模型没有任何不正确或不受支持的地方。

如果输入图像不是方形的,编译步骤将失败,如下所示:

代码语言:javascript
复制
[VAI_C-BACKEND][Check Failed: (kernel_h - stride_h) <= 3 * pixel_parallel * stride_h][/home/xbuild/conda-bld/dnnc_1592904456005/work/submodules/asicv2com/src/Operator/OperatorConv.cpp:53][DATA_OUTRANGE][Data value is out of range!]

如果输入不是正方形,则必须对其进行填充才能形成正方形。

代码语言:javascript
复制
padding = int(input_shape[0] - input_shape[1])
model.add(Conv2D(16, (16, 1), activation='relu', input_shape=(300,2+padding,1) )) 

我希望这个答案对某些人有帮助。

票数 0
EN

Stack Overflow用户

发布于 2021-04-27 16:28:59

Vitis AI手册提到:“目前,vai_c_tensorflow2只支持Keras函数式API。后续版本将支持顺序API。”手册v1-3,第86页

所以,如果你使用的是tf2,首先要把你的模型重写成函数格式。functional api

如果错误仍然存在,还要查看您正在使用的层,如果它们都是受支持的,则tf1和tf2之间受支持的层之间存在差异。

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

https://stackoverflow.com/questions/63908163

复制
相关文章

相似问题

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