我正在构建一个简单的自定义Keras模型,如下所示:
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概述的步骤来编译模型。
然而,我们在编译阶段遇到了以下错误:
[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环境中使用这个模型成功地训练和运行了推理。
发布于 2021-06-30 08:05:50
对于VITIS AI,CNN模型的输入需要是正方形。上面问题中提出的模型没有任何不正确或不受支持的地方。
如果输入图像不是方形的,编译步骤将失败,如下所示:
[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!]如果输入不是正方形,则必须对其进行填充才能形成正方形。
padding = int(input_shape[0] - input_shape[1])
model.add(Conv2D(16, (16, 1), activation='relu', input_shape=(300,2+padding,1) )) 我希望这个答案对某些人有帮助。
发布于 2021-04-27 16:28:59
Vitis AI手册提到:“目前,vai_c_tensorflow2只支持Keras函数式API。后续版本将支持顺序API。”手册v1-3,第86页
所以,如果你使用的是tf2,首先要把你的模型重写成函数格式。functional api
如果错误仍然存在,还要查看您正在使用的层,如果它们都是受支持的,则tf1和tf2之间受支持的层之间存在差异。
https://stackoverflow.com/questions/63908163
复制相似问题