Reduce number of ops needed to create InstanceNorm (#1896)

* Reduce number of ops needed to create InstanceNorm

InstanceNorm in onnx importer creates the same subgraph for Mean twice - once for Variance and once for actual Mean.
This change makes InstanceNorm to use single Mean which is shared by numerator and Variance.

Also enables IE_CPU.onnx_model_instance_normalization test case

* Revert changes to .gitignore
This commit is contained in:
Mateusz Tabaka 2020-08-24 11:26:15 +02:00 committed by GitHub
parent c8aa3a7f2b
commit d7db4974f3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 9 deletions

View File

@ -97,10 +97,15 @@ namespace ngraph
std::make_shared<default_opset::Constant>(
data.get_element_type(), Shape{}, epsilon);
Output<ngraph::Node> mean = builder::opset1::mean(data, reduction_axes, true);
Output<ngraph::Node> variance =
builder::opset1::variance(data, reduction_axes, true);
auto mean =
std::make_shared<default_opset::ReduceMean>(data, reduction_axes, true);
auto diff = std::make_shared<default_opset::Subtract>(data, mean);
auto variance = std::make_shared<default_opset::ReduceMean>(
std::make_shared<default_opset::Power>(
diff,
default_opset::Constant::create(data.get_element_type(), Shape{}, {2})),
reduction_axes,
true);
const auto sqrt = std::make_shared<default_opset::Sqrt>(
std::make_shared<default_opset::Add>(variance, eps_node));
@ -128,10 +133,9 @@ namespace ngraph
std::make_shared<default_opset::Constant>(element::i64, Shape{1}, 1));
// scale * (data - mean) / sqrt + bias
std::shared_ptr<ngraph::Node> result{
std::make_shared<default_opset::Subtract>(data, mean)};
result = std::make_shared<default_opset::Multiply>(scale, result);
result = std::make_shared<default_opset::Divide>(result, sqrt);
std::shared_ptr<ngraph::Node> result =
std::make_shared<default_opset::Divide>(scale, sqrt);
result = std::make_shared<default_opset::Multiply>(diff, result);
result = std::make_shared<default_opset::Add>(result, bias);
return {result};

View File

@ -1056,7 +1056,6 @@ IE_CPU.fused_clamp_uint32
IE_CPU/FlattenTest.flatten
# Segfault
IE_CPU.onnx_model_instance_normalization
IE_CPU.onnx_model_reverse_sequence_1_batch_0
IE_CPU.onnx_model_reverse_sequence_0_batch_1
IE_CPU.cum_sum_2dim_default_axis