From d3ccbc25a9b17c1602911457599f20af0e76872a Mon Sep 17 00:00:00 2001 From: Xu Xing <xing.xu@intel.com> Date: Wed, 20 Dec 2023 20:18:50 +0800 Subject: [PATCH] [js/webgpu] Fix activation_params in FusedConv Bug: https://github.com/microsoft/onnxruntime/issues/18899 --- js/web/test/data/ops/fused-conv.jsonc | 68 +++++++++++++++++++ .../core/providers/js/operators/conv.h | 4 +- 2 files changed, 71 insertions(+), 1 deletion(-) diff --git a/js/web/test/data/ops/fused-conv.jsonc b/js/web/test/data/ops/fused-conv.jsonc index 812e9d7c2def0..4a61803dc89b3 100644 --- a/js/web/test/data/ops/fused-conv.jsonc +++ b/js/web/test/data/ops/fused-conv.jsonc @@ -108,5 +108,73 @@ ] } ] + }, + { + "name": "fused conv with clip", + "operator": "FusedConv", + "attributes": [ + { "name": "activation", "data": "Clip", "type": "string" }, + { "name": "kernel_shape", "data": [2, 2], "type": "ints" }, + { "name": "activation_params", "data": [0.0, 600.0], "type": "floats" } + ], + "opset": { "domain": "com.microsoft", "version": 1 }, + "cases": [ + { + "name": "T[0]", + "inputs": [ + { + "data": [10, 20, 30, 40, 50, 60, 70, 80, 90], + "dims": [1, 1, 3, 3], + "type": "float32" + }, + { + "data": [1, 2, 3, 4], + "dims": [1, 1, 2, 2], + "type": "float32" + } + ], + "outputs": [ + { + "data": [370, 470, 600, 600], + "dims": [1, 1, 2, 2], + "type": "float32" + } + ] + } + ] + }, + { + "name": "fused conv with clip", + "operator": "FusedConv", + "attributes": [ + { "name": "activation", "data": "Clip", "type": "string" }, + { "name": "kernel_shape", "data": [2, 2], "type": "ints" }, + { "name": "activation_params", "data": [0.0, 400.0], "type": "floats" } + ], + "opset": { "domain": "com.microsoft", "version": 1 }, + "cases": [ + { + "name": "T[0]", + "inputs": [ + { + "data": [10, 20, 30, 40, 50, 60, 70, 80, 90], + "dims": [1, 1, 3, 3], + "type": "float32" + }, + { + "data": [1, 2, 3, 4], + "dims": [1, 1, 2, 2], + "type": "float32" + } + ], + "outputs": [ + { + "data": [370, 400, 400, 400], + "dims": [1, 1, 2, 2], + "type": "float32" + } + ] + } + ] } ] diff --git a/onnxruntime/core/providers/js/operators/conv.h b/onnxruntime/core/providers/js/operators/conv.h index 8f438a319f138..7825fe2de0fcc 100644 --- a/onnxruntime/core/providers/js/operators/conv.h +++ b/onnxruntime/core/providers/js/operators/conv.h @@ -30,7 +30,9 @@ class ConvBase : public JsKernel { } if (is_fused_conv) { ORT_THROW_IF_ERROR(info.GetAttr<std::string>("activation", &conv_attrs_.activation)); - ORT_THROW_IF_ERROR(info.GetAttrs<float>("activation_params", activation_params)); + if (conv_attrs_.activation == "Clip") { + ORT_THROW_IF_ERROR(info.GetAttrs<float>("activation_params", activation_params)); + } } else { conv_attrs_.activation = info.GetAttrOrDefault<std::string>("activation", ""); activation_params = info.GetAttrsOrDefault<float>("activation_params", activation_params);