Cnnnetwork add layer (#1124)
authorIlya Lavrenov <ilya.lavrenov@intel.com>
Mon, 29 Jun 2020 13:21:48 +0000 (16:21 +0300)
committerGitHub <noreply@github.com>
Mon, 29 Jun 2020 13:21:48 +0000 (16:21 +0300)
* Removed addLayer from public interface

* Convert to CNNNetworkImpl

inference-engine/include/ie_icnn_network.hpp
inference-engine/src/inference_engine/cnn_network_ngraph_impl.hpp
inference-engine/src/legacy_api/include/cnn_network_impl.hpp
inference-engine/src/legacy_api/src/net_pass.cpp
inference-engine/src/low_precision_transformations/src/network_helper.cpp
inference-engine/src/mkldnn_plugin/mkldnn_plugin.cpp
inference-engine/src/multi_device/multi_device.cpp
inference-engine/src/plugin_api/cpp_interfaces/base/ie_executable_network_base.hpp
inference-engine/src/plugin_api/cpp_interfaces/base/ie_plugin_base.hpp
inference-engine/tests/ie_test_utils/unit_test_utils/mocks/mock_not_empty_icnn_network.hpp

index a2fff91..45ceea2 100644 (file)
@@ -106,15 +106,6 @@ public:
     virtual size_t layerCount() const noexcept = 0;
 
     /**
-     * @deprecated Migrate to IR v10 and work with ngraph::Function directly. The method will be removed in 2021.1
-     * @brief Insert a layer into the network. A user is responsible to connect it to other data elements.
-     *
-     * @param layer Const reference to a layer smart pointer
-     */
-    INFERENCE_ENGINE_DEPRECATED("Migrate to IR v10 and work with ngraph::Function directly. The method will be removed in 2021.1")
-    virtual void addLayer(const CNNLayerPtr& layer) noexcept = 0;
-
-    /**
      * @brief Adds output to the layer
      *
      * @param layerName Name of the layer
index 7bdbe8a..e955feb 100644 (file)
@@ -37,8 +37,6 @@ using ReshaperPtr = std::shared_ptr<Reshaper>;
 
 namespace details {
 
-IE_SUPPRESS_DEPRECATED_START
-
 /**
  * @brief Ngraph-based implementation of the ICNNNetwork interface.
  */
@@ -60,9 +58,7 @@ public:
 
     std::shared_ptr<ICNNNetwork> getCNNNetwork();
 
-    // This method is not really implemented; don't call it
-    INFERENCE_ENGINE_DEPRECATED("Use ngraph::Function directly")
-    void addLayer(const CNNLayerPtr& layer) noexcept override;
+    void addLayer(const CNNLayerPtr& layer) noexcept;
 
     // public version
     StatusCode setBatchSize(size_t size, ResponseDesc* responseDesc) noexcept override;
@@ -136,6 +132,8 @@ protected:
     }
 };
 
+IE_SUPPRESS_DEPRECATED_START
+
 /**
  * @brief Special derived class of Data which converts CNNNetworkNGraphImpl to CNNLayer-based representation
  * in case if a user called Data::getCreatorLayer or Data::getInputTo
@@ -172,6 +170,5 @@ private:
 
 IE_SUPPRESS_DEPRECATED_END
 
-typedef std::shared_ptr<CNNNetworkNGraphImpl> CNNNetworkNGraphImplPtr;
 }  // namespace details
 }  // namespace InferenceEngine
index 9967de2..efb0f4d 100644 (file)
@@ -26,8 +26,6 @@ using ReshaperPtr = std::shared_ptr<Reshaper>;
 }  // namespace ShapeInfer
 namespace details {
 
-IE_SUPPRESS_DEPRECATED_START
-
 class INFERENCE_ENGINE_API_CLASS(CNNNetworkImpl): public ICNNNetwork {
 public:
     CNNNetworkImpl();
@@ -89,7 +87,7 @@ public:
         return getData(name.c_str());
     }
 
-    void addLayer(const CNNLayerPtr& layer) noexcept override;
+    void addLayer(const CNNLayerPtr& layer) noexcept;
 
     void removeLayer(const std::string& layerName);
 
@@ -141,8 +139,6 @@ protected:
     ShapeInfer::ReshaperPtr _reshaper;
 };
 
-IE_SUPPRESS_DEPRECATED_END
-
 typedef std::shared_ptr<CNNNetworkImpl> CNNNetworkImplPtr;
 }  // namespace details
 }  // namespace InferenceEngine
index 3f8f6a4..a6f07f7 100644 (file)
@@ -17,6 +17,8 @@
 
 #include "blob_factory.hpp"
 #include "details/ie_cnn_network_tools.h"
+#include "cnn_network_impl.hpp"
+#include "cnn_network_ngraph_impl.hpp"
 #include "graph_tools.hpp"
 #include "ie_layers_internal.hpp"
 #include "ie_memcpy.h"
@@ -489,6 +491,10 @@ bool convertToRNNSeq(CNNLayerPtr cur, const N& net) {
 }
 
 bool unrollTI(CNNLayerPtr cur, ICNNNetwork& net) {
+    auto inet = dynamic_cast<details::CNNNetworkImpl*>(&net);
+    auto ngraphnet = dynamic_cast<details::CNNNetworkNGraphImpl*>(&net);
+    IE_ASSERT(inet != nullptr || ngraphnet != nullptr);
+
     if (cur->type != "TensorIterator") return true;
 
     auto ti = std::dynamic_pointer_cast<TensorIterator>(cur);
@@ -506,9 +512,10 @@ bool unrollTI(CNNLayerPtr cur, ICNNNetwork& net) {
 
         auto holder = body_list[i].inputs.back();
         if (holder->getPrecision() == Precision::UNSPECIFIED) {
-            IE_SUPPRESS_DEPRECATED_START
-            for (auto kvp : holder->getInputTo()) net.addLayer(kvp.second);
-            IE_SUPPRESS_DEPRECATED_END
+            for (auto kvp : holder->getInputTo()) {
+                if (inet) inet->addLayer(kvp.second);
+                else ngraphnet->addLayer(kvp.second);
+            }
         }
     }
 
@@ -1234,10 +1241,16 @@ std::vector<CNNLayerPtr> TopolSort(const details::CNNSubnet& net) {
 }
 
 void restore_net_consistency(ICNNNetwork& net) {
+    auto inet = dynamic_cast<details::CNNNetworkImpl*>(&net);
+    auto ngraphnet = dynamic_cast<details::CNNNetworkNGraphImpl*>(&net);
+    IE_ASSERT(inet != nullptr || ngraphnet != nullptr);
     // At first all layers should be available via findByName() api.
     // In other words all layers should be present in internal map<name, layer>
     IE_SUPPRESS_DEPRECATED_START
-    for (auto& l : TopolSort(net)) net.addLayer(l);
+    for (auto& l : TopolSort(net)) {
+        if (inet) inet->addLayer(l);
+        else ngraphnet->addLayer(l);
+    }
     IE_SUPPRESS_DEPRECATED_END
 }
 
index ec914df..a7b8a5e 100644 (file)
@@ -1025,9 +1025,7 @@ void CNNNetworkHelper::replaceLayer(TransformationContext& context, const CNNLay
         outData->getInputTo().clear();
     }
 
-    IE_SUPPRESS_DEPRECATED_START
-    context.network.addLayer(target);
-    IE_SUPPRESS_DEPRECATED_END
+    networkImpl->addLayer(target);
 }
 
 CNNLayerPtr CNNNetworkHelper::addScaleShiftBetween(TransformationContext& context, const CNNLayerPtr parent,
index 0a25198..ea19655 100644 (file)
@@ -275,8 +275,6 @@ void Engine::QueryNetwork(const ICNNNetwork& network, const std::map<std::string
     }
 }
 
-IE_SUPPRESS_DEPRECATED_START
-
 INFERENCE_PLUGIN_API(StatusCode) CreatePluginEngine(IInferencePlugin*& plugin, ResponseDesc *resp) noexcept {
     try {
         plugin = make_ie_compatible_plugin(
@@ -289,5 +287,3 @@ INFERENCE_PLUGIN_API(StatusCode) CreatePluginEngine(IInferencePlugin*& plugin, R
         return DescriptionBuffer(GENERAL_ERROR, resp) << ex.what();
     }
 }
-
-IE_SUPPRESS_DEPRECATED_END
index 225a378..3639384 100644 (file)
@@ -425,8 +425,6 @@ void MultiDeviceInferencePlugin::SetConfig(const std::map<std::string, std::stri
     }
 }
 
-IE_SUPPRESS_DEPRECATED_START
-
 INFERENCE_PLUGIN_API(InferenceEngine::StatusCode) CreatePluginEngine(
         InferenceEngine::IInferencePlugin *&plugin,
         InferenceEngine::ResponseDesc *resp) noexcept {
@@ -442,8 +440,6 @@ INFERENCE_PLUGIN_API(InferenceEngine::StatusCode) CreatePluginEngine(
     }
 }
 
-IE_SUPPRESS_DEPRECATED_END
-
 MultiDeviceInferencePlugin::MultiDeviceInferencePlugin() {
     _pluginName = "MULTI";
 }
index 0507b81..d700725 100644 (file)
@@ -26,7 +26,6 @@ namespace InferenceEngine {
  * @ingroup ie_dev_api_exec_network_api
  * @tparam T Minimal CPP implementation of IExecutableNetworkInternal (e.g. ExecutableNetworkInternal)
  */
-IE_SUPPRESS_DEPRECATED_START_WIN
 template <class T>
 class ExecutableNetworkBase : public IExecutableNetwork {
     std::shared_ptr<T> _impl;
@@ -111,8 +110,6 @@ private:
     ~ExecutableNetworkBase() = default;
 };
 
-IE_SUPPRESS_DEPRECATED_END_WIN
-
 template <class T>
 inline typename ExecutableNetworkBase<T>::Ptr make_executable_network(std::shared_ptr<T> impl) {
     typename ExecutableNetworkBase<T>::Ptr net(new ExecutableNetworkBase<T>(impl), [](IExecutableNetwork* p) {
index 0e983ba..a8e00c2 100644 (file)
@@ -21,8 +21,6 @@
 
 namespace InferenceEngine {
 
-IE_SUPPRESS_DEPRECATED_START
-
 /**
  * @brief Plugin `noexcept` wrapper which accepts IInferencePluginInternal derived instance which can throw exceptions
  * @ingroup ie_dev_api_plugin_api
@@ -30,8 +28,6 @@ IE_SUPPRESS_DEPRECATED_START
  */
 template <class T>
 class PluginBase : public IInferencePluginAPI, public IInferencePlugin {
-    IE_SUPPRESS_DEPRECATED_END
-
     class VersionStore : public Version {
         std::string _dsc;
         std::string _buildNumber;
@@ -146,13 +142,9 @@ private:
     ~PluginBase() override {}
 };
 
-IE_SUPPRESS_DEPRECATED_START
-
 template <class T>
 inline IInferencePlugin* make_ie_compatible_plugin(const Version& reported, std::shared_ptr<T> impl) {
     return new PluginBase<T>(reported, impl);
 }
 
-IE_SUPPRESS_DEPRECATED_END
-
 }  // namespace InferenceEngine
index 7d0c0db..2f080cb 100644 (file)
@@ -59,7 +59,6 @@ public:
 
         inputs[MockNotEmptyICNNNetwork::INPUT_BLOB_NAME] = inputInfo;
     };
-    void addLayer(const CNNLayerPtr& layer) noexcept override {}
     std::shared_ptr<ngraph::Function> getFunction() noexcept override {
         return nullptr;
     }