diff --git a/src/frontends/tensorflow/src/op_table.cpp b/src/frontends/tensorflow/src/op_table.cpp index bc1a657faf5..75512bce97b 100644 --- a/src/frontends/tensorflow/src/op_table.cpp +++ b/src/frontends/tensorflow/src/op_table.cpp @@ -281,6 +281,7 @@ const std::map get_supported_ops() { {"TopK", CreatorFunction(translate_top_k_op)}, {"TopKV2", CreatorFunction(translate_top_k_v2_op)}, {"Transpose", CreatorFunction(translate_transpose_op)}, + {"TruncateMod", CreatorFunction(translate_truncate_mod_op)}, {"Unpack", CreatorFunction(translate_unpack_op)}, {"UnravelIndex", CreatorFunction(translate_unravel_index_op)}, {"UnsortedSegmentSum", CreatorFunction(translate_unsorted_segment_sum_op)}, diff --git a/src/frontends/tensorflow_common/include/common_op_table.hpp b/src/frontends/tensorflow_common/include/common_op_table.hpp index 54f1dff243e..1004cb6e0c2 100644 --- a/src/frontends/tensorflow_common/include/common_op_table.hpp +++ b/src/frontends/tensorflow_common/include/common_op_table.hpp @@ -145,6 +145,7 @@ OP_CONVERTER(translate_tile_op); OP_CONVERTER_NAMED(translate_top_k_op); OP_CONVERTER_NAMED(translate_top_k_v2_op); OP_CONVERTER(translate_transpose_op); +OP_CONVERTER(translate_truncate_mod_op); OP_CONVERTER(translate_unpack_op); OP_CONVERTER(translate_unravel_index_op); OP_CONVERTER(translate_unsorted_segment_sum_op); diff --git a/src/frontends/tensorflow_common/src/op/truncate_mod.cpp b/src/frontends/tensorflow_common/src/op/truncate_mod.cpp new file mode 100644 index 00000000000..c4422ee9833 --- /dev/null +++ b/src/frontends/tensorflow_common/src/op/truncate_mod.cpp @@ -0,0 +1,48 @@ +// Copyright (C) 2018-2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "common_op_table.hpp" +#include "openvino/op/equal.hpp" +#include "openvino/op/floor_mod.hpp" +#include "openvino/op/less.hpp" +#include "openvino/op/negative.hpp" +#include "openvino/op/select.hpp" +#include "openvino/op/subtract.hpp" + +using namespace std; +using namespace ov::opset10; + +namespace ov { +namespace frontend { +namespace tensorflow { +namespace op { +OutputVector translate_truncate_mod_op(const NodeContext& node) { + default_op_checks(node, 2, {"TruncateMod"}); + auto x = node.get_input(0); + auto y = node.get_input(1); + + auto is_x_negative = make_shared(x, create_same_type_const_scalar(x, 0)); + auto is_y_negative = make_shared(y, create_same_type_const_scalar(y, 0)); + + // if (y < 0) {y = -y} + auto negative_y = make_shared(y); + y = make_shared(is_zero, floor_mod, make_shared