[STM32N6 / [Neural-ART] Compiler crash on 1D CNN with MaxPooling1D - orlando_pool_acc_v2.cc:88 pool_get_batch_size: Assertion 'i != 0' failed
- June 19, 2026
- 1 reply
- 23 views
Hello,
The Neural-ART compiler (atonn) crashes with an internal assertion when I run `analyze` on a quantized 1D CNN. The crash happens on the pooling unit and I cannot get past it.
Environment
- ST Edge AI Core v2.2.0-20266 (X-CUBE-AI 10.2.0), Windows, via STM32CubeMX
- Target: stm32n6
- Also reproduced on ST Edge AI Developer Cloud with ST Edge AI Core v4.0.1-20581 -> same assertion, so this does not look version-specific.
Model
Keras model exported to TFLite, full int8 quantization (int8 input and output, per-channel), batch size fixed to 1.
Architecture (1D CNN for signal classification):
Input [1, 3000, 1]
3x { Conv1D -> BatchNormalization -> ReLU -> Dropout -> MaxPooling1D(pool=2, stride=2) }
conv filters = 128 (k=30), 32 (k=20), 4 (k=10), padding 'same'
Flatten -> Dense(512) -> BN -> Dense(128) -> Dense(32) -> Dense(4, softmax)
Input tensor quantization has a non-zero zero-point (scale ~0.0366, zp -2).
When converted, TFLite lowers the model to CONV_2D (x3) + MAX_POOL_2D (x3) + RESHAPE (x2) + FULLY_CONNECTED (x4) + SOFTMAX.
Command
stedgeai analyze --target stm32n6 --name network -m model_int8_fixedBS_V2.tflite --st-neural-art n6-allmems-O3@user_neuralart.json
Error
>>>> EXECUTING NEURAL ART COMPILER
Warning: Oauto did not find valid compile options: aborting
Configuration 0: alt-scheduler(false):
orlando_pool_acc_v2.cc:88 pool_get_batch_size: Assertion 'i != 0' failed.
Configuration 1: alt-scheduler(true):
orlando_pool_acc_v2.cc:88 pool_get_batch_size: Assertion 'i != 0' failed.
E103(CliRuntimeError): Error calling the Neural Art compiler
Already tried (no effect)
- Fixed input batch size to 1 (input [1, 3000, 1])
- Full int8 calibration with a real representative dataset
- --use-onnx-simplifier
- Optimization profiles O1 and O3
- ST Edge AI Developer Cloud with Core v4.0.1 (same crash)
Questions
- Is MaxPooling1D (i.e. pooling on a 1D CNN, which becomes MAX_POOL_2D over a tensor with a size-1 spatial dimension) supported on Neural-ART? The assertion seems to come from the pooling unit failing to compute a batch/row size.
- Is this a known compiler bug, and is there a workaround that does not require changing the architecture? (e.g. forcing the pooling layers to run on the Cortex-M55 / SW fallback)
- If a 1D pooling layout is the issue, what is the recommended pattern for 1D signal CNNs on Neural-ART?
I can share the .tflite model (and the original .keras) in a zip if that helps the dev team reproduce. Thanks for your help.
