1 // Copyright (C) 2018 Intel Corporation
3 // SPDX-License-Identifier: Apache-2.0
8 #include <description_buffer.hpp>
9 #include <ie_layer_validators.hpp>
10 #include "impl_register.hpp"
11 #include <ie_layers.h>
17 namespace InferenceEngine {
18 namespace ShapeInfer {
21 *@brief Implementation of Shape inference for Permute layer
23 class PermuteShapeProp : public BuiltInShapeInferImpl {
25 explicit PermuteShapeProp(const std::string& type) : BuiltInShapeInferImpl(type) {}
27 void inferShapesImpl(const std::vector<SizeVector>& inShapes,
28 const std::map<std::string, std::string>& params,
29 const std::map<std::string, Blob::Ptr>& blobs,
30 std::vector<SizeVector>& outShapes) override {
32 CNNLayer permuteLayer(lp);
33 permuteLayer.params = params;
34 permuteLayer.type = _type;
35 validate(&permuteLayer, inShapes, params, blobs);
37 std::vector<size_t> order;
38 std::vector<int> layerOrder = permuteLayer.GetParamAsInts("order");
39 for (auto ord : layerOrder)
40 order.push_back(static_cast<size_t>(ord));
43 for (size_t i = 0; i < inShapes[0].size(); i++) {
44 outShape.push_back(inShapes[0][order[i]]);
46 outShapes.emplace_back(outShape);
50 } // namespace ShapeInfer
51 } // namespace InferenceEngine