From 72e09fdaffa4a9229d29e3ec3df03233e63bcc46 Mon Sep 17 00:00:00 2001 From: Johan Gunnarsson Date: Mon, 28 Apr 2025 10:30:57 +0200 Subject: [PATCH] MLBEDSW-10594: Fix OFM quantization for decomped DepthwiseConv2D When DepthwiseConv2D has depth multiplier >1, it's decomposed into one op per depthwise multiplier. Weights and biases are sliced as expected, but the per-channel OFM quantization also must be sliced. Signed-off-by: Johan Gunnarsson Change-Id: Ie7134987de9bb77dad99eb2322a2c8615e3e5471 --- ethosu/regor/compiler/scheduler_decompose.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/ethosu/regor/compiler/scheduler_decompose.cpp b/ethosu/regor/compiler/scheduler_decompose.cpp index 0b5ba748..ada19051 100644 --- a/ethosu/regor/compiler/scheduler_decompose.cpp +++ b/ethosu/regor/compiler/scheduler_decompose.cpp @@ -1093,6 +1093,7 @@ std::vector> DecomposeDepthwiseConv2D(Archit subOfmConn->shape = transposedOfm->storageShape; subOfmConn->slice.offset = ofmShape.WithZeros().WithBatch(multiplier); subOfmConn->slice.shape = ofmShape.WithDepth(subOfmDepth); + subOfmConn->quantization = SliceQ(subOfmConn->quantization, multiplier, depthMultiplier); auto subOps = DecomposeDepthwiseConv2D(arch, std::move(subOp)); result.insert(result.end(), std::make_move_iterator(subOps.begin()), std::make_move_iterator(subOps.end())); } -- GitLab