[ONNX] Update ONNX importer to use RNN/GRU Sequence ops (#2035)

This commit is contained in:
Katarzyna Mitrus 2020-09-23 10:11:34 +02:00 committed by GitHub
parent 1afeb8470f
commit 8f843c620a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
23 changed files with 3853 additions and 333 deletions

View File

@ -1,9 +1,9 @@
#include "ngraph/opsets/opset4.hpp"
#include "ngraph/opsets/opset5.hpp"
namespace ngraph
{
namespace onnx_import
{
namespace default_opset = ngraph::opset4;
namespace default_opset = ngraph::opset5;
}
}

View File

@ -85,102 +85,6 @@ namespace ngraph
std::vector<float> m_activations_beta;
};
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Helper classes~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
///
/// \brief Callable object defining recurrent cell computations.
///
/// Function returns node output representing cell hidden state after cell
/// computations. The arguments are:
/// * input node map.
/// * the cell input data
/// * the cell hidden state from previous step.
///
using RecurrentCellFunction = std::function<Output<ngraph::Node>(
const OpInputMap&, const Output<ngraph::Node>&, const Output<ngraph::Node>)>;
///
/// \brief This class describes a recurrent (RNN-like) sequence operation.
///
/// \paragraph Outline. This class takes care of orchestration of computations carried
/// out on data sequence. Use have to only provide kernel function
/// which would be executed on current time-step input data and the
/// sequence direction mode.
///
/// \paragraph Assumptions. This class assumes the RNN-like sequence operation. This
/// means that the operator should have inputs and outputs
/// the same as RNN operator. Especially the cell/kernel should
/// have input related to hidden cell state.
///
class RecurrentSequence
{
public:
///
/// \brief Constructs a RecurrentSequence class object.
///
/// \param[in] args The map with recurrent sequence operator inputs.
/// \param[in] attrs The structure containing operator attributes.
/// \param[in] direction The sequence direction mode {FORWARD, REVERSE,
/// BIDIRECTIONAL}.
///
RecurrentSequence(OpInputMap& args,
ngraph::op::RecurrentSequenceDirection direction);
///
/// \brief Carry out all steps of recurrent sequence with provided cell kernel.
///
/// \param[in] kernel The cell kernel function.
///
/// \return The node vector containing results from all sequence steps.
///
OutputVector run_sequence(const RecurrentCellFunction& kernel);
private:
///
/// \brief Gets the masked value according to sequence lenght in a batch.
///
/// \note Zeros out values or sets them to default value for inputs with
/// sequence lenght shorter than currently procssed time step.
///
/// \param[in] data The input value.
/// \param[in] time_step The current time step denoting sequence lenght.
/// \param[in] batch_axis The batch axis index of data tensor.
/// \param[in] default_value The default value for masked elements.
///
/// \return The masked value.
///
std::shared_ptr<ngraph::Node> get_masked_node(
const Output<ngraph::Node>& data,
std::int32_t time_step,
std::size_t batch_axis = 0,
const Output<ngraph::Node>& default_value = Output<ngraph::Node>()) const;
///
/// \brief Split and squeeze input data to remove 'num_direction' dimension.
///
/// \param[in] node The node to update.
/// \param[in] is_reverse Indicates if configure to reverse pass.
///
/// \return Updated node for forward/reverse pass.
///
std::shared_ptr<ngraph::Node> prepare_input(Output<ngraph::Node> node,
bool is_reverse) const;
///
/// \brief Perform computation through all input sequence steps in single mode.
///
/// \param[in] kernel The cell kernel function.
/// \param[in] is_reverse Indicates if carry out reverse or forward pass.
///
/// \return The node vector with pass results.
///
OutputVector recurrent_sequence_pass(const RecurrentCellFunction& kernel,
bool is_reverse = false);
OpInputMap& m_args;
ngraph::op::RecurrentSequenceDirection m_direction;
};
} // recurrent
} // onnx_import
} // ngraph

View File

@ -18,6 +18,7 @@
#include <vector>
#include "gru.hpp"
#include "ngraph/builder/reshape.hpp"
#include "ngraph/builder/split.hpp"
#include "ngraph/shape.hpp"
#include "onnx_import/core/null_node.hpp"
@ -119,28 +120,26 @@ namespace ngraph
GRUInputMap input_map{node, gates_count};
GRUAttributes attributes{node};
recurrent::RecurrentSequence sequence_op(input_map, attributes.m_direction);
auto results =
sequence_op.run_sequence([&attributes](const recurrent::OpInputMap& args,
const Output<ngraph::Node>& in_Xt,
const Output<ngraph::Node> H_t) {
auto gru_sequence = std::make_shared<default_opset::GRUSequence>(
input_map.at(recurrent::OpInput::X),
input_map.at(recurrent::OpInput::INIT_H),
input_map.at(recurrent::OpInput::SEQ_LENGTHS),
input_map.at(recurrent::OpInput::W),
input_map.at(recurrent::OpInput::R),
input_map.at(recurrent::OpInput::B),
attributes.m_hidden_size,
attributes.m_direction,
attributes.m_activations,
attributes.m_activations_alpha,
attributes.m_activations_beta,
attributes.m_clip_threshold,
attributes.m_linear_before_reset);
const GRUInputMap& gru_args = dynamic_cast<const GRUInputMap&>(args);
const auto Y = gru_sequence->output(0);
const auto Y_h = gru_sequence->output(1);
return std::make_shared<default_opset::GRUCell>(
in_Xt,
H_t,
gru_args.at(recurrent::OpInput::W),
gru_args.at(recurrent::OpInput::R),
gru_args.at(recurrent::OpInput::B),
attributes.m_hidden_size,
attributes.m_activations,
attributes.m_activations_alpha,
attributes.m_activations_beta,
attributes.m_clip_threshold,
attributes.m_linear_before_reset);
});
return results;
return {builder::opset1::reorder_axes(Y, {2, 1, 0, 3}),
builder::opset1::reorder_axes(Y_h, {1, 0, 2})};
}
} // namespace set_1

View File

@ -14,8 +14,11 @@
// limitations under the License.
//*****************************************************************************
#include "rnn.hpp"
#include <memory>
#include "ngraph/builder/reshape.hpp"
#include "onnx_import/default_opset.hpp"
#include "onnx_import/op/rnn.hpp"
#include "onnx_import/utils/recurrent.hpp"
namespace ngraph
@ -55,27 +58,25 @@ namespace ngraph
RNNInputMap input_map{node, gates_count};
RNNAttributes attributes{node};
recurrent::RecurrentSequence sequence_op(input_map, attributes.m_direction);
auto results =
sequence_op.run_sequence([&attributes](const recurrent::OpInputMap& args,
const Output<ngraph::Node>& in_Xt,
const Output<ngraph::Node> H_t) {
auto rnn_sequence = std::make_shared<default_opset::RNNSequence>(
input_map.at(recurrent::OpInput::X),
input_map.at(recurrent::OpInput::INIT_H),
input_map.at(recurrent::OpInput::SEQ_LENGTHS),
input_map.at(recurrent::OpInput::W),
input_map.at(recurrent::OpInput::R),
input_map.at(recurrent::OpInput::B),
attributes.m_hidden_size,
attributes.m_direction,
attributes.m_activations,
attributes.m_activations_alpha,
attributes.m_activations_beta,
attributes.m_clip_threshold);
const RNNInputMap& rnn_args = dynamic_cast<const RNNInputMap&>(args);
const auto Y = rnn_sequence->output(0);
const auto Y_h = rnn_sequence->output(1);
return std::make_shared<default_opset::RNNCell>(
in_Xt,
H_t,
rnn_args.at(recurrent::OpInput::W),
rnn_args.at(recurrent::OpInput::R),
rnn_args.at(recurrent::OpInput::B),
attributes.m_hidden_size,
attributes.m_activations,
attributes.m_activations_alpha,
attributes.m_activations_beta,
attributes.m_clip_threshold);
});
return results;
return {builder::opset1::reorder_axes(Y, {2, 1, 0, 3}),
builder::opset1::reorder_axes(Y_h, {1, 0, 2})};
}
} // namespace set_1
} // namespace op

View File

@ -37,7 +37,7 @@ namespace ngraph
{
const auto& ng_inputs = node.get_ng_inputs();
m_map[OpInput::X] = ng_inputs.at(0);
m_map[OpInput::X] = builder::opset1::reorder_axes(ng_inputs.at(0), {1, 0, 2});
m_map[OpInput::W] = ng_inputs.at(1);
m_map[OpInput::R] = ng_inputs.at(2);
@ -58,7 +58,7 @@ namespace ngraph
"(innermost) dimension.");
const std::size_t hidden_size = m_map[OpInput::R].get_shape().back();
const std::size_t batch_size = m_map[OpInput::X].get_shape().at(1);
const std::size_t batch_size = m_map[OpInput::X].get_shape().at(0);
const std::size_t num_directions = m_map[OpInput::W].get_shape().front();
if (ng_inputs.size() > 3 && !ngraph::op::is_null(ng_inputs.at(3)))
@ -81,17 +81,18 @@ namespace ngraph
else
{
m_map[OpInput::SEQ_LENGTHS] = std::make_shared<default_opset::Constant>(
element::i32, Shape{batch_size}, m_map[OpInput::X].get_shape().at(0));
element::i32, Shape{batch_size}, m_map[OpInput::X].get_shape().at(1));
}
// The initial value of the hidden.
if (ng_inputs.size() > 5 && !ngraph::op::is_null(ng_inputs.at(5)))
{
m_map[OpInput::INIT_H] = ng_inputs.at(5);
m_map[OpInput::INIT_H] =
builder::opset1::reorder_axes(ng_inputs.at(5), {1, 0, 2});
}
else
{
m_map[OpInput::INIT_H] = std::make_shared<default_opset::Constant>(
el_type, Shape{num_directions, batch_size, hidden_size}, 0.f);
el_type, Shape{batch_size, num_directions, hidden_size}, 0.f);
}
}
@ -128,176 +129,6 @@ namespace ngraph
m_direction = ngraph::as_enum<ngraph::op::RecurrentSequenceDirection>(direction);
}
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Sequence Computations ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
RecurrentSequence::RecurrentSequence(OpInputMap& args,
ngraph::op::RecurrentSequenceDirection direction)
: m_args(args)
, m_direction(direction)
{
}
OutputVector RecurrentSequence::run_sequence(const RecurrentCellFunction& kernel)
{
OutputVector results;
if (m_direction == ngraph::op::RecurrentSequenceDirection::FORWARD ||
m_direction == ngraph::op::RecurrentSequenceDirection::REVERSE)
{
results = recurrent_sequence_pass(
kernel, m_direction == ngraph::op::RecurrentSequenceDirection::REVERSE);
}
else if (m_direction == ngraph::op::RecurrentSequenceDirection::BIDIRECTIONAL)
{
OutputVector fwd_results{recurrent_sequence_pass(kernel)};
OutputVector rev_results{recurrent_sequence_pass(kernel, true)};
// Stack together respective outputs from both forward and reverse passess.
std::shared_ptr<ngraph::Node> Y{std::make_shared<default_opset::Concat>(
OutputVector{fwd_results.at(0), rev_results.at(0)}, 1)};
results.push_back(Y);
std::shared_ptr<ngraph::Node> Y_h{std::make_shared<default_opset::Concat>(
OutputVector{fwd_results.at(1), rev_results.at(1)}, 0)};
results.push_back(Y_h);
}
else
{
throw ngraph_error(
"RecurrentSequence: unhandled direction mode during decomposition.");
}
return results;
}
OutputVector
RecurrentSequence::recurrent_sequence_pass(const RecurrentCellFunction& kernel,
bool is_reverse)
{
OutputVector h_list;
// back-up nodes which we may later modify.
Output<ngraph::Node> orig_W = m_args.at(OpInput::W);
Output<ngraph::Node> orig_R = m_args.at(OpInput::R);
Output<ngraph::Node> orig_B = m_args.at(OpInput::B);
Output<ngraph::Node> X = m_args.at(OpInput::X);
Output<ngraph::Node> H_t = prepare_input(m_args.at(OpInput::INIT_H), is_reverse);
Output<ngraph::Node> W = prepare_input(m_args.at(OpInput::W), is_reverse);
Output<ngraph::Node> R = prepare_input(m_args.at(OpInput::R), is_reverse);
Output<ngraph::Node> B = prepare_input(m_args.at(OpInput::B), is_reverse);
Output<ngraph::Node> seq_lengths = m_args.at(OpInput::SEQ_LENGTHS);
m_args.at(OpInput::W) = W;
m_args.at(OpInput::R) = R;
m_args.at(OpInput::B) = B;
if (is_reverse)
{
X = std::make_shared<default_opset::ReverseSequence>(
X, seq_lengths, 1 /*batch_axis*/, 0 /*seq_axis*/);
}
OutputVector in_seq_steps = builder::opset1::split(X, X.get_shape().at(0));
for (auto& in_x : in_seq_steps)
{
// remove first empty dim, after above split.
in_x = builder::opset1::squeeze(in_x);
}
int32_t time_step{1};
for (const auto& in_x : in_seq_steps)
{
Output<ngraph::Node> H = kernel(m_args, in_x, H_t);
// Expand tensors with empty outermost dim, so we can later concatenate
// them.
// Mask hidden state tensor in order to handle mixed sequence lengths.
// This results in zeroing out values in batches with sequence shorter
// than current time_step.
h_list.push_back(
get_masked_node(builder::opset1::expand_dims(H), time_step, 1));
// Here we make sure that only appropriate batches (with respect to its sequence
// length) are updated. Those batches which has shorter sequences preserve
// the last value.
H_t = get_masked_node(H, time_step, 0, H_t);
time_step++;
}
// Get back original nodes.
m_args.at(OpInput::W) = orig_W;
m_args.at(OpInput::R) = orig_R;
m_args.at(OpInput::B) = orig_B;
// The tensor that concats all the intermediate output values of the hidden.
// It has shape [seq_length, batch_size, hidden_size]
std::shared_ptr<ngraph::Node> Y{std::make_shared<default_opset::Concat>(h_list, 0)};
// Get back the original order of the output data.
if (is_reverse)
{
Y = std::make_shared<default_opset::ReverseSequence>(
Y, seq_lengths, 1 /*batch_axis*/, 0 /*seq_axis*/);
}
// Expand Y so that it has expected shape:
// [seq_length, num_directions, batch_size, hidden_size]
Y = builder::opset1::expand_dims(Y, 1);
// Expand H_t so that it has expected shape:
// [num_directions, batch_size, hidden_size]
auto Y_h = builder::opset1::expand_dims(H_t);
return {Y, Y_h};
}
std::shared_ptr<ngraph::Node>
RecurrentSequence::get_masked_node(const Output<ngraph::Node>& data,
int32_t time_step,
size_t batch_axis,
const Output<ngraph::Node>& default_value) const
{
Output<ngraph::Node> mask_value = default_value;
// Create zero mask value node.
if (!mask_value.get_node_shared_ptr())
{
mask_value = std::make_shared<default_opset::Constant>(
data.get_element_type(), data.get_shape(), 0.f);
}
// Create predicate nodes. The condition is whether current time step value
// is greater than sequence length for respective batch inputs.
std::shared_ptr<ngraph::Node> curr_time_step_node =
std::make_shared<default_opset::Constant>(
element::i32, data.get_shape(), time_step);
Output<ngraph::Node> batch_seq_length =
builder::opset1::legacy_broadcast_for_binary_operation(
curr_time_step_node, m_args.at(OpInput::SEQ_LENGTHS), batch_axis);
// Create mask node deciding whether or not to mask batch data.
std::shared_ptr<ngraph::Node> mask_condition =
std::make_shared<default_opset::Greater>(curr_time_step_node, batch_seq_length);
// Select values depnding on mask_condition.
// Select(<condition>, <true_value>, <false_value>)
return std::make_shared<default_opset::Select>(mask_condition, mask_value, data);
}
std::shared_ptr<ngraph::Node>
RecurrentSequence::prepare_input(Output<ngraph::Node> node, bool is_reverse) const
{
// In bidirectional mode inputs are stacked together, so we must split them.
Output<ngraph::Node> tmp = node;
if (m_direction == ngraph::op::RecurrentSequenceDirection::BIDIRECTIONAL)
{
tmp = builder::opset1::split(node, 2).at(is_reverse ? 1 : 0);
}
// Since we work in forward pass mode, we can squeeze `num_directions` axis from
// input.
return builder::opset1::squeeze(tmp);
}
} // recurrent
} // onnx_import
} // ngraph

View File

@ -0,0 +1,327 @@
ir_version: 7
producer_name: "onnx-importer-test"
graph {
node {
output: "W"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 2
dims: 15
dims: 2
data_type: 1
float_data: 0.31403765082359314
float_data: -0.16793324053287506
float_data: 1.3882579803466797
float_data: -0.690295398235321
float_data: -0.39940449595451355
float_data: -0.7833511233329773
float_data: -0.30992957949638367
float_data: 0.35575729608535767
float_data: -0.46826308965682983
float_data: 1.1741459369659424
float_data: -2.4147889614105225
float_data: -0.42783254384994507
float_data: -0.821994960308075
float_data: -0.03900860995054245
float_data: -0.43670088052749634
float_data: -0.5381056666374207
float_data: -0.10769882798194885
float_data: 0.7524239420890808
float_data: -0.2507970929145813
float_data: 1.044718623161316
float_data: -1.4777363538742065
float_data: 0.1999327391386032
float_data: 0.9256489872932434
float_data: -2.2825160026550293
float_data: 0.9503963589668274
float_data: 1.5379830598831177
float_data: -0.8857600688934326
float_data: 0.2856624722480774
float_data: 0.7929264307022095
float_data: -0.042619530111551285
float_data: 0.8490582704544067
float_data: 0.45121243596076965
float_data: -1.179901361465454
float_data: 0.13536448776721954
float_data: 0.813286542892456
float_data: 0.6017516255378723
float_data: 0.4847572445869446
float_data: -1.2136037349700928
float_data: 0.16383321583271027
float_data: 1.5106260776519775
float_data: 1.1177502870559692
float_data: 0.2358246147632599
float_data: 0.575465202331543
float_data: 0.4387988746166229
float_data: 0.7399293780326843
float_data: 0.4517557919025421
float_data: 1.3536783456802368
float_data: -0.4843165874481201
float_data: -1.1503735780715942
float_data: -0.2458678036928177
float_data: 0.5452331304550171
float_data: -0.08649992942810059
float_data: -0.6936280727386475
float_data: 1.0024219751358032
float_data: -1.770846962928772
float_data: -0.9464200139045715
float_data: -1.8135757446289062
float_data: 1.8819851875305176
float_data: -0.10852333158254623
float_data: -0.2612033188343048
name: "const_tensor_W"
}
type: TENSOR
}
}
node {
output: "R"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 2
dims: 15
dims: 5
data_type: 1
float_data: 1.0223164558410645
float_data: -0.7468836903572083
float_data: 0.2856690585613251
float_data: 0.9232105612754822
float_data: 0.22521863877773285
float_data: 1.112382411956787
float_data: -0.9298287034034729
float_data: 1.214128851890564
float_data: 1.3470555543899536
float_data: -0.329720139503479
float_data: -1.6552196741104126
float_data: -1.0998284816741943
float_data: 0.7190186381340027
float_data: 0.9628459811210632
float_data: -0.1366851031780243
float_data: -2.6534476280212402
float_data: -1.499277114868164
float_data: -0.4579346477985382
float_data: 0.42904770374298096
float_data: 0.9893150925636292
float_data: 0.25110340118408203
float_data: 0.1290646195411682
float_data: 0.7491511702537537
float_data: 0.33167558908462524
float_data: 1.0576645135879517
float_data: -0.0461866594851017
float_data: 1.3556088209152222
float_data: 1.2842373847961426
float_data: 0.710301399230957
float_data: 0.5288901329040527
float_data: 0.303271621465683
float_data: 1.5069055557250977
float_data: 0.16591893136501312
float_data: 1.571985125541687
float_data: -2.0994269847869873
float_data: -1.0102770328521729
float_data: -0.5280092358589172
float_data: -0.22292351722717285
float_data: -0.5517747402191162
float_data: 1.3432893753051758
float_data: 0.8731191754341125
float_data: -0.010553066618740559
float_data: -0.011382147669792175
float_data: 0.8569884300231934
float_data: -1.2615703344345093
float_data: 0.53367018699646
float_data: 1.6593654155731201
float_data: -1.1500109434127808
float_data: 0.003422167617827654
float_data: 0.7993710041046143
float_data: 0.43780383467674255
float_data: -0.5508262515068054
float_data: 1.0774186849594116
float_data: -0.606513500213623
float_data: 0.6434063911437988
float_data: -1.5693753957748413
float_data: 1.4923384189605713
float_data: 1.1554348468780518
float_data: -1.328158974647522
float_data: 0.24995532631874084
float_data: 0.15112681686878204
float_data: -0.3469875752925873
float_data: -0.100888192653656
float_data: -0.2931624948978424
float_data: -0.4731961488723755
float_data: 0.6616785526275635
float_data: -1.1646721363067627
float_data: -0.09588219225406647
float_data: 0.5212928056716919
float_data: 0.37182366847991943
float_data: 0.27342286705970764
float_data: 1.1613404750823975
float_data: -0.7519622445106506
float_data: -1.514364242553711
float_data: 0.2060445249080658
float_data: -0.484069287776947
float_data: -1.4054375886917114
float_data: 0.8453364372253418
float_data: -0.11608880013227463
float_data: -1.3724716901779175
float_data: 1.9782589673995972
float_data: -0.8500093817710876
float_data: -2.012040853500366
float_data: 0.8995963335037231
float_data: -0.5367941856384277
float_data: 0.2118847817182541
float_data: 1.760378360748291
float_data: 0.387529581785202
float_data: -0.06706901639699936
float_data: -1.4290835857391357
float_data: 0.8207164406776428
float_data: 0.0734144002199173
float_data: 0.020800577476620674
float_data: -0.37418514490127563
float_data: 0.22736744582653046
float_data: -0.45455673336982727
float_data: -0.22429540753364563
float_data: 3.4253392219543457
float_data: -0.3137010633945465
float_data: 1.2506999969482422
float_data: -1.295291543006897
float_data: -0.4875306189060211
float_data: 0.6511766910552979
float_data: -0.08813229203224182
float_data: -0.18401481211185455
float_data: -0.6687431931495667
float_data: -0.283598929643631
float_data: 1.2432210445404053
float_data: -0.10344048589468002
float_data: -0.46350178122520447
float_data: 1.72944974899292
float_data: -0.25424954295158386
float_data: -1.6086454391479492
float_data: 0.48648396134376526
float_data: 0.7004421353340149
float_data: -1.719527006149292
float_data: -0.24492254853248596
float_data: -0.5800285339355469
float_data: 0.06994964182376862
float_data: 0.37459897994995117
float_data: -1.1972801685333252
float_data: 0.9301284551620483
float_data: -0.24237942695617676
float_data: 0.6401816606521606
float_data: 2.048563003540039
float_data: -1.2752386331558228
float_data: -0.47553277015686035
float_data: 0.30204761028289795
float_data: -0.2549392282962799
float_data: -1.332425594329834
float_data: -0.823140561580658
float_data: -1.0945079326629639
float_data: -0.17084509134292603
float_data: 1.3120523691177368
float_data: 0.22898809611797333
float_data: -0.5517957210540771
float_data: -0.9498513340950012
float_data: 1.2861931324005127
float_data: 1.2827341556549072
float_data: 0.2927672266960144
float_data: -0.39297449588775635
float_data: 2.0908429622650146
float_data: -1.283141016960144
float_data: -1.1907626390457153
float_data: -0.03522586077451706
float_data: -0.044718608260154724
float_data: 0.6821572780609131
float_data: -0.2595707178115845
float_data: 1.501725673675537
float_data: -0.02765234187245369
name: "const_tensor"
}
type: TENSOR
}
}
node {
input: "X"
input: "W"
input: "R"
output: "Y"
output: "Y_h"
op_type: "GRU"
attribute {
name: "direction"
s: "bidirectional"
type: STRING
}
attribute {
name: "hidden_size"
i: 5
type: INT
}
}
name: "test-model-gru"
input {
name: "X"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 4
}
dim {
dim_value: 3
}
dim {
dim_value: 2
}
}
}
}
}
output {
name: "Y"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 4
}
dim {
dim_value: 2
}
dim {
dim_value: 3
}
dim {
dim_value: 5
}
}
}
}
}
output {
name: "Y_h"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 2
}
dim {
dim_value: 3
}
dim {
dim_value: 5
}
}
}
}
}
}
opset_import {
domain: ""
version: 12
}

View File

@ -0,0 +1,220 @@
ir_version: 3
producer_name: "nGraph ONNX Importer"
graph {
node {
output: "W"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1 # num_directions
dims: 15 # gates_count*hidden_size
dims: 2 # input_size
data_type: 1
float_data: 0.31403765
float_data: -0.16793324
float_data: 1.388258
float_data: -0.6902954
float_data: -0.3994045
float_data: -0.7833511
float_data: -0.30992958
float_data: 0.3557573
float_data: -0.4682631
float_data: 1.1741459
float_data: -2.414789
float_data: -0.42783254
float_data: -0.82199496
float_data: -0.0390086
float_data: -0.43670088
float_data: -0.53810567
float_data: -0.10769883
float_data: 0.75242394
float_data: -0.2507971
float_data: 1.0447186
float_data: -1.4777364
float_data: 0.19993274
float_data: 0.925649
float_data: -2.282516
float_data: 0.95039636
float_data: 1.5379831
float_data: -0.88576007
float_data: 0.28566247
float_data: 0.79292643
float_data: -0.04261953
name: "W_tensor"
}
type: TENSOR
}
}
node {
output: "R"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1 # num_directions
dims: 15 # gates_count*hidden_size
dims: 5 # input_size
data_type: 1
float_data: 0.8490583
float_data: 0.45121244
float_data: -1.1799014
float_data: 0.13536449
float_data: 0.81328654
float_data: 0.6017516
float_data: 0.48475724
float_data: -1.2136037
float_data: 0.16383322
float_data: 1.5106261
float_data: 1.1177503
float_data: 0.23582461
float_data: 0.5754652
float_data: 0.43879887
float_data: 0.7399294
float_data: 0.4517558
float_data: 1.3536783
float_data: -0.4843166
float_data: -1.1503736
float_data: -0.2458678
float_data: 0.54523313
float_data: -0.08649993
float_data: -0.6936281
float_data: 1.002422
float_data: -1.770847
float_data: -0.94642
float_data: -1.8135757
float_data: 1.8819852
float_data: -0.10852333
float_data: -0.26120332
float_data: 1.0223165
float_data: -0.7468837
float_data: 0.28566906
float_data: 0.92321056
float_data: 0.22521864
float_data: 1.1123824
float_data: -0.9298287
float_data: 1.2141289
float_data: 1.3470556
float_data: -0.32972014
float_data: -1.6552197
float_data: -1.0998285
float_data: 0.71901864
float_data: 0.962846
float_data: -0.1366851
float_data: -2.6534476
float_data: -1.4992771
float_data: -0.45793465
float_data: 0.4290477
float_data: 0.9893151
float_data: 0.2511034
float_data: 0.12906462
float_data: 0.7491512
float_data: 0.3316756
float_data: 1.0576645
float_data: -0.04618666
float_data: 1.3556088
float_data: 1.2842374
float_data: 0.7103014
float_data: 0.52889013
float_data: 0.30327162
float_data: 1.5069056
float_data: 0.16591893
float_data: 1.5719851
float_data: -2.099427
float_data: -1.010277
float_data: -0.52800924
float_data: -0.22292352
float_data: -0.55177474
float_data: 1.3432894
float_data: 0.8731192
float_data: -0.01055307
float_data: -0.01138215
float_data: 0.85698843
float_data: -1.2615703
name: "R_tensor"
}
type: TENSOR
}
}
node {
input: "X"
input: "W"
input: "R"
output: "Y"
output: "Y_h"
op_type: "GRU"
attribute {
name: "hidden_size"
i: 5
type: INT
}
}
name: "test_gru_defaults_const"
input {
name: "X"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 4 # seq_length
}
dim {
dim_value: 3 # batch size
}
dim {
dim_value: 2 # input size
}
}
}
}
}
output {
name: "Y"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 4 # seq_length
}
dim {
dim_value: 1 # num_directions
}
dim {
dim_value: 3 # batch_size
}
dim {
dim_value: 5 # hidden_size
}
}
}
}
}
output {
name: "Y_h"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 1 # num_directions
}
dim {
dim_value: 3 # batch_size
}
dim {
dim_value: 5 # hidden_size
}
}
}
}
}
}
opset_import {
version: 9
}

View File

@ -0,0 +1,231 @@
ir_version: 3
producer_name: "nGraph ONNX Importer"
graph {
node {
output: "W"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1 # num_directions
dims: 15 # gates_count*hidden_size
dims: 2 # input_size
data_type: 1
float_data: 0.31403765
float_data: -0.16793324
float_data: 1.388258
float_data: -0.6902954
float_data: -0.3994045
float_data: -0.7833511
float_data: -0.30992958
float_data: 0.3557573
float_data: -0.4682631
float_data: 1.1741459
float_data: -2.414789
float_data: -0.42783254
float_data: -0.82199496
float_data: -0.0390086
float_data: -0.43670088
float_data: -0.53810567
float_data: -0.10769883
float_data: 0.75242394
float_data: -0.2507971
float_data: 1.0447186
float_data: -1.4777364
float_data: 0.19993274
float_data: 0.925649
float_data: -2.282516
float_data: 0.95039636
float_data: 1.5379831
float_data: -0.88576007
float_data: 0.28566247
float_data: 0.79292643
float_data: -0.04261953
name: "W_tensor"
}
type: TENSOR
}
}
node {
output: "R"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1 # num_directions
dims: 15 # gates_count*hidden_size
dims: 5 # input_size
data_type: 1
float_data: 0.8490583
float_data: 0.45121244
float_data: -1.1799014
float_data: 0.13536449
float_data: 0.81328654
float_data: 0.6017516
float_data: 0.48475724
float_data: -1.2136037
float_data: 0.16383322
float_data: 1.5106261
float_data: 1.1177503
float_data: 0.23582461
float_data: 0.5754652
float_data: 0.43879887
float_data: 0.7399294
float_data: 0.4517558
float_data: 1.3536783
float_data: -0.4843166
float_data: -1.1503736
float_data: -0.2458678
float_data: 0.54523313
float_data: -0.08649993
float_data: -0.6936281
float_data: 1.002422
float_data: -1.770847
float_data: -0.94642
float_data: -1.8135757
float_data: 1.8819852
float_data: -0.10852333
float_data: -0.26120332
float_data: 1.0223165
float_data: -0.7468837
float_data: 0.28566906
float_data: 0.92321056
float_data: 0.22521864
float_data: 1.1123824
float_data: -0.9298287
float_data: 1.2141289
float_data: 1.3470556
float_data: -0.32972014
float_data: -1.6552197
float_data: -1.0998285
float_data: 0.71901864
float_data: 0.962846
float_data: -0.1366851
float_data: -2.6534476
float_data: -1.4992771
float_data: -0.45793465
float_data: 0.4290477
float_data: 0.9893151
float_data: 0.2511034
float_data: 0.12906462
float_data: 0.7491512
float_data: 0.3316756
float_data: 1.0576645
float_data: -0.04618666
float_data: 1.3556088
float_data: 1.2842374
float_data: 0.7103014
float_data: 0.52889013
float_data: 0.30327162
float_data: 1.5069056
float_data: 0.16591893
float_data: 1.5719851
float_data: -2.099427
float_data: -1.010277
float_data: -0.52800924
float_data: -0.22292352
float_data: -0.55177474
float_data: 1.3432894
float_data: 0.8731192
float_data: -0.01055307
float_data: -0.01138215
float_data: 0.85698843
float_data: -1.2615703
name: "R_tensor"
}
type: TENSOR
}
}
node {
input: "X"
input: "W"
input: "R"
output: "Y"
output: "Y_h"
op_type: "GRU"
attribute {
name: "hidden_size"
i: 5
type: INT
}
attribute {
name: "direction"
s: "forward"
type: STRING
}
attribute {
name: "activations"
strings: "relu"
strings: "sigmoid"
type: STRINGS
}
}
name: "test_gru_defaults_const"
input {
name: "X"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 4 # seq_length
}
dim {
dim_value: 3 # batch size
}
dim {
dim_value: 2 # input size
}
}
}
}
}
output {
name: "Y"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 4 # seq_length
}
dim {
dim_value: 1 # num_directions
}
dim {
dim_value: 3 # batch_size
}
dim {
dim_value: 5 # hidden_size
}
}
}
}
}
output {
name: "Y_h"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 1 # num_directions
}
dim {
dim_value: 3 # batch_size
}
dim {
dim_value: 5 # hidden_size
}
}
}
}
}
}
opset_import {
version: 9
}

View File

@ -0,0 +1,299 @@
ir_version: 7
producer_name: "onnx-importer-test"
graph {
node {
output: "W"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1
dims: 15
dims: 2
data_type: 1
float_data: 0.31403765082359314
float_data: -0.16793324053287506
float_data: 1.3882579803466797
float_data: -0.690295398235321
float_data: -0.39940449595451355
float_data: -0.7833511233329773
float_data: -0.30992957949638367
float_data: 0.35575729608535767
float_data: -0.46826308965682983
float_data: 1.1741459369659424
float_data: -2.4147889614105225
float_data: -0.42783254384994507
float_data: -0.821994960308075
float_data: -0.03900860995054245
float_data: -0.43670088052749634
float_data: -0.5381056666374207
float_data: -0.10769882798194885
float_data: 0.7524239420890808
float_data: -0.2507970929145813
float_data: 1.044718623161316
float_data: -1.4777363538742065
float_data: 0.1999327391386032
float_data: 0.9256489872932434
float_data: -2.2825160026550293
float_data: 0.9503963589668274
float_data: 1.5379830598831177
float_data: -0.8857600688934326
float_data: 0.2856624722480774
float_data: 0.7929264307022095
float_data: -0.042619530111551285
name: "const_tensor_W"
}
type: TENSOR
}
}
node {
output: "R"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1
dims: 15
dims: 5
data_type: 1
float_data: 0.8490582704544067
float_data: 0.45121243596076965
float_data: -1.179901361465454
float_data: 0.13536448776721954
float_data: 0.813286542892456
float_data: 0.6017516255378723
float_data: 0.4847572445869446
float_data: -1.2136037349700928
float_data: 0.16383321583271027
float_data: 1.5106260776519775
float_data: 1.1177502870559692
float_data: 0.2358246147632599
float_data: 0.575465202331543
float_data: 0.4387988746166229
float_data: 0.7399293780326843
float_data: 0.4517557919025421
float_data: 1.3536783456802368
float_data: -0.4843165874481201
float_data: -1.1503735780715942
float_data: -0.2458678036928177
float_data: 0.5452331304550171
float_data: -0.08649992942810059
float_data: -0.6936280727386475
float_data: 1.0024219751358032
float_data: -1.770846962928772
float_data: -0.9464200139045715
float_data: -1.8135757446289062
float_data: 1.8819851875305176
float_data: -0.10852333158254623
float_data: -0.2612033188343048
float_data: 1.0223164558410645
float_data: -0.7468836903572083
float_data: 0.2856690585613251
float_data: 0.9232105612754822
float_data: 0.22521863877773285
float_data: 1.112382411956787
float_data: -0.9298287034034729
float_data: 1.214128851890564
float_data: 1.3470555543899536
float_data: -0.329720139503479
float_data: -1.6552196741104126
float_data: -1.0998284816741943
float_data: 0.7190186381340027
float_data: 0.9628459811210632
float_data: -0.1366851031780243
float_data: -2.6534476280212402
float_data: -1.499277114868164
float_data: -0.4579346477985382
float_data: 0.42904770374298096
float_data: 0.9893150925636292
float_data: 0.25110340118408203
float_data: 0.1290646195411682
float_data: 0.7491511702537537
float_data: 0.33167558908462524
float_data: 1.0576645135879517
float_data: -0.0461866594851017
float_data: 1.3556088209152222
float_data: 1.2842373847961426
float_data: 0.710301399230957
float_data: 0.5288901329040527
float_data: 0.303271621465683
float_data: 1.5069055557250977
float_data: 0.16591893136501312
float_data: 1.571985125541687
float_data: -2.0994269847869873
float_data: -1.0102770328521729
float_data: -0.5280092358589172
float_data: -0.22292351722717285
float_data: -0.5517747402191162
float_data: 1.3432893753051758
float_data: 0.8731191754341125
float_data: -0.010553070344030857
float_data: -0.0113821504637599
float_data: 0.8569884300231934
float_data: -1.2615703344345093
name: "const_tensor"
}
type: TENSOR
}
}
node {
output: "B"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1
dims: 30
data_type: 1
float_data: 0.53367018699646
float_data: 1.6593654155731201
float_data: -1.1500109434127808
float_data: 0.0034221699461340904
float_data: 0.7993710041046143
float_data: 0.43780383467674255
float_data: -0.5508262515068054
float_data: 1.0774186849594116
float_data: -0.606513500213623
float_data: 0.6434063911437988
float_data: -1.5693753957748413
float_data: 1.4923384189605713
float_data: 1.1554348468780518
float_data: -1.328158974647522
float_data: 0.24995532631874084
float_data: 0.15112681686878204
float_data: -0.3469875752925873
float_data: -0.100888192653656
float_data: -0.2931624948978424
float_data: -0.4731961488723755
float_data: 0.6616785526275635
float_data: -1.1646721363067627
float_data: -0.09588219225406647
float_data: 0.5212928056716919
float_data: 0.37182366847991943
float_data: 0.27342286705970764
float_data: 1.1613404750823975
float_data: -0.7519622445106506
float_data: -1.514364242553711
float_data: 0.2060445249080658
name: "const_tensor"
}
type: TENSOR
}
}
node {
output: "initial_h"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1
dims: 3
dims: 5
data_type: 1
float_data: -0.484069287776947
float_data: -1.4054375886917114
float_data: 0.8453364372253418
float_data: -0.11608880013227463
float_data: -1.3724716901779175
float_data: 1.9782589673995972
float_data: -0.8500093817710876
float_data: -2.012040853500366
float_data: 0.8995963335037231
float_data: -0.5367941856384277
float_data: 0.2118847817182541
float_data: 1.760378360748291
float_data: 0.387529581785202
float_data: -0.06706901639699936
float_data: -1.4290835857391357
name: "const_tensor"
}
type: TENSOR
}
}
node {
input: "X"
input: "W"
input: "R"
input: "B"
input: ""
input: "initial_h"
output: "Y"
output: "Y_h"
op_type: "GRU"
attribute {
name: "direction"
s: "forward"
type: STRING
}
attribute {
name: "hidden_size"
i: 5
type: INT
}
}
name: "test-model-gru"
input {
name: "X"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 4
}
dim {
dim_value: 3
}
dim {
dim_value: 2
}
}
}
}
}
output {
name: "Y"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 4
}
dim {
dim_value: 1
}
dim {
dim_value: 3
}
dim {
dim_value: 5
}
}
}
}
}
output {
name: "Y_h"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 1
}
dim {
dim_value: 3
}
dim {
dim_value: 5
}
}
}
}
}
}
opset_import {
domain: ""
version: 12
}

View File

@ -0,0 +1,267 @@
ir_version: 7
producer_name: "onnx-importer-test"
graph {
node {
output: "W"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1
dims: 15
dims: 2
data_type: 1
float_data: 0.31403765082359314
float_data: -0.16793324053287506
float_data: 1.3882579803466797
float_data: -0.690295398235321
float_data: -0.39940449595451355
float_data: -0.7833511233329773
float_data: -0.30992957949638367
float_data: 0.35575729608535767
float_data: -0.46826308965682983
float_data: 1.1741459369659424
float_data: -2.4147889614105225
float_data: -0.42783254384994507
float_data: -0.821994960308075
float_data: -0.03900860995054245
float_data: -0.43670088052749634
float_data: -0.5381056666374207
float_data: -0.10769882798194885
float_data: 0.7524239420890808
float_data: -0.2507970929145813
float_data: 1.044718623161316
float_data: -1.4777363538742065
float_data: 0.1999327391386032
float_data: 0.9256489872932434
float_data: -2.2825160026550293
float_data: 0.9503963589668274
float_data: 1.5379830598831177
float_data: -0.8857600688934326
float_data: 0.2856624722480774
float_data: 0.7929264307022095
float_data: -0.042619530111551285
name: "const_tensor_W"
}
type: TENSOR
}
}
node {
output: "R"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1
dims: 15
dims: 5
data_type: 1
float_data: 0.8490582704544067
float_data: 0.45121243596076965
float_data: -1.179901361465454
float_data: 0.13536448776721954
float_data: 0.813286542892456
float_data: 0.6017516255378723
float_data: 0.4847572445869446
float_data: -1.2136037349700928
float_data: 0.16383321583271027
float_data: 1.5106260776519775
float_data: 1.1177502870559692
float_data: 0.2358246147632599
float_data: 0.575465202331543
float_data: 0.4387988746166229
float_data: 0.7399293780326843
float_data: 0.4517557919025421
float_data: 1.3536783456802368
float_data: -0.4843165874481201
float_data: -1.1503735780715942
float_data: -0.2458678036928177
float_data: 0.5452331304550171
float_data: -0.08649992942810059
float_data: -0.6936280727386475
float_data: 1.0024219751358032
float_data: -1.770846962928772
float_data: -0.9464200139045715
float_data: -1.8135757446289062
float_data: 1.8819851875305176
float_data: -0.10852333158254623
float_data: -0.2612033188343048
float_data: 1.0223164558410645
float_data: -0.7468836903572083
float_data: 0.2856690585613251
float_data: 0.9232105612754822
float_data: 0.22521863877773285
float_data: 1.112382411956787
float_data: -0.9298287034034729
float_data: 1.214128851890564
float_data: 1.3470555543899536
float_data: -0.329720139503479
float_data: -1.6552196741104126
float_data: -1.0998284816741943
float_data: 0.7190186381340027
float_data: 0.9628459811210632
float_data: -0.1366851031780243
float_data: -2.6534476280212402
float_data: -1.499277114868164
float_data: -0.4579346477985382
float_data: 0.42904770374298096
float_data: 0.9893150925636292
float_data: 0.25110340118408203
float_data: 0.1290646195411682
float_data: 0.7491511702537537
float_data: 0.33167558908462524
float_data: 1.0576645135879517
float_data: -0.0461866594851017
float_data: 1.3556088209152222
float_data: 1.2842373847961426
float_data: 0.710301399230957
float_data: 0.5288901329040527
float_data: 0.303271621465683
float_data: 1.5069055557250977
float_data: 0.16591893136501312
float_data: 1.571985125541687
float_data: -2.0994269847869873
float_data: -1.0102770328521729
float_data: -0.5280092358589172
float_data: -0.22292351722717285
float_data: -0.5517747402191162
float_data: 1.3432893753051758
float_data: 0.8731191754341125
float_data: -0.010553070344030857
float_data: -0.0113821504637599
float_data: 0.8569884300231934
float_data: -1.2615703344345093
name: "const_tensor"
}
type: TENSOR
}
}
node {
output: "B"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1
dims: 30
data_type: 1
float_data: 0.53367018699646
float_data: 1.6593654155731201
float_data: -1.1500109434127808
float_data: 0.0034221699461340904
float_data: 0.7993710041046143
float_data: 0.43780383467674255
float_data: -0.5508262515068054
float_data: 1.0774186849594116
float_data: -0.606513500213623
float_data: 0.6434063911437988
float_data: -1.5693753957748413
float_data: 1.4923384189605713
float_data: 1.1554348468780518
float_data: -1.328158974647522
float_data: 0.24995532631874084
float_data: 0.15112681686878204
float_data: -0.3469875752925873
float_data: -0.100888192653656
float_data: -0.2931624948978424
float_data: -0.4731961488723755
float_data: 0.6616785526275635
float_data: -1.1646721363067627
float_data: -0.09588219225406647
float_data: 0.5212928056716919
float_data: 0.37182366847991943
float_data: 0.27342286705970764
float_data: 1.1613404750823975
float_data: -0.7519622445106506
float_data: -1.514364242553711
float_data: 0.2060445249080658
name: "const_tensor"
}
type: TENSOR
}
}
node {
input: "X"
input: "W"
input: "R"
input: "B"
output: "Y"
output: "Y_h"
op_type: "GRU"
attribute {
name: "hidden_size"
i: 5
type: INT
}
attribute {
name: "linear_before_reset"
i: 1
type: INT
}
}
name: "test-model-gru"
input {
name: "X"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 4
}
dim {
dim_value: 3
}
dim {
dim_value: 2
}
}
}
}
}
output {
name: "Y"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 4
}
dim {
dim_value: 1
}
dim {
dim_value: 3
}
dim {
dim_value: 5
}
}
}
}
}
output {
name: "Y_h"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 1
}
dim {
dim_value: 3
}
dim {
dim_value: 5
}
}
}
}
}
}
opset_import {
domain: ""
version: 12
}

View File

@ -0,0 +1,310 @@
ir_version: 7
producer_name: "onnx-importer-test"
graph {
node {
output: "W"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1
dims: 15
dims: 2
data_type: 1
float_data: 0.31403765082359314
float_data: -0.16793324053287506
float_data: 1.3882579803466797
float_data: -0.690295398235321
float_data: -0.39940449595451355
float_data: -0.7833511233329773
float_data: -0.30992957949638367
float_data: 0.35575729608535767
float_data: -0.46826308965682983
float_data: 1.1741459369659424
float_data: -2.4147889614105225
float_data: -0.42783254384994507
float_data: -0.821994960308075
float_data: -0.03900860995054245
float_data: -0.43670088052749634
float_data: -0.5381056666374207
float_data: -0.10769882798194885
float_data: 0.7524239420890808
float_data: -0.2507970929145813
float_data: 1.044718623161316
float_data: -1.4777363538742065
float_data: 0.1999327391386032
float_data: 0.9256489872932434
float_data: -2.2825160026550293
float_data: 0.9503963589668274
float_data: 1.5379830598831177
float_data: -0.8857600688934326
float_data: 0.2856624722480774
float_data: 0.7929264307022095
float_data: -0.042619530111551285
name: "const_tensor_W"
}
type: TENSOR
}
}
node {
output: "R"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1
dims: 15
dims: 5
data_type: 1
float_data: 0.8490582704544067
float_data: 0.45121243596076965
float_data: -1.179901361465454
float_data: 0.13536448776721954
float_data: 0.813286542892456
float_data: 0.6017516255378723
float_data: 0.4847572445869446
float_data: -1.2136037349700928
float_data: 0.16383321583271027
float_data: 1.5106260776519775
float_data: 1.1177502870559692
float_data: 0.2358246147632599
float_data: 0.575465202331543
float_data: 0.4387988746166229
float_data: 0.7399293780326843
float_data: 0.4517557919025421
float_data: 1.3536783456802368
float_data: -0.4843165874481201
float_data: -1.1503735780715942
float_data: -0.2458678036928177
float_data: 0.5452331304550171
float_data: -0.08649992942810059
float_data: -0.6936280727386475
float_data: 1.0024219751358032
float_data: -1.770846962928772
float_data: -0.9464200139045715
float_data: -1.8135757446289062
float_data: 1.8819851875305176
float_data: -0.10852333158254623
float_data: -0.2612033188343048
float_data: 1.0223164558410645
float_data: -0.7468836903572083
float_data: 0.2856690585613251
float_data: 0.9232105612754822
float_data: 0.22521863877773285
float_data: 1.112382411956787
float_data: -0.9298287034034729
float_data: 1.214128851890564
float_data: 1.3470555543899536
float_data: -0.329720139503479
float_data: -1.6552196741104126
float_data: -1.0998284816741943
float_data: 0.7190186381340027
float_data: 0.9628459811210632
float_data: -0.1366851031780243
float_data: -2.6534476280212402
float_data: -1.499277114868164
float_data: -0.4579346477985382
float_data: 0.42904770374298096
float_data: 0.9893150925636292
float_data: 0.25110340118408203
float_data: 0.1290646195411682
float_data: 0.7491511702537537
float_data: 0.33167558908462524
float_data: 1.0576645135879517
float_data: -0.0461866594851017
float_data: 1.3556088209152222
float_data: 1.2842373847961426
float_data: 0.710301399230957
float_data: 0.5288901329040527
float_data: 0.303271621465683
float_data: 1.5069055557250977
float_data: 0.16591893136501312
float_data: 1.571985125541687
float_data: -2.0994269847869873
float_data: -1.0102770328521729
float_data: -0.5280092358589172
float_data: -0.22292351722717285
float_data: -0.5517747402191162
float_data: 1.3432893753051758
float_data: 0.8731191754341125
float_data: -0.010553070344030857
float_data: -0.0113821504637599
float_data: 0.8569884300231934
float_data: -1.2615703344345093
name: "const_tensor"
}
type: TENSOR
}
}
node {
output: "B"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1
dims: 30
data_type: 1
float_data: 0.53367018699646
float_data: 1.6593654155731201
float_data: -1.1500109434127808
float_data: 0.0034221699461340904
float_data: 0.7993710041046143
float_data: 0.43780383467674255
float_data: -0.5508262515068054
float_data: 1.0774186849594116
float_data: -0.606513500213623
float_data: 0.6434063911437988
float_data: -1.5693753957748413
float_data: 1.4923384189605713
float_data: 1.1554348468780518
float_data: -1.328158974647522
float_data: 0.24995532631874084
float_data: 0.15112681686878204
float_data: -0.3469875752925873
float_data: -0.100888192653656
float_data: -0.2931624948978424
float_data: -0.4731961488723755
float_data: 0.6616785526275635
float_data: -1.1646721363067627
float_data: -0.09588219225406647
float_data: 0.5212928056716919
float_data: 0.37182366847991943
float_data: 0.27342286705970764
float_data: 1.1613404750823975
float_data: -0.7519622445106506
float_data: -1.514364242553711
float_data: 0.2060445249080658
name: "const_tensor"
}
type: TENSOR
}
}
node {
output: "sequence_lens"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 3
data_type: 6
int32_data: 2
int32_data: 3
int32_data: 4
name: "const_tensor"
}
type: TENSOR
}
}
node {
output: "initial_h"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1
dims: 3
dims: 5
data_type: 1
float_data: -0.484069287776947
float_data: -1.4054375886917114
float_data: 0.8453364372253418
float_data: -0.11608880013227463
float_data: -1.3724716901779175
float_data: 1.9782589673995972
float_data: -0.8500093817710876
float_data: -2.012040853500366
float_data: 0.8995963335037231
float_data: -0.5367941856384277
float_data: 0.2118847817182541
float_data: 1.760378360748291
float_data: 0.387529581785202
float_data: -0.06706901639699936
float_data: -1.4290835857391357
name: "const_tensor"
}
type: TENSOR
}
}
node {
input: "X"
input: "W"
input: "R"
input: "B"
input: "sequence_lens"
input: "initial_h"
output: "Y"
output: "Y_h"
op_type: "GRU"
attribute {
name: "hidden_size"
i: 5
type: INT
}
}
name: "test-model-gru"
input {
name: "X"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 4
}
dim {
dim_value: 3
}
dim {
dim_value: 2
}
}
}
}
}
output {
name: "Y"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 4
}
dim {
dim_value: 1
}
dim {
dim_value: 3
}
dim {
dim_value: 5
}
}
}
}
}
output {
name: "Y_h"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 1
}
dim {
dim_value: 3
}
dim {
dim_value: 5
}
}
}
}
}
}
opset_import {
domain: ""
version: 12
}

View File

@ -0,0 +1,227 @@
ir_version: 7
producer_name: "onnx-importer-test"
graph {
node {
output: "W"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1
dims: 15
dims: 2
data_type: 1
float_data: 0.31403765082359314
float_data: -0.16793324053287506
float_data: 1.3882579803466797
float_data: -0.690295398235321
float_data: -0.39940449595451355
float_data: -0.7833511233329773
float_data: -0.30992957949638367
float_data: 0.35575729608535767
float_data: -0.46826308965682983
float_data: 1.1741459369659424
float_data: -2.4147889614105225
float_data: -0.42783254384994507
float_data: -0.821994960308075
float_data: -0.03900860995054245
float_data: -0.43670088052749634
float_data: -0.5381056666374207
float_data: -0.10769882798194885
float_data: 0.7524239420890808
float_data: -0.2507970929145813
float_data: 1.044718623161316
float_data: -1.4777363538742065
float_data: 0.1999327391386032
float_data: 0.9256489872932434
float_data: -2.2825160026550293
float_data: 0.9503963589668274
float_data: 1.5379830598831177
float_data: -0.8857600688934326
float_data: 0.2856624722480774
float_data: 0.7929264307022095
float_data: -0.042619530111551285
name: "const_tensor_W"
}
type: TENSOR
}
}
node {
output: "R"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1
dims: 15
dims: 5
data_type: 1
float_data: 0.8490582704544067
float_data: 0.45121243596076965
float_data: -1.179901361465454
float_data: 0.13536448776721954
float_data: 0.813286542892456
float_data: 0.6017516255378723
float_data: 0.4847572445869446
float_data: -1.2136037349700928
float_data: 0.16383321583271027
float_data: 1.5106260776519775
float_data: 1.1177502870559692
float_data: 0.2358246147632599
float_data: 0.575465202331543
float_data: 0.4387988746166229
float_data: 0.7399293780326843
float_data: 0.4517557919025421
float_data: 1.3536783456802368
float_data: -0.4843165874481201
float_data: -1.1503735780715942
float_data: -0.2458678036928177
float_data: 0.5452331304550171
float_data: -0.08649992942810059
float_data: -0.6936280727386475
float_data: 1.0024219751358032
float_data: -1.770846962928772
float_data: -0.9464200139045715
float_data: -1.8135757446289062
float_data: 1.8819851875305176
float_data: -0.10852333158254623
float_data: -0.2612033188343048
float_data: 1.0223164558410645
float_data: -0.7468836903572083
float_data: 0.2856690585613251
float_data: 0.9232105612754822
float_data: 0.22521863877773285
float_data: 1.112382411956787
float_data: -0.9298287034034729
float_data: 1.214128851890564
float_data: 1.3470555543899536
float_data: -0.329720139503479
float_data: -1.6552196741104126
float_data: -1.0998284816741943
float_data: 0.7190186381340027
float_data: 0.9628459811210632
float_data: -0.1366851031780243
float_data: -2.6534476280212402
float_data: -1.499277114868164
float_data: -0.4579346477985382
float_data: 0.42904770374298096
float_data: 0.9893150925636292
float_data: 0.25110340118408203
float_data: 0.1290646195411682
float_data: 0.7491511702537537
float_data: 0.33167558908462524
float_data: 1.0576645135879517
float_data: -0.0461866594851017
float_data: 1.3556088209152222
float_data: 1.2842373847961426
float_data: 0.710301399230957
float_data: 0.5288901329040527
float_data: 0.303271621465683
float_data: 1.5069055557250977
float_data: 0.16591893136501312
float_data: 1.571985125541687
float_data: -2.0994269847869873
float_data: -1.0102770328521729
float_data: -0.5280092358589172
float_data: -0.22292351722717285
float_data: -0.5517747402191162
float_data: 1.3432893753051758
float_data: 0.8731191754341125
float_data: -0.010553070344030857
float_data: -0.0113821504637599
float_data: 0.8569884300231934
float_data: -1.2615703344345093
name: "const_tensor"
}
type: TENSOR
}
}
node {
input: "X"
input: "W"
input: "R"
output: "Y"
output: "Y_h"
op_type: "GRU"
attribute {
name: "clip"
f: 1.7519999742507935
type: FLOAT
}
attribute {
name: "direction"
s: "reverse"
type: STRING
}
attribute {
name: "hidden_size"
i: 5
type: INT
}
}
name: "test-model-gru"
input {
name: "X"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 4
}
dim {
dim_value: 3
}
dim {
dim_value: 2
}
}
}
}
}
output {
name: "Y"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 4
}
dim {
dim_value: 1
}
dim {
dim_value: 3
}
dim {
dim_value: 5
}
}
}
}
}
output {
name: "Y_h"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 1
}
dim {
dim_value: 3
}
dim {
dim_value: 5
}
}
}
}
}
}
opset_import {
domain: ""
version: 12
}

View File

@ -0,0 +1,223 @@
ir_version: 7
producer_name: "onnx-importer-test"
graph {
node {
output: "W"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1
dims: 15
dims: 2
data_type: 1
float_data: 0.31403765082359314
float_data: -0.16793324053287506
float_data: 1.3882579803466797
float_data: -0.690295398235321
float_data: -0.39940449595451355
float_data: -0.7833511233329773
float_data: -0.30992957949638367
float_data: 0.35575729608535767
float_data: -0.46826308965682983
float_data: 1.1741459369659424
float_data: -2.4147889614105225
float_data: -0.42783254384994507
float_data: -0.821994960308075
float_data: -0.03900860995054245
float_data: -0.43670088052749634
float_data: -0.5381056666374207
float_data: -0.10769882798194885
float_data: 0.7524239420890808
float_data: -0.2507970929145813
float_data: 1.044718623161316
float_data: -1.4777363538742065
float_data: 0.1999327391386032
float_data: 0.9256489872932434
float_data: -2.2825160026550293
float_data: 0.9503963589668274
float_data: 1.5379830598831177
float_data: -0.8857600688934326
float_data: 0.2856624722480774
float_data: 0.7929264307022095
float_data: -0.042619530111551285
name: "const_tensor_W"
}
type: TENSOR
}
}
node {
output: "R"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1
dims: 15
dims: 5
data_type: 1
float_data: 0.8490582704544067
float_data: 0.45121243596076965
float_data: -1.179901361465454
float_data: 0.13536448776721954
float_data: 0.813286542892456
float_data: 0.6017516255378723
float_data: 0.4847572445869446
float_data: -1.2136037349700928
float_data: 0.16383321583271027
float_data: 1.5106260776519775
float_data: 1.1177502870559692
float_data: 0.2358246147632599
float_data: 0.575465202331543
float_data: 0.4387988746166229
float_data: 0.7399293780326843
float_data: 0.4517557919025421
float_data: 1.3536783456802368
float_data: -0.4843165874481201
float_data: -1.1503735780715942
float_data: -0.2458678036928177
float_data: 0.5452331304550171
float_data: -0.08649992942810059
float_data: -0.6936280727386475
float_data: 1.0024219751358032
float_data: -1.770846962928772
float_data: -0.9464200139045715
float_data: -1.8135757446289062
float_data: 1.8819851875305176
float_data: -0.10852333158254623
float_data: -0.2612033188343048
float_data: 1.0223164558410645
float_data: -0.7468836903572083
float_data: 0.2856690585613251
float_data: 0.9232105612754822
float_data: 0.22521863877773285
float_data: 1.112382411956787
float_data: -0.9298287034034729
float_data: 1.214128851890564
float_data: 1.3470555543899536
float_data: -0.329720139503479
float_data: -1.6552196741104126
float_data: -1.0998284816741943
float_data: 0.7190186381340027
float_data: 0.9628459811210632
float_data: -0.1366851031780243
float_data: -2.6534476280212402
float_data: -1.499277114868164
float_data: -0.4579346477985382
float_data: 0.42904770374298096
float_data: 0.9893150925636292
float_data: 0.25110340118408203
float_data: 0.1290646195411682
float_data: 0.7491511702537537
float_data: 0.33167558908462524
float_data: 1.0576645135879517
float_data: -0.0461866594851017
float_data: 1.3556088209152222
float_data: 1.2842373847961426
float_data: 0.710301399230957
float_data: 0.5288901329040527
float_data: 0.303271621465683
float_data: 1.5069055557250977
float_data: 0.16591893136501312
float_data: 1.571985125541687
float_data: -2.0994269847869873
float_data: -1.0102770328521729
float_data: -0.5280092358589172
float_data: -0.22292351722717285
float_data: -0.5517747402191162
float_data: 1.3432893753051758
float_data: 0.8731191754341125
float_data: -0.010553070344030857
float_data: -0.0113821504637599
float_data: 0.8569884300231934
float_data: -1.2615703344345093
name: "const_tensor"
}
type: TENSOR
}
}
node {
input: "X"
input: "W"
input: "R"
output: "Y"
output: "Y_h"
op_type: "GRU"
attribute {
name: "direction"
s: "reverse"
type: STRING
}
attribute {
name: "hidden_size"
i: 5
type: INT
}
}
name: "test-model-gru"
input {
name: "X"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 4
}
dim {
dim_value: 3
}
dim {
dim_value: 2
}
}
}
}
}
output {
name: "Y"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 4
}
dim {
dim_value: 1
}
dim {
dim_value: 3
}
dim {
dim_value: 5
}
}
}
}
}
output {
name: "Y_h"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 1
}
dim {
dim_value: 3
}
dim {
dim_value: 5
}
}
}
}
}
}
opset_import {
domain: ""
version: 12
}

View File

@ -0,0 +1,146 @@
ir_version: 3
producer_name: "nGraph ONNX Importer"
graph {
node {
output: "W"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1
dims: 5
dims: 2
data_type: 1
float_data: 0.31403765
float_data: -0.16793324
float_data: 1.388258
float_data: -0.6902954
float_data: -0.3994045
float_data: -0.7833511
float_data: -0.30992958
float_data: 0.3557573
float_data: -0.4682631
float_data: 1.1741459
name: "W_tensor"
}
type: TENSOR
}
}
node {
output: "R"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1 # num_directions
dims: 5 # gates_count*hidden_size
dims: 5 # input_size
data_type: 1
float_data: -2.414789
float_data: -0.42783254
float_data: -0.82199496
float_data: -0.03900861
float_data: -0.43670088
float_data: -0.53810567
float_data: -0.10769883
float_data: 0.75242394
float_data: -0.2507971
float_data: 1.0447186
float_data: -1.4777364
float_data: 0.19993274
float_data: 0.925649
float_data: -2.282516
float_data: 0.95039636
float_data: 1.5379831
float_data: -0.88576007
float_data: 0.28566247
float_data: 0.79292643
float_data: -0.04261953
float_data: 0.8490583
float_data: 0.45121244
float_data: -1.1799014
float_data: 0.13536449
float_data: 0.81328654
name: "R_tensor"
}
type: TENSOR
}
}
node {
input: "X"
input: "W"
input: "R"
output: "Y"
output: "Y_h"
op_type: "RNN"
attribute {
name: "hidden_size"
i: 5
type: INT
}
}
name: "test_rnn_defaults"
input {
name: "X"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 4 # seq_length
}
dim {
dim_value: 3 # batch size
}
dim {
dim_value: 2 # input size
}
}
}
}
}
output {
name: "Y"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 4 # seq_length
}
dim {
dim_value: 1 # num_directions
}
dim {
dim_value: 3 # batch_size
}
dim {
dim_value: 5 # hidden_size
}
}
}
}
}
output {
name: "Y_h"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 1 # num_directions
}
dim {
dim_value: 3 # batch_size
}
dim {
dim_value: 5 # hidden_size
}
}
}
}
}
}
opset_import {
version: 9
}

View File

@ -0,0 +1,157 @@
ir_version: 7
producer_name: "onnx-importer-test"
graph {
node {
output: "W"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1
dims: 5
dims: 2
data_type: 1
float_data: 0.31403765082359314
float_data: -0.16793324053287506
float_data: 1.3882579803466797
float_data: -0.690295398235321
float_data: -0.39940449595451355
float_data: -0.7833511233329773
float_data: -0.30992957949638367
float_data: 0.35575729608535767
float_data: -0.46826308965682983
float_data: 1.1741459369659424
name: "const_tensor_W"
}
type: TENSOR
}
}
node {
output: "R"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1
dims: 5
dims: 5
data_type: 1
float_data: -2.4147889614105225
float_data: -0.42783254384994507
float_data: -0.821994960308075
float_data: -0.03900860995054245
float_data: -0.43670088052749634
float_data: -0.5381056666374207
float_data: -0.10769882798194885
float_data: 0.7524239420890808
float_data: -0.2507970929145813
float_data: 1.044718623161316
float_data: -1.4777363538742065
float_data: 0.1999327391386032
float_data: 0.9256489872932434
float_data: -2.2825160026550293
float_data: 0.9503963589668274
float_data: 1.5379830598831177
float_data: -0.8857600688934326
float_data: 0.2856624722480774
float_data: 0.7929264307022095
float_data: -0.042619530111551285
float_data: 0.8490582704544067
float_data: 0.45121243596076965
float_data: -1.179901361465454
float_data: 0.13536448776721954
float_data: 0.813286542892456
name: "const_tensor"
}
type: TENSOR
}
}
node {
input: "X"
input: "W"
input: "R"
output: "Y"
output: "Y_h"
op_type: "RNN"
attribute {
name: "activations"
strings: "Relu"
type: STRINGS
}
attribute {
name: "direction"
s: "forward"
type: STRING
}
attribute {
name: "hidden_size"
i: 5
type: INT
}
}
name: "test-model-rnn"
input {
name: "X"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 4
}
dim {
dim_value: 3
}
dim {
dim_value: 2
}
}
}
}
}
output {
name: "Y"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 4
}
dim {
dim_value: 1
}
dim {
dim_value: 3
}
dim {
dim_value: 5
}
}
}
}
}
output {
name: "Y_h"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 1
}
dim {
dim_value: 3
}
dim {
dim_value: 5
}
}
}
}
}
}
opset_import {
domain: ""
version: 12
}

View File

@ -0,0 +1,204 @@
ir_version: 7
producer_name: "onnx-importer-test"
graph {
node {
output: "W"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1
dims: 5
dims: 2
data_type: 1
float_data: 0.31403765082359314
float_data: -0.16793324053287506
float_data: 1.3882579803466797
float_data: -0.690295398235321
float_data: -0.39940449595451355
float_data: -0.7833511233329773
float_data: -0.30992957949638367
float_data: 0.35575729608535767
float_data: -0.46826308965682983
float_data: 1.1741459369659424
name: "const_tensor_W"
}
type: TENSOR
}
}
node {
output: "R"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1
dims: 5
dims: 5
data_type: 1
float_data: -2.4147889614105225
float_data: -0.42783254384994507
float_data: -0.821994960308075
float_data: -0.03900860995054245
float_data: -0.43670088052749634
float_data: -0.5381056666374207
float_data: -0.10769882798194885
float_data: 0.7524239420890808
float_data: -0.2507970929145813
float_data: 1.044718623161316
float_data: -1.4777363538742065
float_data: 0.1999327391386032
float_data: 0.9256489872932434
float_data: -2.2825160026550293
float_data: 0.9503963589668274
float_data: 1.5379830598831177
float_data: -0.8857600688934326
float_data: 0.2856624722480774
float_data: 0.7929264307022095
float_data: -0.042619530111551285
float_data: 0.8490582704544067
float_data: 0.45121243596076965
float_data: -1.179901361465454
float_data: 0.13536448776721954
float_data: 0.813286542892456
name: "const_tensor"
}
type: TENSOR
}
}
node {
output: "B"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1
dims: 10
data_type: 1
float_data: 0.6017516255378723
float_data: 0.4847572445869446
float_data: -1.2136037349700928
float_data: 0.16383321583271027
float_data: 1.5106260776519775
float_data: 1.1177502870559692
float_data: 0.2358246147632599
float_data: 0.575465202331543
float_data: 0.4387988746166229
float_data: 0.7399293780326843
name: "const_tensor"
}
type: TENSOR
}
}
node {
output: "initial_h"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1
dims: 3
dims: 5
data_type: 1
float_data: 0.4517557919025421
float_data: 1.3536783456802368
float_data: -0.4843165874481201
float_data: -1.1503735780715942
float_data: -0.2458678036928177
float_data: 0.5452331304550171
float_data: -0.08649992942810059
float_data: -0.6936280727386475
float_data: 1.0024219751358032
float_data: -1.770846962928772
float_data: -0.9464200139045715
float_data: -1.8135757446289062
float_data: 1.8819851875305176
float_data: -0.10852333158254623
float_data: -0.2612033188343048
name: "const_tensor"
}
type: TENSOR
}
}
node {
input: "X"
input: "W"
input: "R"
input: "B"
input: ""
input: "initial_h"
output: "Y"
output: "Y_h"
op_type: "RNN"
attribute {
name: "hidden_size"
i: 5
type: INT
}
}
name: "test-model-gru"
input {
name: "X"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 4
}
dim {
dim_value: 3
}
dim {
dim_value: 2
}
}
}
}
}
output {
name: "Y"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 4
}
dim {
dim_value: 1
}
dim {
dim_value: 3
}
dim {
dim_value: 5
}
}
}
}
}
output {
name: "Y_h"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 1
}
dim {
dim_value: 3
}
dim {
dim_value: 5
}
}
}
}
}
}
opset_import {
domain: ""
version: 12
}

View File

@ -0,0 +1,220 @@
ir_version: 7
producer_name: "onnx-importer-test"
graph {
node {
output: "W"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1
dims: 5
dims: 2
data_type: 1
float_data: 0.31403765082359314
float_data: -0.16793324053287506
float_data: 1.3882579803466797
float_data: -0.690295398235321
float_data: -0.39940449595451355
float_data: -0.7833511233329773
float_data: -0.30992957949638367
float_data: 0.35575729608535767
float_data: -0.46826308965682983
float_data: 1.1741459369659424
name: "const_tensor_W"
}
type: TENSOR
}
}
node {
output: "R"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1
dims: 5
dims: 5
data_type: 1
float_data: -2.4147889614105225
float_data: -0.42783254384994507
float_data: -0.821994960308075
float_data: -0.03900860995054245
float_data: -0.43670088052749634
float_data: -0.5381056666374207
float_data: -0.10769882798194885
float_data: 0.7524239420890808
float_data: -0.2507970929145813
float_data: 1.044718623161316
float_data: -1.4777363538742065
float_data: 0.1999327391386032
float_data: 0.9256489872932434
float_data: -2.2825160026550293
float_data: 0.9503963589668274
float_data: 1.5379830598831177
float_data: -0.8857600688934326
float_data: 0.2856624722480774
float_data: 0.7929264307022095
float_data: -0.042619530111551285
float_data: 0.8490582704544067
float_data: 0.45121243596076965
float_data: -1.179901361465454
float_data: 0.13536448776721954
float_data: 0.813286542892456
name: "const_tensor"
}
type: TENSOR
}
}
node {
output: "B"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1
dims: 10
data_type: 1
float_data: 0.6017516255378723
float_data: 0.4847572445869446
float_data: -1.2136037349700928
float_data: 0.16383321583271027
float_data: 1.5106260776519775
float_data: 1.1177502870559692
float_data: 0.2358246147632599
float_data: 0.575465202331543
float_data: 0.4387988746166229
float_data: 0.7399293780326843
name: "const_tensor"
}
type: TENSOR
}
}
node {
output: "sequence_lens"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 3
data_type: 6
int32_data: 2
int32_data: 3
int32_data: 4
name: "const_tensor"
}
type: TENSOR
}
}
node {
output: "initial_h"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1
dims: 3
dims: 5
data_type: 1
float_data: 0.4517557919025421
float_data: 1.3536783456802368
float_data: -0.4843165874481201
float_data: -1.1503735780715942
float_data: -0.2458678036928177
float_data: 0.5452331304550171
float_data: -0.08649992942810059
float_data: -0.6936280727386475
float_data: 1.0024219751358032
float_data: -1.770846962928772
float_data: -0.9464200139045715
float_data: -1.8135757446289062
float_data: 1.8819851875305176
float_data: -0.10852333158254623
float_data: -0.2612033188343048
name: "const_tensor"
}
type: TENSOR
}
}
node {
input: "X"
input: "W"
input: "R"
input: "B"
input: "sequence_lens"
input: "initial_h"
output: "Y"
output: "Y_h"
op_type: "RNN"
attribute {
name: "hidden_size"
i: 5
type: INT
}
}
name: "test-model-gru"
input {
name: "X"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 4
}
dim {
dim_value: 3
}
dim {
dim_value: 2
}
}
}
}
}
output {
name: "Y"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 4
}
dim {
dim_value: 1
}
dim {
dim_value: 3
}
dim {
dim_value: 5
}
}
}
}
}
output {
name: "Y_h"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 1
}
dim {
dim_value: 3
}
dim {
dim_value: 5
}
}
}
}
}
}
opset_import {
domain: ""
version: 12
}

View File

@ -0,0 +1,157 @@
ir_version: 7
producer_name: "onnx-importer-test"
graph {
node {
output: "W"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1
dims: 5
dims: 2
data_type: 1
float_data: 0.31403765082359314
float_data: -0.16793324053287506
float_data: 1.3882579803466797
float_data: -0.690295398235321
float_data: -0.39940449595451355
float_data: -0.7833511233329773
float_data: -0.30992957949638367
float_data: 0.35575729608535767
float_data: -0.46826308965682983
float_data: 1.1741459369659424
name: "const_tensor_W"
}
type: TENSOR
}
}
node {
output: "R"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1
dims: 5
dims: 5
data_type: 1
float_data: -2.4147889614105225
float_data: -0.42783254384994507
float_data: -0.821994960308075
float_data: -0.03900860995054245
float_data: -0.43670088052749634
float_data: -0.5381056666374207
float_data: -0.10769882798194885
float_data: 0.7524239420890808
float_data: -0.2507970929145813
float_data: 1.044718623161316
float_data: -1.4777363538742065
float_data: 0.1999327391386032
float_data: 0.9256489872932434
float_data: -2.2825160026550293
float_data: 0.9503963589668274
float_data: 1.5379830598831177
float_data: -0.8857600688934326
float_data: 0.2856624722480774
float_data: 0.7929264307022095
float_data: -0.042619530111551285
float_data: 0.8490582704544067
float_data: 0.45121243596076965
float_data: -1.179901361465454
float_data: 0.13536448776721954
float_data: 0.813286542892456
name: "const_tensor"
}
type: TENSOR
}
}
node {
input: "X"
input: "W"
input: "R"
output: "Y"
output: "Y_h"
op_type: "RNN"
attribute {
name: "clip"
f: 1.7519999742507935
type: FLOAT
}
attribute {
name: "direction"
s: "reverse"
type: STRING
}
attribute {
name: "hidden_size"
i: 5
type: INT
}
}
name: "test-model-rnn"
input {
name: "X"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 4
}
dim {
dim_value: 3
}
dim {
dim_value: 2
}
}
}
}
}
output {
name: "Y"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 4
}
dim {
dim_value: 1
}
dim {
dim_value: 3
}
dim {
dim_value: 5
}
}
}
}
}
output {
name: "Y_h"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 1
}
dim {
dim_value: 3
}
dim {
dim_value: 5
}
}
}
}
}
}
opset_import {
domain: ""
version: 12
}

View File

@ -0,0 +1,152 @@
ir_version: 7
producer_name: "onnx-importer-test"
graph {
node {
output: "W"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1
dims: 5
dims: 2
data_type: 1
float_data: 0.31403765082359314
float_data: -0.16793324053287506
float_data: 1.3882579803466797
float_data: -0.690295398235321
float_data: -0.39940449595451355
float_data: -0.7833511233329773
float_data: -0.30992957949638367
float_data: 0.35575729608535767
float_data: -0.46826308965682983
float_data: 1.1741459369659424
name: "const_tensor_W"
}
type: TENSOR
}
}
node {
output: "R"
op_type: "Constant"
attribute {
name: "value"
t {
dims: 1
dims: 5
dims: 5
data_type: 1
float_data: -2.4147889614105225
float_data: -0.42783254384994507
float_data: -0.821994960308075
float_data: -0.03900860995054245
float_data: -0.43670088052749634
float_data: -0.5381056666374207
float_data: -0.10769882798194885
float_data: 0.7524239420890808
float_data: -0.2507970929145813
float_data: 1.044718623161316
float_data: -1.4777363538742065
float_data: 0.1999327391386032
float_data: 0.9256489872932434
float_data: -2.2825160026550293
float_data: 0.9503963589668274
float_data: 1.5379830598831177
float_data: -0.8857600688934326
float_data: 0.2856624722480774
float_data: 0.7929264307022095
float_data: -0.042619530111551285
float_data: 0.8490582704544067
float_data: 0.45121243596076965
float_data: -1.179901361465454
float_data: 0.13536448776721954
float_data: 0.813286542892456
name: "const_tensor"
}
type: TENSOR
}
}
node {
input: "X"
input: "W"
input: "R"
output: "Y"
output: "Y_h"
op_type: "RNN"
attribute {
name: "direction"
s: "reverse"
type: STRING
}
attribute {
name: "hidden_size"
i: 5
type: INT
}
}
name: "test-model-rnn"
input {
name: "X"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 4
}
dim {
dim_value: 3
}
dim {
dim_value: 2
}
}
}
}
}
output {
name: "Y"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 4
}
dim {
dim_value: 1
}
dim {
dim_value: 3
}
dim {
dim_value: 5
}
}
}
}
}
output {
name: "Y_h"
type {
tensor_type {
elem_type: 1
shape {
dim {
dim_value: 1
}
dim {
dim_value: 3
}
dim {
dim_value: 5
}
}
}
}
}
}
opset_import {
domain: ""
version: 12
}

View File

@ -468,6 +468,51 @@ protected:
virtual void SetUp() override {}
};
NGRAPH_TEST_F(${BACKEND_NAME}, GRUSequenceOp, onnx_model_gru_defaults_fwd_const)
{
auto function = onnx_import::import_onnx_model(
file_util::path_join(SERIALIZED_ZOO, "onnx/gru_defaults_fwd_const.prototxt"));
auto test_case = test::TestCase<TestEngine>(function);
test_case.add_input<float>(in_X);
// Y
test_case.add_expected_output<float>(
Shape{4, 1, 3, 5},
std::vector<float>{
-0.3224981f, -0.44282594f, 0.7499796f, -0.12240417f, 0.12079421f, 0.02534253f,
0.02504562f, -0.0463777f, 0.01204534f, -0.01497037f, -0.04651929f, -0.6264307f,
0.7236632f, 0.06250653f, 0.02594197f, -0.06868916f, -0.5412897f, 0.49794048f,
0.22239858f, -0.11257736f, -0.23071964f, 0.26079988f, -0.07375772f, -0.21816255f,
0.18764113f, -0.5228772f, 0.00575754f, 0.2514028f, -0.58864325f, 0.49843538f,
-0.6129046f, -0.10794663f, 0.6544055f, -0.70105773f, 0.5397687f, -0.35791716f,
0.3885092f, -0.15291792f, -0.22324723f, 0.11557932f, -0.42112932f, 0.26772985f,
-0.38304564f, -0.05039781f, -0.5057976f, 0.5775348f, -0.6736855f, -0.20032284f,
0.03698462f, -0.7693824f, -0.5831348f, 0.25767964f, 0.7121098f, -0.35951245f,
0.39223647f, -0.6645166f, 0.37950075f, 0.59931314f, -0.4741001f, 0.21156166f,
});
// Y_h
test_case.add_expected_output<float>(Shape{1, 3, 5},
std::vector<float>{
0.5775348f,
-0.6736855f,
-0.20032284f,
0.03698462f,
-0.7693824f,
-0.5831348f,
0.25767964f,
0.7121098f,
-0.35951245f,
0.39223647f,
-0.6645166f,
0.37950075f,
0.59931314f,
-0.4741001f,
0.21156166f,
});
test_case.run(DEFAULT_FLOAT_TOLERANCE_BITS + 7);
}
NGRAPH_TEST_F(${BACKEND_NAME}, GRUSequenceOp, onnx_model_gru_defaults_fwd)
{
auto function = onnx_import::import_onnx_model(
@ -516,8 +561,51 @@ NGRAPH_TEST_F(${BACKEND_NAME}, GRUSequenceOp, onnx_model_gru_defaults_fwd)
test_case.run(DEFAULT_FLOAT_TOLERANCE_BITS + 7);
}
NGRAPH_TEST_F(${BACKEND_NAME}, GRUSequenceOp, onnx_model_gru_fwd_activations_const)
{
// activations: relu, sigmoid
auto function = onnx_import::import_onnx_model(file_util::path_join(
SERIALIZED_ZOO, "onnx/gru_fwd_activations_relu_sigmoid_const.prototxt"));
auto test_case = test::TestCase<TestEngine>(function);
test_case.add_input<float>(in_X);
// Y
test_case.add_expected_output<float>(
Shape{4, 1, 3, 5},
std::vector<float>{
0.30736187, 0.10271017, 0.91698503, 0.3471303, -0.0123809, 0.51264125, 0.51235366,
0.45471948, 0.50601995, 0.49260828, 0.4781971, 0.0668709, 0.89421916, 0.33762455,
-0.19021586, 0.6881336, 0.7331965, 0.8887774, 0.34048334, 0.38408905, 0.49962956,
0.2948451, 0.3651103, 0.33406913, 0.57418096, 0.49882296, 0.4321446, 0.97142136,
0.20714557, 0.66270787, 0.53192705, 0.46424377, 0.9647801, 0.19583187, 0.7362316,
0.48205143, -0.04748845, 0.27395952, 0.35897565, 0.5801568, 0.5889811, 0.36110958,
1.3433081, 0.29702073, 0.5709667, 0.936689, 0.84129435, 1.1782551, 0.23925206,
0.57521456, 0.43502977, -0.5664091, 0.6758457, 0.2958132, 0.70932186, 0.4411352,
-0.1717428, 1.7761463, 0.14413449, 0.73801273});
// Y_h
test_case.add_expected_output<float>(Shape{1, 3, 5},
std::vector<float>{0.936689,
0.84129435,
1.1782551,
0.23925206,
0.57521456,
0.43502977,
-0.5664091,
0.6758457,
0.2958132,
0.70932186,
0.4411352,
-0.1717428,
1.7761463,
0.14413449,
0.73801273});
test_case.run(DEFAULT_FLOAT_TOLERANCE_BITS + 5);
}
NGRAPH_TEST_F(${BACKEND_NAME}, GRUSequenceOp, onnx_model_gru_fwd_activations)
{
// activations: relu, hardsigmoid
auto function = onnx_import::import_onnx_model(
file_util::path_join(SERIALIZED_ZOO, "onnx/gru_fwd_activations.prototxt"));
@ -615,6 +703,49 @@ NGRAPH_TEST_F(${BACKEND_NAME}, GRUSequenceOp, onnx_model_gru_fwd_mixed_seq_len)
test_case.run(DEFAULT_FLOAT_TOLERANCE_BITS + 3);
}
NGRAPH_TEST_F(${BACKEND_NAME}, GRUSequenceOp, onnx_model_gru_fwd_mixed_seq_len_const)
{
auto function = onnx_import::import_onnx_model(
file_util::path_join(SERIALIZED_ZOO, "onnx/gru_fwd_mixed_seq_len_const.prototxt"));
auto test_case = test::TestCase<TestEngine>(function);
test_case.add_input<float>(in_X);
// Y
test_case.add_expected_output<float>(
Shape{4, 1, 3, 5},
std::vector<float>{
-0.9559332, 0.4372494, 0.9967716, -0.9079381, -1.2538278, 1.9265908,
-0.8437393, -1.2057271, -0.25887525, -0.52679026, -0.3619178, 0.67928517,
0.9486744, -0.12006134, -1.3862017, -0.98941356, 0.80389524, 0.97586197,
-0.9343586, -0.74858856, 1.797039, -0.7873732, -0.72469383, -0.5866635,
-0.42103744, -0.8406298, 0.85877097, 0.6349921, -0.55897295, -0.6168443,
0., 0., 0., 0., 0., 1.577129,
-0.6935871, -0.304804, -0.75392795, -0.20703818, -0.93796504, 0.9220495,
0.36017662, -0.7007159, 0.06962098, 0., 0., 0.,
0., 0., 0., 0., 0., 0.,
0., -0.96323603, 0.9265786, 0.54976916, -0.8037839, 0.73501444});
// Y_h
test_case.add_expected_output<float>(Shape{1, 3, 5},
std::vector<float>{-0.98941356,
0.80389524,
0.97586197,
-0.9343586,
-0.74858856,
1.577129,
-0.6935871,
-0.304804,
-0.75392795,
-0.20703818,
-0.96323603,
0.9265786,
0.54976916,
-0.8037839,
0.73501444});
test_case.run(DEFAULT_FLOAT_TOLERANCE_BITS + 3);
}
NGRAPH_TEST_F(${BACKEND_NAME}, GRUSequenceOp, onnx_model_gru_rev_clip)
{
auto function = onnx_import::import_onnx_model(
@ -663,6 +794,96 @@ NGRAPH_TEST_F(${BACKEND_NAME}, GRUSequenceOp, onnx_model_gru_rev_clip)
test_case.run(DEFAULT_FLOAT_TOLERANCE_BITS + 8);
}
NGRAPH_TEST_F(${BACKEND_NAME}, GRUSequenceOp, onnx_model_gru_rev_clip_const)
{
auto function = onnx_import::import_onnx_model(
file_util::path_join(SERIALIZED_ZOO, "onnx/gru_rev_clip_const.prototxt"));
auto test_case = test::TestCase<TestEngine>(function);
test_case.add_input<float>(in_X);
// Y
test_case.add_expected_output<float>(
Shape{4, 1, 3, 5},
std::vector<float>{
-0.50679326f, -0.8251296f, 0.7804218f, -0.1813852f, 0.00147036f, -0.18647355f,
0.38888037f, -0.07898733f, -0.05150563f, -0.23335457f, -0.21705005f, -0.2966391f,
0.67461425f, -0.1695634f, -0.09241624f, -0.10538863f, -0.6444952f, -0.01815936f,
-0.09695458f, -0.15107796f, -0.5036379f, 0.56125206f, 0.12785181f, -0.22290717f,
0.08662428f, -0.5849108f, 0.4789885f, -0.03569929f, -0.42043984f, 0.33464667f,
-0.01091215f, -0.42090097f, 0.24428985f, -0.6002675f, 0.27305228f, -0.35063627f,
0.3717615f, -0.00495788f, -0.00491725f, -0.27061304f, -0.3190831f, 0.3542383f,
-0.17784928f, -0.12995736f, -0.30778408f, 0.47168806f, -0.6330014f, -0.1905269f,
0.26708886f, -0.19741398f, -0.3995853f, -0.07459997f, 0.6749513f, -0.36566192f,
0.32173023f, -0.36364347f, 0.13916425f, 0.3908174f, -0.53085154f, 0.56740737f,
});
// Y_h
test_case.add_expected_output<float>(Shape{1, 3, 5},
std::vector<float>{
-0.50679326f,
-0.8251296f,
0.7804218f,
-0.1813852f,
0.00147036f,
-0.18647355f,
0.38888037f,
-0.07898733f,
-0.05150563f,
-0.23335457f,
-0.21705005f,
-0.2966391f,
0.67461425f,
-0.1695634f,
-0.09241624f,
});
test_case.run(DEFAULT_FLOAT_TOLERANCE_BITS + 8);
}
NGRAPH_TEST_F(${BACKEND_NAME}, GRUSequenceOp, onnx_model_gru_reverse_const)
{
auto function = onnx_import::import_onnx_model(
file_util::path_join(SERIALIZED_ZOO, "onnx/gru_reverse_const.prototxt"));
auto test_case = test::TestCase<TestEngine>(function);
test_case.add_input<float>(in_X);
// Y
test_case.add_expected_output<float>(
Shape{4, 1, 3, 5},
std::vector<float>{
-0.51097775f, -0.85767376f, 0.8065842f, -0.1832461f, -0.00109532f, -0.18766233f,
0.3910985f, -0.0617601f, -0.05733761f, -0.23259571f, -0.22787738f, -0.3715533f,
0.70320934f, -0.17635077f, -0.0972611f, -0.11218601f, -0.660165f, -0.03494868f,
-0.07503931f, -0.15422714f, -0.5053969f, 0.5710621f, 0.1448728f, -0.225453f,
0.07250313f, -0.5988957f, 0.48768237f, 0.00665835f, -0.42196327f, 0.2749501f,
-0.02106231f, -0.44533628f, 0.24044508f, -0.5907899f, 0.26883256f, -0.3462156f,
0.3782666f, 0.00699124f, -0.00378288f, -0.2990779f, -0.32031405f, 0.3363319f,
-0.1877775f, -0.10781199f, -0.40970552f, 0.47168806f, -0.6330014f, -0.1905269f,
0.26708886f, -0.19741398f, -0.3995853f, -0.07459997f, 0.691666f, -0.36566192f,
0.32173023f, -0.37267625f, 0.1103513f, 0.3908174f, -0.53085154f, 0.56740737f,
});
// Y_h
test_case.add_expected_output<float>(Shape{1, 3, 5},
std::vector<float>{
-0.51097775f,
-0.85767376f,
0.8065842f,
-0.1832461f,
-0.00109532f,
-0.18766233f,
0.3910985f,
-0.0617601f,
-0.05733761f,
-0.23259571f,
-0.22787738f,
-0.3715533f,
0.70320934f,
-0.17635077f,
-0.0972611f,
});
test_case.run(DEFAULT_FLOAT_TOLERANCE_BITS + 8);
}
NGRAPH_TEST_F(${BACKEND_NAME}, GRUSequenceOp, onnx_model_gru_reverse)
{
auto function = onnx_import::import_onnx_model(
@ -711,6 +932,51 @@ NGRAPH_TEST_F(${BACKEND_NAME}, GRUSequenceOp, onnx_model_gru_reverse)
test_case.run(DEFAULT_FLOAT_TOLERANCE_BITS + 8);
}
NGRAPH_TEST_F(${BACKEND_NAME}, GRUSequenceOp, onnx_model_gru_fwd_bias_initial_h_const)
{
auto function = onnx_import::import_onnx_model(
file_util::path_join(SERIALIZED_ZOO, "onnx/gru_fwd_bias_initial_h_const.prototxt"));
auto test_case = test::TestCase<TestEngine>(function);
test_case.add_input<float>(in_X);
// Y
test_case.add_expected_output<float>(
Shape{4, 1, 3, 5},
std::vector<float>{
-0.9559332f, 0.4372494f, 0.9967716f, -0.9079381f, -1.2538278f, 1.9265908f,
-0.8437393f, -1.2057271f, -0.25887525f, -0.52679026f, -0.3619178f, 0.67928517f,
0.9486744f, -0.12006134f, -1.3862017f, -0.98941356f, 0.80389524f, 0.97586197f,
-0.9343586f, -0.74858856f, 1.797039f, -0.7873732f, -0.72469383f, -0.5866635f,
-0.42103744f, -0.8406298f, 0.85877097f, 0.6349921f, -0.55897295f, -0.6168443f,
-0.99686503f, 0.87408733f, 0.87070423f, -0.9564345f, 0.52932394f, 1.577129f,
-0.6935871f, -0.304804f, -0.75392795f, -0.20703818f, -0.93796504f, 0.9220495f,
0.36017662f, -0.7007159f, 0.06962098f, -0.22581682f, 0.9119905f, -0.64628327f,
-0.79374063f, -0.82321495f, 1.2853851f, -0.6176347f, 0.6865668f, -0.85147655f,
0.0379298f, -0.96323603f, 0.9265786f, 0.54976916f, -0.8037839f, 0.73501444f,
});
// Y_h
test_case.add_expected_output<float>(Shape{1, 3, 5},
std::vector<float>{
-0.22581682f,
0.9119905f,
-0.64628327f,
-0.79374063f,
-0.82321495f,
1.2853851f,
-0.6176347f,
0.6865668f,
-0.85147655f,
0.0379298f,
-0.96323603f,
0.9265786f,
0.54976916f,
-0.8037839f,
0.73501444f,
});
test_case.run(DEFAULT_FLOAT_TOLERANCE_BITS + 5);
}
NGRAPH_TEST_F(${BACKEND_NAME}, GRUSequenceOp, onnx_model_gru_fwd_bias_initial_h)
{
auto function = onnx_import::import_onnx_model(
@ -761,6 +1027,52 @@ NGRAPH_TEST_F(${BACKEND_NAME}, GRUSequenceOp, onnx_model_gru_fwd_bias_initial_h)
test_case.run(DEFAULT_FLOAT_TOLERANCE_BITS + 4);
}
NGRAPH_TEST_F(${BACKEND_NAME}, GRUSequenceOp, onnx_model_gru_bidirectional_const)
{
auto function = onnx_import::import_onnx_model(
file_util::path_join(SERIALIZED_ZOO, "onnx/gru_bidirectional_const.prototxt"));
auto test_case = test::TestCase<TestEngine>(function);
test_case.add_input<float>(in_X);
// Y
test_case.add_expected_output<float>(
Shape{4, 2, 3, 5},
std::vector<float>{
-0.3224981f, -0.44282594f, 0.7499796f, -0.12240417f, 0.12079421f, 0.02534253f,
0.02504562f, -0.0463777f, 0.01204534f, -0.01497037f, -0.04651929f, -0.6264307f,
0.7236632f, 0.06250653f, 0.02594197f, 0.06575559f, 0.34565696f, -0.3178988f,
0.6183835f, -0.02136152f, 0.11640755f, -0.45138f, -0.64678776f, -0.09675756f,
-0.37742358f, 0.20918667f, -0.59024405f, -0.845524f, 0.60705113f, -0.6336088f,
-0.0833023f, -0.40062034f, 0.7579466f, -0.12340625f, 0.04415433f, -0.24662055f,
0.27420586f, -0.09122991f, -0.22768986f, 0.19980885f, -0.218649f, -0.5560231f,
0.56177044f, -0.25098884f, 0.15462328f, 0.02859182f, 0.22456945f, -0.16747908f,
-0.10665483f, 0.06054133f, 0.18795699f, -0.49318847f, -0.6660372f, -0.5589901f,
-0.42696574f, 0.25369287f, -0.7369056f, -0.73285f, -0.5750758f, -0.533177f,
-0.34549737f, -0.33324608f, 0.74590445f, -0.48038307f, 0.40253335f, -0.45753813f,
0.5987347f, -0.07046633f, -0.35819566f, 0.3916747f, -0.18096107f, -0.24415034f,
0.38435352f, -0.29881003f, 0.07738188f, -0.04626282f, -0.34389234f, 0.2419839f,
-0.01195046f, 0.12158976f, 0.1648429f, -0.4124067f, -0.4792929f, -0.498473f,
-0.28167045f, 0.19370168f, -0.6386781f, -0.42919028f, -0.47081998f, -0.2954276f,
0.47018337f, 0.01509789f, 0.43945605f, -0.31491262f, 0.14951898f, -0.7645583f,
0.2566264f, 0.7295435f, -0.5008343f, 0.57549477f, -0.50112087f, -0.11085765f,
0.5155622f, -0.5635352f, 0.54762024f, -0.26451954f, 0.17519262f, 0.5203082f,
0.6119683f, 0.01544304f, 0.11548323f, -0.14230084f, -0.2133323f, -0.3981219f,
-0.06852704f, 0.17058733f, -0.6941011f, -0.27862304f, -0.27050856f, -0.03864266f,
});
// Y_h
test_case.add_expected_output<float>(
Shape{2, 3, 5},
std::vector<float>{
0.47018337f, 0.01509789f, 0.43945605f, -0.31491262f, 0.14951898f, -0.7645583f,
0.2566264f, 0.7295435f, -0.5008343f, 0.57549477f, -0.50112087f, -0.11085765f,
0.5155622f, -0.5635352f, 0.54762024f, 0.06575559f, 0.34565696f, -0.3178988f,
0.6183835f, -0.02136152f, 0.11640755f, -0.45138f, -0.64678776f, -0.09675756f,
-0.37742358f, 0.20918667f, -0.59024405f, -0.845524f, 0.60705113f, -0.6336088f,
});
test_case.run(DEFAULT_FLOAT_TOLERANCE_BITS + 6);
}
NGRAPH_TEST_F(${BACKEND_NAME}, GRUSequenceOp, onnx_model_gru_bidirectional)
{
auto function = onnx_import::import_onnx_model(
@ -810,6 +1122,51 @@ NGRAPH_TEST_F(${BACKEND_NAME}, GRUSequenceOp, onnx_model_gru_bidirectional)
test_case.run(DEFAULT_FLOAT_TOLERANCE_BITS + 6);
}
NGRAPH_TEST_F(${BACKEND_NAME}, GRUSequenceOp, onnx_model_gru_fwd_linear_before_reset_const)
{
auto function = onnx_import::import_onnx_model(
file_util::path_join(SERIALIZED_ZOO, "onnx/gru_fwd_linear_before_reset_const.prototxt"));
auto test_case = test::TestCase<TestEngine>(function);
test_case.add_input<float>(in_X);
// Y
test_case.add_expected_output<float>(
Shape{4, 1, 3, 5},
std::vector<float>{
-0.32330805f, -0.06708707f, 0.9148428f, -0.5182527f, 0.15030569f, -0.29070354f,
0.20353599f, 0.36028495f, -0.5524303f, 0.15076958f, -0.3330416f, -0.2412689f,
0.90464234f, -0.46817362f, 0.08000847f, -0.63514394f, 0.25109228f, 0.7674645f,
-0.7781104f, -0.07633221f, -0.5679979f, 0.32793444f, 0.18232828f, -0.756521f,
0.07898282f, -0.7205035f, -0.02278003f, -0.14991446f, -0.86801296f, 0.4434091f,
-0.8497459f, 0.35516143f, 0.8932138f, -0.8957482f, 0.4693949f, -0.74337614f,
0.43600178f, 0.51654255f, -0.8376663f, -0.18606272f, -0.8050637f, 0.06592449f,
0.13366115f, -0.8945458f, -0.66395104f, 0.140306f, 0.42112982f, -0.15852913f,
-0.74940586f, -0.7907575f, -0.89268315f, 0.5274858f, 0.97432905f, -0.89276016f,
0.15256537f, -0.91766477f, 0.22483218f, 0.9143838f, -0.9442929f, 0.33684915f,
});
// Y_h
test_case.add_expected_output<float>(Shape{1, 3, 5},
std::vector<float>{
0.140306f,
0.42112982f,
-0.15852913f,
-0.74940586f,
-0.7907575f,
-0.89268315f,
0.5274858f,
0.97432905f,
-0.89276016f,
0.15256537f,
-0.91766477f,
0.22483218f,
0.9143838f,
-0.9442929f,
0.33684915f,
});
test_case.run(DEFAULT_FLOAT_TOLERANCE_BITS + 4);
}
NGRAPH_TEST_F(${BACKEND_NAME}, GRUSequenceOp, onnx_model_gru_fwd_linear_before_reset)
{
auto function = onnx_import::import_onnx_model(
@ -947,6 +1304,51 @@ protected:
virtual void SetUp() override {}
};
NGRAPH_TEST_F(${BACKEND_NAME}, RNNSequenceOp, onnx_model_rnn_defaults_fwd_const)
{
auto function = onnx_import::import_onnx_model(
file_util::path_join(SERIALIZED_ZOO, "onnx/rnn_defaults_fwd_const.prototxt"));
auto test_case = test::TestCase<TestEngine>(function);
test_case.add_input<float>(in_X);
// Y
test_case.add_expected_output<float>(
Shape{4, 1, 3, 5},
std::vector<float>{
0.02254748f, 0.15776646f, -0.8229023f, 0.19205809f, 0.76984656f, -0.00603169f,
-0.02861464f, 0.04512155f, -0.0011912f, -0.02572936f, -0.13703543f, -0.49651444f,
-0.78868157f, 0.3566854f, 0.8758509f, 0.20788848f, 0.13481987f, -0.756822f,
-0.121436f, 0.97542346f, 0.16959739f, 0.63496053f, 0.1245538f, -0.1970138f,
-0.56581646f, 0.8225869f, 0.9611373f, -0.42990375f, -0.22925597f, 0.2226491f,
0.08246052f, 0.9798831f, -0.13415998f, -0.5567714f, 0.78594816f, -0.34759718f,
0.11376679f, -0.07107389f, -0.5420871f, -0.58504283f, -0.96065646f, 0.18588805f,
-0.4870671f, -0.1475982f, 0.82456505f, -0.80264574f, -0.46370947f, 0.9719335f,
-0.7374159f, 0.94937694f, 0.8814341f, 0.67015004f, 0.21958017f, -0.8332769f,
-0.487742f, 0.9918536f, 0.99563396f, 0.94866276f, -0.98504806f, -0.42824882f,
});
// Y_h
test_case.add_expected_output<float>(Shape{1, 3, 5},
std::vector<float>{
-0.80264574f,
-0.46370947f,
0.9719335f,
-0.7374159f,
0.94937694f,
0.8814341f,
0.67015004f,
0.21958017f,
-0.8332769f,
-0.487742f,
0.9918536f,
0.99563396f,
0.94866276f,
-0.98504806f,
-0.42824882f,
});
test_case.run(DEFAULT_FLOAT_TOLERANCE_BITS + 4);
}
NGRAPH_TEST_F(${BACKEND_NAME}, RNNSequenceOp, onnx_model_rnn_defaults_fwd)
{
auto function = onnx_import::import_onnx_model(
@ -995,6 +1397,52 @@ NGRAPH_TEST_F(${BACKEND_NAME}, RNNSequenceOp, onnx_model_rnn_defaults_fwd)
test_case.run(DEFAULT_FLOAT_TOLERANCE_BITS + 4);
}
NGRAPH_TEST_F(${BACKEND_NAME}, RNNSequenceOp, onnx_model_rnn_fwd_activations_const)
{
auto function = onnx_import::import_onnx_model(
file_util::path_join(SERIALIZED_ZOO, "onnx/rnn_fwd_activations_const.prototxt"));
auto test_case = test::TestCase<TestEngine>(function);
test_case.add_input<float>(in_X);
// Y
test_case.add_expected_output<float>(
Shape{4, 1, 3, 5},
std::vector<float>{
0.02255133f, 0.15909529f, 0.f, 0.19447318f, 1.019951f, 0.f,
0.f, 0.04515222f, 0.f, 0.f, 0.f, 0.f,
0.f, 0.37308297f, 1.3576671f, 0.f, 1.015355f, 0.00543064f,
0.10311858f, 1.426765f, 0.13313684f, 0.769961f, 0.14377424f, 0.f,
0.f, 0.f, 2.9260807f, 0.5875195f, 0.f, 0.030334f,
0.f, 3.300393f, 0.97026074f, 0.f, 0.7796261f, 0.f,
0.6755121f, 0.1155303f, 0.f, 0.f, 0.f, 0.92621297f,
1.3119358f, 0.f, 0.03326398f, 0.f, 0.f, 2.4573548f,
0.f, 1.5695758f, 0.f, 1.1791289f, 0.f, 0.f,
0.34451577f, 0.f, 2.9556773f, 1.12296f, 0.f, 0.f,
});
// Y_h
test_case.add_expected_output<float>(Shape{1, 3, 5},
std::vector<float>{
0.f,
0.f,
2.4573548f,
0.f,
1.5695758f,
0.f,
1.1791289f,
0.f,
0.f,
0.34451577f,
0.f,
2.9556773f,
1.12296f,
0.f,
0.f,
});
test_case.run(DEFAULT_FLOAT_TOLERANCE_BITS + 3);
}
NGRAPH_TEST_F(${BACKEND_NAME}, RNNSequenceOp, onnx_model_rnn_fwd_activations)
{
auto function = onnx_import::import_onnx_model(
@ -1043,6 +1491,51 @@ NGRAPH_TEST_F(${BACKEND_NAME}, RNNSequenceOp, onnx_model_rnn_fwd_activations)
test_case.run(DEFAULT_FLOAT_TOLERANCE_BITS + 3);
}
NGRAPH_TEST_F(${BACKEND_NAME}, RNNSequenceOp, onnx_model_rnn_fwd_mixed_seq_len_const)
{
auto function = onnx_import::import_onnx_model(
file_util::path_join(SERIALIZED_ZOO, "onnx/rnn_fwd_mixed_seq_len_const.prototxt"));
auto test_case = test::TestCase<TestEngine>(function);
test_case.add_input<float>(in_X);
// Y
test_case.add_expected_output<float>(
Shape{4, 1, 3, 5},
std::vector<float>{
0.55277014f, 0.15672898f, -0.25152922f, -0.63345766f, 0.99974346f, 0.94002223f,
-0.97647303f, -0.9999884f, 0.9752002f, 0.97388494f, 0.9967754f, 0.96745205f,
0.7899921f, 0.92003024f, -0.43116868f, 0.11219919f, 0.895327f, 0.21749747f,
0.6617017f, 0.99962795f, 0.37670398f, 0.7918401f, -0.99966455f, 0.9961897f,
0.9995159f, -0.84224236f, 0.92083716f, -0.99834263f, 0.9435711f, 0.8485148f,
0.f, 0.f, 0.f, 0.f, 0.f, 0.75459063f,
0.8326433f, -0.99705976f, 0.62511444f, 0.99979305f, 0.99925995f, 0.94032586f,
-0.86841005f, -0.8692311f, 0.9974319f, 0.f, 0.f, 0.f,
0.f, 0.f, 0.f, 0.f, 0.f, 0.f,
0.f, -0.30979204f, 0.99138904f, -0.10645419f, -0.18203181f, 0.9996245f,
});
// Y_h
test_case.add_expected_output<float>(Shape{1, 3, 5},
std::vector<float>{
0.11219919f,
0.895327f,
0.21749747f,
0.6617017f,
0.99962795f,
0.75459063f,
0.8326433f,
-0.99705976f,
0.62511444f,
0.99979305f,
-0.30979204f,
0.99138904f,
-0.10645419f,
-0.18203181f,
0.9996245f,
});
test_case.run(DEFAULT_FLOAT_TOLERANCE_BITS + 3);
}
NGRAPH_TEST_F(${BACKEND_NAME}, RNNSequenceOp, onnx_model_rnn_fwd_mixed_seq_len)
{
auto function = onnx_import::import_onnx_model(
@ -1094,6 +1587,51 @@ NGRAPH_TEST_F(${BACKEND_NAME}, RNNSequenceOp, onnx_model_rnn_fwd_mixed_seq_len)
test_case.run(DEFAULT_FLOAT_TOLERANCE_BITS + 3);
}
NGRAPH_TEST_F(${BACKEND_NAME}, RNNSequenceOp, onnx_model_rnn_rev_clip_const)
{
auto function = onnx_import::import_onnx_model(
file_util::path_join(SERIALIZED_ZOO, "onnx/rnn_rev_clip_const.prototxt"));
auto test_case = test::TestCase<TestEngine>(function);
test_case.add_input<float>(in_X);
// Y
test_case.add_expected_output<float>(
Shape{4, 1, 3, 5},
std::vector<float>{
0.9416027f, 0.6461365f, -0.8407804f, -0.33646506f, 0.92833483f, -0.9416027f,
0.65075886f, 0.9416027f, -0.33576548f, -0.10364902f, -0.9416027f, -0.832458f,
-0.18187332f, 0.5103179f, 0.5227027f, -0.9416027f, -0.90681225f, -0.9416027f,
0.5091027f, 0.8053496f, 0.6005076f, 0.92147183f, 0.9416027f, -0.8985506f,
0.28120112f, 0.9416027f, 0.9416027f, 0.9416027f, -0.92463756f, -0.9416027f,
0.79248047f, 0.9416027f, -0.1611281f, 0.11231542f, -0.8230629f, -0.2566173f,
0.16398644f, -0.36077273f, -0.70470357f, 0.8011706f, -0.59314847f, -0.41942674f,
-0.20039755f, -0.6877927f, -0.13850075f, -0.26959598f, -0.8372509f, 0.15711153f,
0.3000977f, 0.53072214f, 0.25092757f, 0.82264745f, -0.72998637f, -0.13731742f,
0.17423475f, 0.43279397f, 0.9416027f, -0.2988227f, -0.4705984f, -0.74036705f,
});
// Y_h
test_case.add_expected_output<float>(Shape{1, 3, 5},
std::vector<float>{
0.9416027f,
0.6461365f,
-0.8407804f,
-0.33646506f,
0.92833483f,
-0.9416027f,
0.65075886f,
0.9416027f,
-0.33576548f,
-0.10364902f,
-0.9416027f,
-0.832458f,
-0.18187332f,
0.5103179f,
0.5227027f,
});
test_case.run(DEFAULT_FLOAT_TOLERANCE_BITS + 3);
}
NGRAPH_TEST_F(${BACKEND_NAME}, RNNSequenceOp, onnx_model_rnn_rev_clip)
{
auto function = onnx_import::import_onnx_model(
@ -1142,6 +1680,51 @@ NGRAPH_TEST_F(${BACKEND_NAME}, RNNSequenceOp, onnx_model_rnn_rev_clip)
test_case.run(DEFAULT_FLOAT_TOLERANCE_BITS + 3);
}
NGRAPH_TEST_F(${BACKEND_NAME}, RNNSequenceOp, onnx_model_rnn_reverse_const)
{
auto function = onnx_import::import_onnx_model(
file_util::path_join(SERIALIZED_ZOO, "onnx/rnn_reverse_const.prototxt"));
auto test_case = test::TestCase<TestEngine>(function);
test_case.add_input<float>(in_X);
// Y
test_case.add_expected_output<float>(
Shape{4, 1, 3, 5},
std::vector<float>{
0.9963336f, 0.63758683f, -0.82404625f, -0.38524252f, 0.9350034f, -0.9918621f,
0.67038023f, 0.9884596f, -0.32398474f, -0.15730727f, -0.9970634f, -0.831641f,
-0.19750828f, 0.5491314f, 0.5148814f, -0.9517943f, -0.9077764f, -0.9906229f,
0.4751265f, 0.81323147f, 0.6005076f, 0.92147183f, 0.9878793f, -0.8985506f,
0.28120112f, 0.97769725f, 0.95308435f, 0.9777889f, -0.9270168f, -0.9459193f,
0.79248047f, 0.99223363f, -0.1611281f, 0.11231542f, -0.8230629f, -0.2566173f,
0.16398644f, -0.36077273f, -0.70470357f, 0.8011706f, -0.59996057f, -0.42161822f,
-0.19564903f, -0.6991576f, -0.12754434f, -0.26959598f, -0.8372509f, 0.15711153f,
0.3000977f, 0.53072214f, 0.25092757f, 0.82264745f, -0.72998637f, -0.13731742f,
0.17423475f, 0.43279397f, 0.96632254f, -0.2988227f, -0.4705984f, -0.74036705f,
});
// Y_h
test_case.add_expected_output<float>(Shape{1, 3, 5},
std::vector<float>{
0.9963336f,
0.63758683f,
-0.82404625f,
-0.38524252f,
0.9350034f,
-0.9918621f,
0.67038023f,
0.9884596f,
-0.32398474f,
-0.15730727f,
-0.9970634f,
-0.831641f,
-0.19750828f,
0.5491314f,
0.5148814f,
});
test_case.run(DEFAULT_FLOAT_TOLERANCE_BITS + 3);
}
NGRAPH_TEST_F(${BACKEND_NAME}, RNNSequenceOp, onnx_model_rnn_reverse)
{
auto function = onnx_import::import_onnx_model(
@ -1190,6 +1773,51 @@ NGRAPH_TEST_F(${BACKEND_NAME}, RNNSequenceOp, onnx_model_rnn_reverse)
test_case.run(DEFAULT_FLOAT_TOLERANCE_BITS + 3);
}
NGRAPH_TEST_F(${BACKEND_NAME}, RNNSequenceOp, onnx_model_rnn_fwd_bias_initial_h_const)
{
auto function = onnx_import::import_onnx_model(
file_util::path_join(SERIALIZED_ZOO, "onnx/rnn_fwd_bias_initial_h_const.prototxt"));
auto test_case = test::TestCase<TestEngine>(function);
test_case.add_input<float>(in_X);
// Y
test_case.add_expected_output<float>(
Shape{4, 1, 3, 5},
std::vector<float>{
0.55277014f, 0.15672898f, -0.25152922f, -0.63345766f, 0.99974346f, 0.94002223f,
-0.97647303f, -0.9999884f, 0.9752002f, 0.97388494f, 0.9967754f, 0.96745205f,
0.7899921f, 0.92003024f, -0.43116868f, 0.11219919f, 0.895327f, 0.21749747f,
0.6617017f, 0.99962795f, 0.37670398f, 0.7918401f, -0.99966455f, 0.9961897f,
0.9995159f, -0.84224236f, 0.92083716f, -0.99834263f, 0.9435711f, 0.8485148f,
0.699257f, 0.9983405f, -0.87222385f, 0.05191362f, 0.9878634f, 0.75459063f,
0.8326433f, -0.99705976f, 0.62511444f, 0.99979305f, 0.99925995f, 0.94032586f,
-0.86841005f, -0.8692311f, 0.9974319f, -0.37055743f, -0.54580235f, -0.8618355f,
0.6927968f, 0.99997866f, 0.15482295f, 0.90996563f, -0.9992051f, 0.784014f,
0.9999677f, -0.30979204f, 0.99138904f, -0.10645419f, -0.18203181f, 0.9996245f,
});
// Y_h
test_case.add_expected_output<float>(Shape{1, 3, 5},
std::vector<float>{
-0.37055743f,
-0.54580235f,
-0.8618355f,
0.6927968f,
0.99997866f,
0.15482295f,
0.90996563f,
-0.9992051f,
0.784014f,
0.9999677f,
-0.30979204f,
0.99138904f,
-0.10645419f,
-0.18203181f,
0.9996245f,
});
test_case.run(DEFAULT_FLOAT_TOLERANCE_BITS + 5);
}
NGRAPH_TEST_F(${BACKEND_NAME}, RNNSequenceOp, onnx_model_rnn_fwd_bias_initial_h)
{
auto function = onnx_import::import_onnx_model(

View File

@ -208,6 +208,34 @@ onnx_model_range_positive_step
onnx_model_range_negative_step
onnx_dyn_shapes_slice_1_3d_input_21_axes_ends_max
# GRUCell/GRUSequence operation has a form that is not supported
# (Constant W, B, R inputs are required)
IE_CPU.onnx_model_gru_defaults_fwd
IE_CPU.onnx_model_gru_fwd_activations
IE_CPU.onnx_model_gru_fwd_mixed_seq_len
IE_CPU.onnx_model_gru_rev_clip
IE_CPU.onnx_model_gru_reverse
IE_CPU.onnx_model_gru_fwd_bias_initial_h
IE_CPU.onnx_model_gru_bidirectional
IE_CPU.onnx_model_gru_fwd_linear_before_reset
# RNNCell/RNNSequence operation has a form that is not supported
# (Constant W, B, R inputs are required)
IE_CPU.onnx_model_rnn_defaults_fwd
IE_CPU.onnx_model_rnn_fwd_activations
IE_CPU.onnx_model_rnn_fwd_mixed_seq_len
IE_CPU.onnx_model_rnn_rev_clip
IE_CPU.onnx_model_rnn_reverse
IE_CPU.onnx_model_rnn_fwd_bias_initial_h
IE_CPU.onnx_model_rnn_bidirectional
## RNN/GRU Sequence - seq_lengths are not supported
IE_CPU.onnx_model_rnn_fwd_mixed_seq_len
IE_CPU.onnx_model_rnn_fwd_mixed_seq_len_const
IE_CPU.onnx_model_gru_fwd_mixed_seq_len
IE_CPU.onnx_model_gru_fwd_mixed_seq_len_const
#-------------------------------------------------------------------------------
#
# nGraph backend unit tests
@ -1087,16 +1115,6 @@ IE_CPU.builder_opset1_collapse_dyn_shape
# 2.666666507720947266 is not close to 3 at index 1
# IE_CPU.interpolate_down_scales_const_linear
# GRUCell operation has a form that is not supported
onnx_model_gru_defaults_fwd
onnx_model_gru_fwd_activations
onnx_model_gru_fwd_mixed_seq_len
onnx_model_gru_rev_clip
onnx_model_gru_reverse
onnx_model_gru_fwd_bias_initial_h
onnx_model_gru_bidirectional
onnx_model_gru_fwd_linear_before_reset
# Not implemented Interpolate-4:
IE_CPU.onnx_model_round
IE_CPU.onnx_upsample9_scales_const_linear_infer
@ -1109,16 +1127,6 @@ IE_CPU.onnx_upsample9_scales_const_import_only
IE_CPU.onnx_empty_initializers_handling
IE_CPU.onnx_resize11_scales_nearest_asymmetric_floor_dynamic_sizes
# RNNCell operation has a form that is not supported
IE_CPU.onnx_model_rnn_defaults_fwd
IE_CPU.onnx_model_rnn_fwd_activations
IE_CPU.onnx_model_rnn_fwd_mixed_seq_len
IE_CPU.onnx_model_rnn_rev_clip
IE_CPU.onnx_model_rnn_reverse
IE_CPU.onnx_model_rnn_fwd_bias_initial_h
IE_CPU.onnx_model_rnn_bidirectional
IE_CPU.onnx_model_rnn_bidirectional_const
#-------------------------------------------------------------------------------
#
# Inference Engine GPU plugin excludes
@ -1462,3 +1470,4 @@ onnx_controlflow_loop_add_value_access_to_body_scope_exception
onnx_controlflow_loop_add_value_the_same_node_from_parent_and_subgraph
onnx_controlflow_loop_2d_add_exception_if_no_identity_cond
onnx_controlflow_loop_2d_add_const_cond

View File

@ -115,6 +115,12 @@ INTERPRETER.onnx_model_gatherND_float
# Round op doesn't support some specific cases of rounding
onnx_model_round_half_nearest_even
# GRU/RNN Sequence: Output values mismatch - seq_lengths not supported
onnx_model_gru_fwd_mixed_seq_len
onnx_model_gru_fwd_mixed_seq_len_const
onnx_model_rnn_fwd_mixed_seq_len
onnx_model_rnn_fwd_mixed_seq_len_const
# Unsupported op 'LSTMSequence': not FusedOp anymore, no reference implementation yet
onnx_model_lstm_fwd_with_clip

View File

@ -205,6 +205,8 @@ std::set<NodeTypeInfo> test::IE_Engine::get_ie_ops() const
ie_ops.insert(opset3.begin(), opset3.end());
const auto& opset4 = get_opset4().get_type_info_set();
ie_ops.insert(opset4.begin(), opset4.end());
const auto& opset5 = get_opset5().get_type_info_set();
ie_ops.insert(opset5.begin(), opset5.end());
return ie_ops;
}