{
namespace set_1
{
- // WARNING!
- // Current version is:
- // data_floor = floor(data)
- // diff = data - data_floor
- // if(diff < 0.5f)
- // return data_floor
- // else
- // return data_floor + 1.0f
- //
- // The correct version should contain condition:
- // if (diff < 0.5f || (diff == 0.5f && static_cast<int>(data_floor) % 2 == 0))
OutputVector round(const Node& node)
{
- const Output<ngraph::Node> data{node.get_ng_inputs().at(0)};
- const auto half_const =
- default_opset::Constant::create(data.get_element_type(), {}, {0.5f});
-
- // Floor(data + 0.5)
- return {std::make_shared<default_opset::Floor>(
- std::make_shared<default_opset::Add>(data, half_const))};
+ return {std::make_shared<default_opset::Round>(
+ node.get_ng_inputs().at(0), default_opset::Round::RoundMode::HALF_TO_EVEN)};
}
} // namespace set_1
test_case.run();
}
-// CASES NOT CORRECTLY HANDLED BY CURRENT IMPLEMENTATION OF ROUND
NGRAPH_TEST(${BACKEND_NAME}, onnx_model_round_half_nearest_even)
{
const auto function = onnx_import::import_onnx_model(
onnx_model_gatherND_int32
onnx_model_gatherND_float
-# Round op doesn't support some specific cases of rounding
-onnx_model_round_half_nearest_even
-
# Result mismatch
onnx_model_split_equal_parts_default
onnx_model_argmin_no_keepdims
broadcast_scalar_to_matrix_int64
abc_int64
+# Unsupported primitive of type: Round
+IE_CPU.onnx_model_round
+IE_CPU.onnx_model_round_half_nearest_even
+
# Unsupported primitive of type: SigmoidBackprop
sigmoid_bprop_n1c1h4
IE_GPU.region_yolo_v2_caffe
IE_GPU.region_yolo_v3_mxnet
+# Detected op not belonging to opset1!
+IE_GPU.round_int64
+
# Unsupported collapse op with dynamic shape
IE_GPU.builder_opset1_collapse_dyn_shape
INTERPRETER.onnx_model_gatherND_int32
INTERPRETER.onnx_model_gatherND_float
-# Round op doesn't support some specific cases of rounding
-onnx_model_round_half_nearest_even
# GRU/RNN/LSTM Sequence: Output values mismatch - seq_lengths not supported
onnx_model_lstm_fwd_mixed_seq_const