-// Copyright (C) 2018 Intel Corporation
+// Copyright (C) 2018-2019 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
//
#include <memory>
#include <ie_layers.h>
+#include "shape_infer/const_infer/ie_const_infer_impl.hpp"
#include "shape_infer/built-in/ie_built_in_holder.hpp"
namespace InferenceEngine {
*/
virtual void setShapeByName(const SizeVector& shape, const std::string& dataName);
+ virtual void setBlobByName(const Blob::CPtr& blob, const std::string& dataName);
+
+ /**
+ * @brief Return calculated shape for data with requested name.
+ * @return Result shape
+ */
+ virtual SizeVector getShapeByName(const std::string& dataName);
+
/**
* @brief Set input shape from IR by Data name. If there's no Data with given name it throws exception
* @param dataName - name of the corresponding Data.
*/
virtual void reshape(const std::set<ReshapeLauncher::Ptr>& launchers);
+ virtual void constInfer(const std::set<ReshapeLauncher::Ptr>& launchers);
+
/**
* @brief Apply new input shapes, calculated output shapes and changed layer's params to CNNLayer and Data.
* @param layer - pointer to the layer for setting changes in layer's params
*/
virtual void reset();
- // TODO: use layer instead?
virtual std::string getLayerName() const;
virtual std::string getLayerType() const;
InputController* _iController = nullptr;
OutputController* _oController = nullptr;
const CNNLayer* _layer;
- IShapeInferImpl::Ptr _impl;
+ IShapeInferImpl::Ptr _reshapeImpl;
+ IConstInferImpl::Ptr _inferImpl;
protected:
/**
FakeReshapeLauncher(const CNNLayer* layer, const IShapeInferImpl::Ptr& impl);
void reshape(const std::set<ReshapeLauncher::Ptr>& launchers) override;
+
+ void constInfer(const std::set<ReshapeLauncher::Ptr>& launchers) override {}
};
class OutputOnlyInitializer : public DefaultInitializer {
void applyChanges(CNNLayer* layer) override;
void reset() override;
+
+ void setBlobByName(const Blob::CPtr& blob, const std::string& dataName) override;
+
+ void constInfer(const std::set<ReshapeLauncher::Ptr>& launchers) override;
};
class InputInitializer : public OutputOnlyInitializer {
OutMemoryReshapeLauncher(const CNNLayer* layer1, const IShapeInferImpl::Ptr& impl1);
- void reshape(const std::set<ReshapeLauncher::Ptr>& launchers) override;
+ void reshape(const std::set<ReshapeLauncher::Ptr>& launchers) override {}
void applyChanges(CNNLayer* layer) override;
void reset() override;
+
+ void constInfer(const std::set<ReshapeLauncher::Ptr>& launchers) override {}
};
} // namespace ShapeInfer