This is an automated email from the ASF dual-hosted git repository.
sanirudh pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tvm.git
The following commit(s) were added to refs/heads/main by this push:
new e5bf56d1f4 [Relay][FQ2I]: Use appropriate dtype while quantizing
relay.op.nn.pad… (#17177)
e5bf56d1f4 is described below
commit e5bf56d1f4d4d46cfe4845e4f76c991be35cc332
Author: arangasa <[email protected]>
AuthorDate: Mon Jul 22 12:12:08 2024 +0530
[Relay][FQ2I]: Use appropriate dtype while quantizing relay.op.nn.pad…
(#17177)
* [Relay][FQ2I]: Use appropriate dtype while quantizing relay.op.nn.pad's
constant pad value
* Keep default axis
---
python/tvm/relay/transform/fake_quantization_to_integer.py | 2 +-
.../python/relay/test_pass_fake_quantization_to_integer.py | 14 ++++++++++++++
2 files changed, 15 insertions(+), 1 deletion(-)
diff --git a/python/tvm/relay/transform/fake_quantization_to_integer.py
b/python/tvm/relay/transform/fake_quantization_to_integer.py
index b27fc3cba7..7ad838895c 100644
--- a/python/tvm/relay/transform/fake_quantization_to_integer.py
+++ b/python/tvm/relay/transform/fake_quantization_to_integer.py
@@ -466,7 +466,7 @@ def pad(expr, type_map):
# If the pad-value is a constant, we need to quantize it
assert isinstance(pad_value, relay.expr.Constant)
assert pad_value.checked_type.dtype in ["float32", "float64",
"float16", "bfloat16"]
- pad_value = relay.qnn.op.quantize(pad_value, t.scale, t.zero_point)
+ pad_value = relay.qnn.op.quantize(pad_value, t.scale, t.zero_point,
out_dtype=t.dtype)
out = relay.op.nn.pad(arg, pad_value=pad_value, **expr.attrs)
return [out, t]
diff --git a/tests/python/relay/test_pass_fake_quantization_to_integer.py
b/tests/python/relay/test_pass_fake_quantization_to_integer.py
index 6edb3949d6..c0b61f72d1 100644
--- a/tests/python/relay/test_pass_fake_quantization_to_integer.py
+++ b/tests/python/relay/test_pass_fake_quantization_to_integer.py
@@ -814,6 +814,20 @@ def test_fake_quantize_pad():
compare_fq_to_int(op, [x_np])
+def test_fake_quantize_pad_with_float_min():
+ in_shape = [1, 383, 128]
+ x = relay.var("x", shape=in_shape, dtype="float32")
+ op = relay.qnn.quantize(x, relay.const(1.0), relay.const(0),
out_dtype="uint8")
+ op = relay.qnn.dequantize(op, relay.const(1.0), relay.const(0),
out_dtype="float32")
+ op = relay.op.nn.pad(
+ op, pad_width=[[0, 0], [0, 1], [0, 0]],
pad_value=relay.const(-3.40282e38, dtype="float32")
+ )
+ op = relay.qnn.op.quantize(op, relay.const(1.0), relay.const(0),
out_dtype="uint8")
+ x_np = np.random.randint(0, 256, size=in_shape)
+ x_as_float = x_np.astype("float32")
+ compare_fq_to_int(op, [x_as_float], True)
+
+
def test_fake_quantize_depth_to_space():
x = relay.var("x", shape=[1, 3, 224, 224], dtype="int8")