I have a very simple CNN in TensorFlow and the padding strategy is 'same'. When it is converted to the CNN with io_tyoe = 'io_stream', one of the pad_bottom and pad_right are equal to 1. Then there would be a problem caused by this assert operation in nnet_pooling_stream.h.-> assert(CONFIG_T::pad_top == 0 && CONFIG_T::pad_bottom == 0 && CONFIG_T::pad_left == 0 && CONFIG_T::pad_right == 0);
the ERROR is: "_python3: firmware/nnet_utils/nnet_pooling_stream.h:227: void nnet::pooling2d_buffer_cl(hls::stream&, hls::stream&) [with data_T = nnet::array<ap_fixed<40, 20, AP_RND, AP_SAT>, 16>; res_T = nnet::array<ap_fixed<40, 20>, 16>; CONFIG_T = config4]: Assertion `CONFIG_T::pad_top == 0 && CONFIG_T::pad_bottom == 0 && CONFIG_T::pad_left == 0 && CONFIG_T::padright == 0' failed.
Aborted (core dumped)
"
So my question is does hls4ml(v0.6.0) not support the padding strategy is 'same' for io_tyoe = 'io_stream' case?
I have a very simple CNN in TensorFlow and the padding strategy is 'same'. When it is converted to the CNN with io_tyoe = 'io_stream', one of the pad_bottom and pad_right are equal to 1. Then there would be a problem caused by this assert operation in nnet_pooling_stream.h. -> assert(CONFIG_T::pad_top == 0 && CONFIG_T::pad_bottom == 0 && CONFIG_T::pad_left == 0 && CONFIG_T::pad_right == 0);
the ERROR is: "_python3: firmware/nnet_utils/nnet_pooling_stream.h:227: void nnet::pooling2d_buffer_cl(hls::stream&, hls::stream&) [with data_T = nnet::array<ap_fixed<40, 20, AP_RND, AP_SAT>, 16>; res_T = nnet::array<ap_fixed<40, 20>, 16>; CONFIG_T = config4]: Assertion `CONFIG_T::pad_top == 0 && CONFIG_T::pad_bottom == 0 && CONFIG_T::pad_left == 0 && CONFIG_T::padright == 0' failed.
Aborted (core dumped)
"
So my question is does hls4ml(v0.6.0) not support the padding strategy is 'same' for io_tyoe = 'io_stream' case?
1. generated config information by hls4ml
2. CNN Code