From c8b7b713f48c34998bc2e21f96eb2e227213d1ca Mon Sep 17 00:00:00 2001 From: srinidhigoud Date: Thu, 15 Jul 2021 18:56:59 +0000 Subject: [PATCH 1/4] fix for strided_slice when begin > end in case of shrinkaxis_mask --- python/tvm/relay/frontend/tensorflow_ops.py | 3 +-- python/tvm/relay/op/contrib/tensorrt.py | 3 +++ tests/python/frontend/tensorflow/test_forward.py | 2 ++ 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/python/tvm/relay/frontend/tensorflow_ops.py b/python/tvm/relay/frontend/tensorflow_ops.py index 797ff51ace7a..628144eed5c4 100644 --- a/python/tvm/relay/frontend/tensorflow_ops.py +++ b/python/tvm/relay/frontend/tensorflow_ops.py @@ -2244,7 +2244,7 @@ def _transform_mask(stride_dim, ellipsis_mask): if begin[index] < 0 else begin[index] ) - m_end[final_index] = begin[index] + 1 + m_end[final_index] = m_begin[final_index] + 1 m_stride[final_index] = 1 fshape_indices.append(-2) else: @@ -2290,7 +2290,6 @@ def _transform_mask(stride_dim, ellipsis_mask): return _impl - def _pad(name): def _impl(inputs, attr, params, mod): try: diff --git a/python/tvm/relay/op/contrib/tensorrt.py b/python/tvm/relay/op/contrib/tensorrt.py index cbe6a22f4a4d..5caae1cc8f58 100644 --- a/python/tvm/relay/op/contrib/tensorrt.py +++ b/python/tvm/relay/op/contrib/tensorrt.py @@ -717,6 +717,9 @@ def pad_annotate_fn(expr): # pylint: disable=unused-variable """Check if nn.pad is supported by TensorRT.""" attrs, args = expr.attrs, expr.args + if len(attrs.pad_width) != 4 or len(attrs.pad_width) != 5: + logger.info("nn.pad: can only pad 4D or 5D inputs.") + return False if any([x.checked_type.dtype != "float32" for x in args]): logger.info("Only float32 inputs are supported for TensorRT.") return False diff --git a/tests/python/frontend/tensorflow/test_forward.py b/tests/python/frontend/tensorflow/test_forward.py index 583014f657ad..9bbb6ca9364e 100644 --- a/tests/python/frontend/tensorflow/test_forward.py +++ b/tests/python/frontend/tensorflow/test_forward.py @@ -2553,7 +2553,9 @@ def test_forward_stridedslice(): _test_stridedslice([], [0], [0], [1], "float32", new_axis_mask=1) _test_stridedslice([2], [1], [1], [1], "float32", shrink_axis_mask=1) + _test_stridedslice([4], [-1], [0], [1], "float32", shrink_axis_mask=1) _test_stridedslice([2, 1], [0], [1], [1], "float32", shrink_axis_mask=1) + _test_stridedslice([2, 3, 4], [-2], [0], [1], "float32", shrink_axis_mask=8) _test_stridedslice([2, 3, 4], [0], [1], [1], "float32", shrink_axis_mask=8) _test_stridedslice([3, 4, 3], [1, -1, 0], [4, -5, 3], [2, -1, 1], "float32") _test_stridedslice([3, 4, 3], [1, 0], [4, 3], [2, 1], "float32", ellipsis_mask=8) From 42bb37b6ef66633fc6472d355439eca059c024e3 Mon Sep 17 00:00:00 2001 From: srinidhigoud Date: Thu, 15 Jul 2021 18:59:49 +0000 Subject: [PATCH 2/4] fix for name_hint missing error for concat_v2 op --- python/tvm/relay/frontend/tensorflow_ops.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/python/tvm/relay/frontend/tensorflow_ops.py b/python/tvm/relay/frontend/tensorflow_ops.py index 628144eed5c4..ba0fcca0197d 100644 --- a/python/tvm/relay/frontend/tensorflow_ops.py +++ b/python/tvm/relay/frontend/tensorflow_ops.py @@ -1483,7 +1483,13 @@ def _impl(inputs, attr, params, mod): def _concatV2(): def _impl(inputs, attr, params, mod): pop_node = inputs.pop(len(inputs) - 1) - axis = int(_get_num_param(params, pop_node)) + try: + axis = int(_get_num_param(params, pop_node)) + except (IndexError, KeyError, AttributeError): + try: + axis = int(_infer_value(pop_node, params, mod).numpy()) + except Exception: + axis = int(pop_node) return AttrCvt(op_name="concatenate", ignores=["T", "N", "Tidx"], extras={"axis": axis})( [inputs], attr ) @@ -2290,6 +2296,7 @@ def _transform_mask(stride_dim, ellipsis_mask): return _impl + def _pad(name): def _impl(inputs, attr, params, mod): try: From 6012605d33c3e3f4a016a29005f81db4990e730c Mon Sep 17 00:00:00 2001 From: srinidhigoud Date: Thu, 15 Jul 2021 20:05:50 +0000 Subject: [PATCH 3/4] removing a local fix --- python/tvm/relay/op/contrib/tensorrt.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/python/tvm/relay/op/contrib/tensorrt.py b/python/tvm/relay/op/contrib/tensorrt.py index 5caae1cc8f58..cbe6a22f4a4d 100644 --- a/python/tvm/relay/op/contrib/tensorrt.py +++ b/python/tvm/relay/op/contrib/tensorrt.py @@ -717,9 +717,6 @@ def pad_annotate_fn(expr): # pylint: disable=unused-variable """Check if nn.pad is supported by TensorRT.""" attrs, args = expr.attrs, expr.args - if len(attrs.pad_width) != 4 or len(attrs.pad_width) != 5: - logger.info("nn.pad: can only pad 4D or 5D inputs.") - return False if any([x.checked_type.dtype != "float32" for x in args]): logger.info("Only float32 inputs are supported for TensorRT.") return False From 22b26ac62ac35142623fe996d033b192c5037593 Mon Sep 17 00:00:00 2001 From: srinidhigoud Date: Fri, 16 Jul 2021 20:52:52 +0000 Subject: [PATCH 4/4] adding more testing capability to concat_v2 --- tests/python/frontend/tensorflow2/test_functional_models.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/python/frontend/tensorflow2/test_functional_models.py b/tests/python/frontend/tensorflow2/test_functional_models.py index b3504ff38328..a39ecb411f15 100644 --- a/tests/python/frontend/tensorflow2/test_functional_models.py +++ b/tests/python/frontend/tensorflow2/test_functional_models.py @@ -354,7 +354,8 @@ def get_input(self): @tf.function(input_signature=[tf.TensorSpec(shape=(1, 30), dtype=tf.float32)]) def func(self, x): a, b, c = tf.split(x, 3, axis=1) - return tf.raw_ops.ConcatV2(values=[a, b, c], axis=1) + axis = tf.add(tf.constant(1, dtype="int32"), tf.constant(0, dtype="int32")) + return tf.raw_ops.ConcatV2(values=[a, b, c], axis=axis) run_all(ConcatV2)