Unverified Commit 6ecfaaff by shoubhik Committed by GitHub

Adding support for TFLite QnnSub operator. (#5230)

parent 029388f5
...@@ -926,8 +926,7 @@ class OperatorConverter(object): ...@@ -926,8 +926,7 @@ class OperatorConverter(object):
"""Convert TFLite SUB""" """Convert TFLite SUB"""
# Check if the input tensor is quantized, call QNN op # Check if the input tensor is quantized, call QNN op
if self.is_quantized(op): if self.is_quantized(op):
raise tvm.error.OpNotImplemented( return self._convert_elemwise(_qnn.op.subtract, op)
'TFlite quantized SUB operator is not supported yet.')
return self._convert_elemwise(_op.subtract, op) return self._convert_elemwise(_op.subtract, op)
def convert_mul(self, op): def convert_mul(self, op):
...@@ -1355,7 +1354,9 @@ class OperatorConverter(object): ...@@ -1355,7 +1354,9 @@ class OperatorConverter(object):
if is_depthwise_conv: if is_depthwise_conv:
params['channels'] = int(in_channels) params['channels'] = int(in_channels)
params['groups'] = int(input_c) params['groups'] = int(input_c)
params['kernel_layout'] = 'HWOI' # If number of input channels is 1, treat as normal
# convolution.
params['kernel_layout'] = 'HWIO' if input_c == 1 else 'HWOI'
else: else:
params['channels'] = int(output_channels) params['channels'] = int(output_channels)
params['kernel_layout'] = 'HWIO' params['kernel_layout'] = 'HWIO'
......
...@@ -541,6 +541,8 @@ def test_forward_convolution(): ...@@ -541,6 +541,8 @@ def test_forward_convolution():
_test_convolution([4, 17, 17, 124], [1, 1, 124, 1], [1, 1], [1, 1], 'SAME', 'NHWC', True) _test_convolution([4, 17, 17, 124], [1, 1, 124, 1], [1, 1], [1, 1], 'SAME', 'NHWC', True)
_test_convolution([4, 17, 17, 12], [3, 3, 12, 1], [1, 1], [2, 2], 'VALID', 'NHWC', True) _test_convolution([4, 17, 17, 12], [3, 3, 12, 1], [1, 1], [2, 2], 'VALID', 'NHWC', True)
_test_convolution([4, 17, 17, 12], [3, 3, 12, 2], [1, 1], [2, 2], 'VALID', 'NHWC', True) _test_convolution([4, 17, 17, 12], [3, 3, 12, 2], [1, 1], [2, 2], 'VALID', 'NHWC', True)
# dephtwise convolution with single input channel
_test_convolution([1, 76, 64, 1], [9, 5, 1, 96], [1, 1], [1, 1], 'SAME', 'NHWC', True)
####################################################################### #######################################################################
...@@ -902,9 +904,9 @@ def _test_add(data, fused_activation_function=None, quantized=False, qnn_op=None ...@@ -902,9 +904,9 @@ def _test_add(data, fused_activation_function=None, quantized=False, qnn_op=None
# Subtract # Subtract
# -------- # --------
def _test_sub(data, fused_activation_function=None): def _test_sub(data, fused_activation_function=None, quantized=False, qnn_op=None):
""" One iteration of subtract """ """ One iteration of subtract """
return _test_elemwise(math_ops.subtract, data, fused_activation_function) return _test_elemwise(math_ops.subtract, data, fused_activation_function, quantized, qnn_op)
####################################################################### #######################################################################
# Mul # Mul
# --- # ---
...@@ -1036,6 +1038,7 @@ def test_all_elemwise(): ...@@ -1036,6 +1038,7 @@ def test_all_elemwise():
_test_forward_elemwise(partial(_test_add, fused_activation_function="RELU")) _test_forward_elemwise(partial(_test_add, fused_activation_function="RELU"))
_test_forward_elemwise(partial(_test_add, fused_activation_function="RELU6")) _test_forward_elemwise(partial(_test_add, fused_activation_function="RELU6"))
_test_forward_elemwise(_test_sub) _test_forward_elemwise(_test_sub)
_test_forward_elemwise_quantized(_test_sub)
_test_forward_elemwise(partial(_test_sub, fused_activation_function="RELU")) _test_forward_elemwise(partial(_test_sub, fused_activation_function="RELU"))
_test_forward_elemwise(partial(_test_sub, fused_activation_function="RELU6")) _test_forward_elemwise(partial(_test_sub, fused_activation_function="RELU6"))
_test_forward_elemwise(_test_mul) _test_forward_elemwise(_test_mul)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment