Fixed SpaceToBatch and BatchToSpace for 3d case (#18033)
* Added functional tests for SpaceToBatch and BatchToSpace * Added functional tests for template plugin
This commit is contained in:
parent
deb6231329
commit
6be030be05
@ -102,7 +102,7 @@ bool ngraph::op::v1::SpaceToBatch::evaluate_space_to_batch(const HostTensorVecto
|
||||
|
||||
auto data_shape = data->get_shape();
|
||||
|
||||
if (!(data->get_shape().size() == 4 || data->get_shape().size() == 5)) {
|
||||
if (!(data->get_shape().size() == 3 || data->get_shape().size() == 4 || data->get_shape().size() == 5)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -31,7 +31,7 @@ static void CreateBatchToSpaceOp(Program& p, const std::shared_ptr<ngraph::op::v
|
||||
|
||||
std::vector<int32_t> sizes = inConst->cast_vector<int32_t>();
|
||||
int32_t default_size = i == 1 ? 1 : 0;
|
||||
for (size_t s = sizes.size(); s < rank; s++) {
|
||||
for (size_t s = sizes.size(); s < format.dimension(); s++) {
|
||||
sizes.push_back(default_size);
|
||||
}
|
||||
tensor_inputs.emplace_back(format, sizes, default_size);
|
||||
|
@ -31,7 +31,7 @@ static void CreateSpaceToBatchOp(Program& p, const std::shared_ptr<ngraph::op::v
|
||||
|
||||
std::vector<int32_t> sizes = inConst->cast_vector<int32_t>();
|
||||
int32_t default_size = i == 1 ? 1 : 0;
|
||||
for (size_t s = sizes.size(); s < rank; s++) {
|
||||
for (size_t s = sizes.size(); s < format.dimension(); s++) {
|
||||
sizes.push_back(default_size);
|
||||
}
|
||||
tensor_inputs.emplace_back(format, sizes, default_size);
|
||||
@ -41,14 +41,14 @@ static void CreateSpaceToBatchOp(Program& p, const std::shared_ptr<ngraph::op::v
|
||||
// To be removed once we enable internal shape infer for all operations
|
||||
auto out_size = output_pshape.is_static() ? tensor_from_dims(output_pshape.to_shape()) : cldnn::tensor();
|
||||
|
||||
auto batchToSpacePrim = cldnn::space_to_batch(layerName,
|
||||
auto spaceToBatchPrim = cldnn::space_to_batch(layerName,
|
||||
inputs[0], // input
|
||||
tensor_inputs[0], // block_shape
|
||||
tensor_inputs[1], // crops_begin
|
||||
tensor_inputs[2], // crops_end
|
||||
out_size);
|
||||
|
||||
p.add_primitive(*op, batchToSpacePrim);
|
||||
p.add_primitive(*op, spaceToBatchPrim);
|
||||
}
|
||||
|
||||
REGISTER_FACTORY_IMPL(v1, SpaceToBatch);
|
||||
|
@ -11,7 +11,17 @@ using namespace LayerTestsDefinitions;
|
||||
|
||||
namespace {
|
||||
auto bts_only_test_cases = []() {
|
||||
return std::vector<batchToSpaceParamsTuple>{batchToSpaceParamsTuple({1, 1, 2, 2},
|
||||
return std::vector<batchToSpaceParamsTuple>{batchToSpaceParamsTuple({1, 2, 2},
|
||||
{0, 0, 0},
|
||||
{0, 0, 0},
|
||||
{4, 1, 1},
|
||||
InferenceEngine::Precision::FP32,
|
||||
InferenceEngine::Precision::UNSPECIFIED,
|
||||
InferenceEngine::Precision::UNSPECIFIED,
|
||||
InferenceEngine::Layout::ANY,
|
||||
InferenceEngine::Layout::ANY,
|
||||
CommonTestUtils::DEVICE_GPU),
|
||||
batchToSpaceParamsTuple({1, 1, 2, 2},
|
||||
{0, 0, 0, 0},
|
||||
{0, 0, 0, 0},
|
||||
{4, 1, 1, 1},
|
||||
|
@ -13,6 +13,16 @@ namespace {
|
||||
|
||||
auto stb_only_test_cases = []() {
|
||||
return std::vector<spaceToBatchParamsTuple>{
|
||||
spaceToBatchParamsTuple({1, 2, 2},
|
||||
{0, 0, 0},
|
||||
{0, 0, 0},
|
||||
{1, 2, 2},
|
||||
InferenceEngine::Precision::FP32,
|
||||
InferenceEngine::Precision::UNSPECIFIED,
|
||||
InferenceEngine::Precision::UNSPECIFIED,
|
||||
InferenceEngine::Layout::ANY,
|
||||
InferenceEngine::Layout::ANY,
|
||||
CommonTestUtils::DEVICE_GPU),
|
||||
spaceToBatchParamsTuple({1, 1, 2, 2},
|
||||
{0, 0, 0, 0},
|
||||
{0, 0, 0, 0},
|
||||
|
@ -90,6 +90,15 @@ std::vector<BatchToSpaceParams> generateBatchToSpaceParams() {
|
||||
reference_tests::Tensor({2, 6}, IN_ET, std::vector<T>{1, 7, 2, 8, 3, 9, 4, 10, 5, 11, 6, 12}),
|
||||
"input_with_shape_4x3"),
|
||||
|
||||
// input_with_shape_4x1x3
|
||||
BatchToSpaceParams(
|
||||
reference_tests::Tensor({4, 1, 3}, IN_ET, std::vector<T>{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}),
|
||||
reference_tests::Tensor({3}, element::i64, std::vector<int64_t>{1, 1, 2}),
|
||||
reference_tests::Tensor({3}, element::i64, std::vector<int64_t>{0, 0, 0}),
|
||||
reference_tests::Tensor({3}, element::i64, std::vector<int64_t>{0, 0, 0}),
|
||||
reference_tests::Tensor({2, 1, 6}, IN_ET, std::vector<T>{1, 7, 2, 8, 3, 9, 4, 10, 5, 11, 6, 12}),
|
||||
"input_with_shape_4x1x3"),
|
||||
|
||||
// input_with_shape_4x1x1x3
|
||||
BatchToSpaceParams(
|
||||
reference_tests::Tensor({4, 1, 1, 3}, IN_ET, std::vector<T>{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}),
|
||||
|
@ -82,6 +82,15 @@ template <element::Type_t IN_ET>
|
||||
std::vector<SpaceToBatchParams> generateParams() {
|
||||
using T = typename element_type_traits<IN_ET>::value_type;
|
||||
std::vector<SpaceToBatchParams> batchToSpaceParams {
|
||||
// space_to_batch_3D
|
||||
SpaceToBatchParams(
|
||||
reference_tests::Tensor({1, 2, 2}, IN_ET, std::vector<T>{1, 1, 1, 1}),
|
||||
reference_tests::Tensor({3}, element::i64, std::vector<int64_t>{1, 1, 1}),
|
||||
reference_tests::Tensor({3}, element::i64, std::vector<int64_t>{0, 0, 0}),
|
||||
reference_tests::Tensor({3}, element::i64, std::vector<int64_t>{0, 0, 0}),
|
||||
reference_tests::Tensor({1, 2, 2}, IN_ET, std::vector<T>{1, 1, 1, 1}),
|
||||
"space_to_batch_4D"),
|
||||
|
||||
// space_to_batch_4D
|
||||
SpaceToBatchParams(
|
||||
reference_tests::Tensor({1, 1, 2, 2}, IN_ET, std::vector<T>{1, 1, 1, 1}),
|
||||
|
Loading…
Reference in New Issue
Block a user