diff --git a/src/frontends/tensorflow_common/src/op/range.cpp b/src/frontends/tensorflow_common/src/op/range.cpp index f926a2cd792..27fe3c295a3 100644 --- a/src/frontends/tensorflow_common/src/op/range.cpp +++ b/src/frontends/tensorflow_common/src/op/range.cpp @@ -14,14 +14,14 @@ namespace tensorflow { namespace op { OutputVector translate_range_op(const NodeContext& node) { + default_op_checks(node, 3, {"Range", "RANGE"}); auto start = node.get_input(0); - auto stop = node.get_input(1); - auto step = node.get_input(2); - auto out_type = node.get_attribute("Tidx"); + auto limit = node.get_input(1); + auto delta = node.get_input(2); - auto res = make_shared(start, stop, step, out_type); - set_node_name(node.get_name(), res); - return res->outputs(); + auto range = make_shared(start, limit, delta, start.get_element_type()); + set_node_name(node.get_name(), range); + return {range}; } } // namespace op diff --git a/tests/layer_tests/tensorflow_tests/test_tf_Range.py b/tests/layer_tests/tensorflow_tests/test_tf_Range.py new file mode 100644 index 00000000000..b1d6d72a3c2 --- /dev/null +++ b/tests/layer_tests/tensorflow_tests/test_tf_Range.py @@ -0,0 +1,58 @@ +# Copyright (C) 2018-2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +import numpy as np +import pytest +import tensorflow as tf +from common.tf_layer_test_class import CommonTFLayerTest + + +class TestRange(CommonTFLayerTest): + def _prepare_input(self, inputs_info): + inputs_data = {} + if self.negative_delta: + inputs_data['start'] = np.random.randint(1, 10, []).astype(self.input_type) + inputs_data['limit'] = np.random.randint(-10, 0, []).astype(self.input_type) + inputs_data['delta'] = np.random.randint(-5, -1, []).astype(self.input_type) + else: + inputs_data['start'] = np.random.randint(1, 10, []).astype(self.input_type) + inputs_data['limit'] = np.random.randint(10, 30, []).astype(self.input_type) + inputs_data['delta'] = np.random.randint(1, 5, []).astype(self.input_type) + + return inputs_data + + def create_range_net(self, input_type, negative_delta): + self.input_type = input_type + self.negative_delta = negative_delta + types_map = { + np.float32: tf.float32, + np.int32: tf.int32 + } + assert input_type in types_map, "Incorrect test case" + tf_type = types_map[input_type] + tf.compat.v1.reset_default_graph() + # Create the graph and model + with tf.compat.v1.Session() as sess: + start = tf.compat.v1.placeholder(tf_type, [], 'start') + limit = tf.compat.v1.placeholder(tf_type, [], 'limit') + delta = tf.compat.v1.placeholder(tf_type, [], 'delta') + tf.raw_ops.Range(start=start, limit=limit, delta=delta) + tf.compat.v1.global_variables_initializer() + + tf_net = sess.graph_def + + return tf_net, None + + test_data_basic = [ + dict(input_type=np.float32, negative_delta=False), + dict(input_type=np.int32, negative_delta=True), + ] + + @pytest.mark.parametrize("params", test_data_basic) + @pytest.mark.precommit_tf_fe + @pytest.mark.nightly + def test_range_basic(self, params, ie_device, precision, ir_version, temp_dir, + use_new_frontend, use_old_api): + self._test(*self.create_range_net(**params), + ie_device, precision, ir_version, temp_dir=temp_dir, + use_new_frontend=use_new_frontend, use_old_api=use_old_api)