[Python API] Remove IENetLayer class (#2755)
* [Python API] Remove IENetLayer class * fix tests * fix tests * remove importing ngraph from several tests
This commit is contained in:
parent
257bfc9944
commit
266f143cb2
@ -62,9 +62,6 @@ cdef class DataPtr:
|
||||
cdef class CDataPtr:
|
||||
cdef C.CDataPtr _ptr
|
||||
|
||||
cdef class IENetLayer:
|
||||
cdef C.CNNLayerPtr _ptr
|
||||
|
||||
cdef class TensorDesc:
|
||||
cdef C.CTensorDesc impl
|
||||
|
||||
|
@ -730,41 +730,6 @@ cdef class DataPtr:
|
||||
def initialized(self):
|
||||
return deref(self._ptr).isInitialized()
|
||||
|
||||
@property
|
||||
def creator_layer(self):
|
||||
warnings.warn("'creator_layer' property of DataPtr class is deprecated and is going to be removed in 2021.2.",
|
||||
DeprecationWarning)
|
||||
cdef C.CNNLayerWeakPtr _l_ptr
|
||||
cdef IENetLayer creator_layer
|
||||
|
||||
if self._ptr_network != NULL:
|
||||
deref(self._ptr_network).convertToOldRepresentation()
|
||||
_l_ptr = C.getCreatorLayer(self._ptr)
|
||||
|
||||
creator_layer = IENetLayer()
|
||||
if _l_ptr.lock() != NULL:
|
||||
creator_layer._ptr = _l_ptr.lock()
|
||||
else:
|
||||
raise RuntimeError("Creator IENetLayer of DataPtr object with name {} already released!".format(self.name))
|
||||
return creator_layer
|
||||
|
||||
@property
|
||||
def input_to(self):
|
||||
warnings.warn("'input_to' property of DataPtr class is deprecated and is going to be removed in 2021.2.",
|
||||
DeprecationWarning)
|
||||
cdef map[string, C.CNNLayerPtr] _l_ptr_map
|
||||
cdef IENetLayer input_to
|
||||
|
||||
if self._ptr_network != NULL:
|
||||
deref(self._ptr_network).convertToOldRepresentation()
|
||||
_l_ptr_map = C.getInputTo(self._ptr)
|
||||
|
||||
input_to_list = []
|
||||
for layer in _l_ptr_map:
|
||||
input_to = IENetLayer()
|
||||
input_to._ptr = layer.second
|
||||
input_to_list.append(input_to)
|
||||
return input_to_list
|
||||
|
||||
## This class is the layer constant data representation. Provides same interface as DataPtr object except properties setters
|
||||
cdef class CDataPtr:
|
||||
@ -1260,117 +1225,6 @@ cdef class InferRequest:
|
||||
self.input_blobs[k].buffer[:] = v
|
||||
|
||||
|
||||
## This class represents a main layer information and providing setters allowing to modify layer properties
|
||||
#
|
||||
# \note This class is deprecated: for working with layers, please, use nGraph Python API.
|
||||
# This class is going to be removed in 2021.2
|
||||
#
|
||||
cdef class IENetLayer:
|
||||
## Name of the layer
|
||||
@property
|
||||
def name(self):
|
||||
return deref(self._ptr).name.decode()
|
||||
|
||||
## Layer type
|
||||
@property
|
||||
def type(self):
|
||||
return deref(self._ptr).type.decode()
|
||||
|
||||
|
||||
## Layer affinity set by user or a default affinity may be setted using `IECore.query_network() method`
|
||||
# which returns dictionary {layer_name : device}.
|
||||
# The affinity attribute provides getter and setter interfaces, so the layer affinity can be modified directly.
|
||||
# For example:\n
|
||||
# ```python
|
||||
# ie = IECore()
|
||||
# net = ie.read_network(model=path_to_xml_file, weights=path_to_bin_file)
|
||||
# layers_map = ie.query_network(network=net, device_name="HETERO:GPU,CPU")
|
||||
# layers = net.layers
|
||||
# for layer, device in layers_map.items():
|
||||
# layers[layer].affinity = device
|
||||
# ```
|
||||
@property
|
||||
def affinity(self):
|
||||
return deref(self._ptr).affinity.decode()
|
||||
@affinity.setter
|
||||
def affinity(self, target_affinity):
|
||||
deref(self._ptr).affinity = target_affinity.encode()
|
||||
|
||||
## Layer specific parameters. Provides getter and setter interfaces to get and modify layer parameters.
|
||||
# Please note that some modifications can be ignored and/or overwritten by target plugin (e.g. modification of
|
||||
# convolution kernel size will be reflected in layer parameters but finally the plugin will ignore it and will
|
||||
# use initial kernel size)
|
||||
@property
|
||||
def params(self):
|
||||
return {k.decode(): v.decode() for k, v in deref(self._ptr).params}
|
||||
@params.setter
|
||||
def params(self, new_params):
|
||||
deref(self._ptr).params = dict_to_c_map(new_params)
|
||||
|
||||
## Returns a list, which contains names of layers preceding this layer
|
||||
@property
|
||||
def parents(self):
|
||||
cdef vector[C.DataWeakPtr] c_inputs = deref(self._ptr).insData
|
||||
parents = []
|
||||
for l in c_inputs:
|
||||
if l.lock() != NULL:
|
||||
parents.append(deref(l.lock()).getName().decode())
|
||||
else:
|
||||
raise RuntimeError("Input Data of layer {} already released!".format(self.name))
|
||||
return parents
|
||||
## Returns a list, which contains names of layers following this layer
|
||||
@property
|
||||
def children(self):
|
||||
cdef vector[C.DataPtr] c_outs = deref(self._ptr).outData
|
||||
children = []
|
||||
cdef map[string, C.CNNLayerPtr] _l_ptr_map
|
||||
input_to_list = []
|
||||
for l in c_outs:
|
||||
_l_ptr_map = C.getInputTo(l)
|
||||
for layer in _l_ptr_map:
|
||||
input_to_list.append(deref(layer.second).name.decode())
|
||||
return input_to_list
|
||||
|
||||
## Returns a list of DataPtr objects representing the output data of the layer on corresponding port
|
||||
@property
|
||||
def out_data(self):
|
||||
cdef vector[C.DataPtr] c_outputs = deref(self._ptr).outData
|
||||
cdef DataPtr data_ptr
|
||||
out_data = []
|
||||
for output in c_outputs:
|
||||
data_ptr = DataPtr()
|
||||
data_ptr._ptr = output
|
||||
out_data.append(data_ptr)
|
||||
return out_data
|
||||
## Returns a list of DataPtr objects representing the input data of the layer on corresponding port
|
||||
@property
|
||||
def in_data(self):
|
||||
cdef vector[C.DataWeakPtr] c_inputs = deref(self._ptr).insData
|
||||
cdef DataPtr data_ptr
|
||||
in_data = []
|
||||
for input in c_inputs:
|
||||
data_ptr = DataPtr()
|
||||
if input.lock() != NULL:
|
||||
data_ptr._ptr = input.lock()
|
||||
else:
|
||||
raise RuntimeError("Input Data of layer {} already released!".format(self.name))
|
||||
in_data.append(data_ptr)
|
||||
return in_data
|
||||
|
||||
## Dictionary with layer arbitrary layer blobs including weights and biases as any.
|
||||
@property
|
||||
def blobs(self):
|
||||
cdef map[string, CBlob.Ptr] c_blobs_map
|
||||
c_blobs_map = deref(self._ptr).blobs
|
||||
blobs_map = {}
|
||||
cdef BlobBuffer weights_buffer
|
||||
for blob in c_blobs_map:
|
||||
weights_buffer = BlobBuffer()
|
||||
weights_buffer.reset(blob.second)
|
||||
blobs_map[blob.first.decode()] = weights_buffer.to_numpy()
|
||||
return blobs_map
|
||||
|
||||
|
||||
## This class contains the information about the network model read from IR and allows you to manipulate with
|
||||
# some model parameters such as layers affinity and output layers.
|
||||
cdef class IENetwork:
|
||||
@ -1512,26 +1366,6 @@ cdef class IENetwork:
|
||||
raise AttributeError("Invalid batch size {}! Batch size should be positive integer value".format(batch))
|
||||
self.impl.setBatch(batch)
|
||||
|
||||
## \note The property is deprecated. Please use get_ops()/get_ordered_ops() methods
|
||||
# from nGraph Python API.
|
||||
# This property will be removed in 2021.2.
|
||||
#
|
||||
# Return dictionary that maps network layer names in topological order to IENetLayer
|
||||
# objects containing layer properties
|
||||
@property
|
||||
def layers(self):
|
||||
warnings.warn("'layers' property of IENetwork class is deprecated. "
|
||||
"For iteration over network please use get_ops()/get_ordered_ops() methods "
|
||||
"from nGraph Python API",
|
||||
DeprecationWarning)
|
||||
cdef vector[C.CNNLayerPtr] c_layers = self.impl.getLayers()
|
||||
layers = OrderedDict()
|
||||
cdef IENetLayer net_l
|
||||
for l in c_layers:
|
||||
net_l = IENetLayer()
|
||||
net_l._ptr = l
|
||||
layers[deref(l).name.decode()] = net_l
|
||||
return layers
|
||||
|
||||
## Marks any intermediate layer as output layer to retrieve the inference results from the specified layers.
|
||||
# @param outputs: List of layers to be set as model outputs. The list can contain strings with layer names to be set
|
||||
|
@ -5,8 +5,6 @@
|
||||
#include "ie_api_impl.hpp"
|
||||
#include "hetero/hetero_plugin_config.hpp"
|
||||
#include "ie_iinfer_request.hpp"
|
||||
#include <legacy/details/ie_cnn_network_tools.h>
|
||||
#include <legacy/cnn_network_impl.hpp>
|
||||
|
||||
const std::string EXPORTED_NETWORK_NAME = "undefined";
|
||||
std::map <std::string, InferenceEngine::Precision> precision_map = {{"FP32", InferenceEngine::Precision::FP32},
|
||||
@ -209,26 +207,6 @@ void InferenceEnginePython::IENetwork::serialize(const std::string &path_to_xml,
|
||||
actual->serialize(path_to_xml, path_to_bin);
|
||||
}
|
||||
|
||||
void InferenceEnginePython::IENetwork::convertToOldRepresentation() {
|
||||
if (actual->getFunction()) {
|
||||
// convert to old representation
|
||||
auto convertedNetwork = std::make_shared<InferenceEngine::details::CNNNetworkImpl>(*actual);
|
||||
actual = std::make_shared<InferenceEngine::CNNNetwork>(convertedNetwork);
|
||||
}
|
||||
}
|
||||
|
||||
const std::vector <InferenceEngine::CNNLayerPtr>
|
||||
InferenceEnginePython::IENetwork::getLayers() {
|
||||
convertToOldRepresentation();
|
||||
IE_SUPPRESS_DEPRECATED_START
|
||||
std::vector<InferenceEngine::CNNLayerPtr> result;
|
||||
std::vector<InferenceEngine::CNNLayerPtr> sorted_layers = InferenceEngine::details::CNNNetSortTopologically(*actual);
|
||||
for (const auto &layer : sorted_layers) {
|
||||
result.emplace_back(layer);
|
||||
}
|
||||
return result;
|
||||
IE_SUPPRESS_DEPRECATED_END
|
||||
}
|
||||
|
||||
PyObject* InferenceEnginePython::IENetwork::getFunction() {
|
||||
const char * py_capsule_name = "ngraph_function";
|
||||
|
@ -22,7 +22,6 @@
|
||||
#include <mutex>
|
||||
|
||||
#include <ie_extension.h>
|
||||
#include <legacy/ie_layers.h>
|
||||
#include <ie_core.hpp>
|
||||
|
||||
typedef std::chrono::high_resolution_clock Time;
|
||||
@ -51,8 +50,6 @@ struct IENetwork {
|
||||
|
||||
void addOutput(const std::string &out_layer, size_t port_id);
|
||||
|
||||
const std::vector <InferenceEngine::CNNLayerPtr> getLayers();
|
||||
|
||||
const std::map<std::string, InferenceEngine::InputInfo::Ptr> getInputsInfo();
|
||||
|
||||
const std::map<std::string, InferenceEngine::DataPtr> getInputs();
|
||||
|
@ -90,20 +90,6 @@ cdef extern from "<inference_engine.hpp>" namespace "InferenceEngine":
|
||||
@staticmethod
|
||||
const Precision FromStr(const string& str)
|
||||
|
||||
cdef cppclass CNNLayer:
|
||||
string name
|
||||
string type
|
||||
Precision precision
|
||||
vector[DataPtr] outData
|
||||
vector[DataWeakPtr] insData
|
||||
string affinity
|
||||
map[string, string] params
|
||||
map[string, CBlob.Ptr] blobs
|
||||
|
||||
ctypedef weak_ptr[CNNLayer] CNNLayerWeakPtr
|
||||
ctypedef shared_ptr[CNNLayer] CNNLayerPtr
|
||||
|
||||
|
||||
cdef struct apiVersion:
|
||||
int minor
|
||||
int major
|
||||
@ -141,10 +127,6 @@ cdef extern from "<inference_engine.hpp>" namespace "InferenceEngine":
|
||||
BLOCKED
|
||||
|
||||
|
||||
cdef extern from "<legacy/ie_layers.h>" namespace "InferenceEngine":
|
||||
cdef weak_ptr[CNNLayer] getCreatorLayer(const shared_ptr[Data] & data)
|
||||
map[string, shared_ptr[CNNLayer]] & getInputTo(const shared_ptr[Data] & data)
|
||||
|
||||
cdef extern from "ie_api_impl.hpp" namespace "InferenceEnginePython":
|
||||
|
||||
cdef cppclass ProfileInfo:
|
||||
@ -180,7 +162,6 @@ cdef extern from "ie_api_impl.hpp" namespace "InferenceEnginePython":
|
||||
size_t batch_size
|
||||
string precision
|
||||
map[string, vector[size_t]] inputs
|
||||
const vector[CNNLayerPtr] getLayers() except +
|
||||
const map[string, InputInfo.Ptr] getInputsInfo() except +
|
||||
const map[string, DataPtr] getInputs() except +
|
||||
map[string, DataPtr] getOutputs() except +
|
||||
|
@ -1,7 +1,6 @@
|
||||
import pytest
|
||||
import warnings
|
||||
|
||||
from openvino.inference_engine import IECore, IENetLayer, DataPtr
|
||||
from openvino.inference_engine import IECore, DataPtr
|
||||
from conftest import model_path
|
||||
|
||||
|
||||
@ -11,102 +10,33 @@ test_net_xml, test_net_bin = model_path()
|
||||
def layer_out_data():
|
||||
ie = IECore()
|
||||
net = ie.read_network(model=test_net_xml, weights=test_net_bin)
|
||||
return net.layers['19/Fused_Add_'].out_data[0]
|
||||
return net.outputs['fc_out']
|
||||
|
||||
|
||||
def test_name(recwarn):
|
||||
warnings.simplefilter("always")
|
||||
assert layer_out_data().name == "19/Fused_Add_", "Incorrect name for layer '19/Fused_Add_'"
|
||||
assert len(recwarn) == 1
|
||||
assert recwarn.pop(DeprecationWarning)
|
||||
def test_name():
|
||||
assert layer_out_data().name == 'fc_out', "Incorrect name for layer 'fc_out'"
|
||||
|
||||
|
||||
def test_precision(recwarn):
|
||||
warnings.simplefilter("always")
|
||||
assert layer_out_data().precision == "FP32", "Incorrect precision for layer '19/Fused_Add_'"
|
||||
assert len(recwarn) == 1
|
||||
assert recwarn.pop(DeprecationWarning)
|
||||
def test_precision():
|
||||
assert layer_out_data().precision == "FP32", "Incorrect precision for layer 'fc_out'"
|
||||
|
||||
|
||||
def test_precision_setter(recwarn):
|
||||
warnings.simplefilter("always")
|
||||
def test_precision_setter():
|
||||
ie = IECore()
|
||||
net = ie.read_network(model=test_net_xml, weights=test_net_bin)
|
||||
net.layers['19/Fused_Add_'].out_data[0].precision = "I8"
|
||||
assert net.layers['19/Fused_Add_'].out_data[0].precision == "I8", "Incorrect precision for layer '19/Fused_Add_'"
|
||||
assert len(recwarn) == 2
|
||||
assert recwarn.pop(DeprecationWarning)
|
||||
net.outputs['fc_out'].precision = "I8"
|
||||
assert net.outputs['fc_out'].precision == "I8", "Incorrect precision for layer 'fc_out'"
|
||||
|
||||
|
||||
def test_incorrect_precision_setter(recwarn):
|
||||
warnings.simplefilter("always")
|
||||
def test_incorrect_precision_setter():
|
||||
with pytest.raises(ValueError) as e:
|
||||
layer_out_data().precision = "123"
|
||||
assert "Unsupported precision 123! List of supported precisions:" in str(e.value)
|
||||
assert len(recwarn) == 1
|
||||
assert recwarn.pop(DeprecationWarning)
|
||||
|
||||
|
||||
def test_layout(recwarn):
|
||||
warnings.simplefilter("always")
|
||||
assert layer_out_data().layout == "NCHW", "Incorrect layout for layer '19/Fused_Add_'"
|
||||
assert len(recwarn) == 1
|
||||
assert recwarn.pop(DeprecationWarning)
|
||||
def test_layout():
|
||||
assert layer_out_data().layout == "NC", "Incorrect layout for layer 'fc_out'"
|
||||
|
||||
|
||||
def test_initialized(recwarn):
|
||||
warnings.simplefilter("always")
|
||||
assert layer_out_data().initialized, "Incorrect value for initialized property for layer '19/Fused_Add_'"
|
||||
assert len(recwarn) == 1
|
||||
assert recwarn.pop(DeprecationWarning)
|
||||
|
||||
|
||||
def test_input_to(recwarn):
|
||||
warnings.simplefilter("always")
|
||||
ie = IECore()
|
||||
net = ie.read_network(model=test_net_xml, weights=test_net_bin)
|
||||
input_to = net.layers['26'].out_data[0].input_to
|
||||
assert len(input_to) == 1
|
||||
assert input_to[0].name == '27'
|
||||
assert len(recwarn) == 2
|
||||
assert recwarn.pop(DeprecationWarning)
|
||||
|
||||
|
||||
def test_input_to_via_input_info(recwarn):
|
||||
warnings.simplefilter("always")
|
||||
ie = IECore()
|
||||
net = ie.read_network(model=test_net_xml, weights=test_net_bin)
|
||||
input_infos = net.input_info
|
||||
assert len(input_infos) == 1
|
||||
input_to = input_infos['data'].input_data.input_to
|
||||
assert len(input_to) == 1
|
||||
assert input_to[0].name == '19/Fused_Add_'
|
||||
assert len(recwarn) == 1
|
||||
assert recwarn.pop(DeprecationWarning)
|
||||
|
||||
|
||||
def test_input_to_via_inputs(recwarn):
|
||||
warnings.simplefilter("always")
|
||||
ie = IECore()
|
||||
net = ie.read_network(model=test_net_xml, weights=test_net_bin)
|
||||
inputs = net.inputs
|
||||
assert len(inputs) == 1
|
||||
input_to = inputs['data'].input_to
|
||||
assert len(input_to) == 1
|
||||
assert input_to[0].name == '19/Fused_Add_'
|
||||
assert len(recwarn) == 2
|
||||
assert recwarn.pop(DeprecationWarning)
|
||||
|
||||
|
||||
def test_creator_layer(recwarn):
|
||||
warnings.simplefilter("always")
|
||||
ie = IECore()
|
||||
net = ie.read_network(model=test_net_xml, weights=test_net_bin)
|
||||
outputs = net.outputs
|
||||
assert len(outputs) == 1
|
||||
creator_layer = outputs['fc_out'].creator_layer
|
||||
params = creator_layer.params
|
||||
params['originalLayersNames'] == 'fc_out'
|
||||
params['axis'] == '1'
|
||||
assert len(recwarn) == 1
|
||||
assert recwarn.pop(DeprecationWarning)
|
||||
def test_initialized():
|
||||
assert layer_out_data().initialized, "Incorrect value for initialized property for layer 'fc_out'"
|
||||
|
@ -51,15 +51,17 @@ def test_load_network_wrong_device():
|
||||
assert 'Device with "BLA" name is not registered in the InferenceEngine' in str(e.value)
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="IENetwork.layers return not all layers in case of ngraph representation due to inner conversion into legacy representation")
|
||||
def test_query_network(device, recwarn):
|
||||
def test_query_network(device):
|
||||
import ngraph as ng
|
||||
ie = IECore()
|
||||
net = ie.read_network(model=test_net_xml, weights=test_net_bin)
|
||||
query_res = ie.query_network(net, device)
|
||||
assert net.layers.keys() == query_res.keys(), "Not all network layers present in query_network results"
|
||||
func_net = ng.function_from_cnn(net)
|
||||
ops_net = func_net.get_ordered_ops()
|
||||
ops_net_names = [op.friendly_name for op in ops_net]
|
||||
assert [key for key in query_res.keys() if key not in ops_net_names] == [], \
|
||||
"Not all network layers present in query_network results"
|
||||
assert next(iter(set(query_res.values()))) == device, "Wrong device for some layers"
|
||||
assert len(recwarn) == 1
|
||||
assert recwarn.pop(DeprecationWarning)
|
||||
|
||||
|
||||
@pytest.mark.skipif(os.environ.get("TEST_DEVICE", "CPU") != "CPU", reason="Device independent test")
|
||||
@ -98,7 +100,6 @@ def test_unregister_plugin(device):
|
||||
assert 'Device with "{}" name is not registered in the InferenceEngine'.format(device) in str(e.value)
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="Need to figure out segmentation fault cause.")
|
||||
def test_available_devices(device):
|
||||
ie = IECore()
|
||||
devices = ie.available_devices
|
||||
@ -209,17 +210,19 @@ def test_read_net_from_buffer():
|
||||
assert isinstance(net, IENetwork)
|
||||
|
||||
|
||||
def test_net_from_buffer_valid(recwarn):
|
||||
def test_net_from_buffer_valid():
|
||||
ie = IECore()
|
||||
with open(test_net_bin, 'rb') as f:
|
||||
bin = f.read()
|
||||
with open(model_path()[0], 'rb') as f:
|
||||
xml = f.read()
|
||||
net = ie.read_network(model=xml, weights=bin, init_from_buffer=True)
|
||||
net2 = ie.read_network(model=test_net_xml, weights=test_net_bin)
|
||||
for name, layer in net.layers.items():
|
||||
for blob, data in layer.blobs.items():
|
||||
assert np.allclose(data, net2.layers[name].blobs[blob]), \
|
||||
"Incorrect weights for layer {} and blob {}".format(name, blob)
|
||||
assert len(recwarn) == 2
|
||||
assert recwarn.pop(DeprecationWarning)
|
||||
ref_net = ie.read_network(model=test_net_xml, weights=test_net_bin)
|
||||
assert net.name == ref_net.name
|
||||
assert net.batch_size == ref_net.batch_size
|
||||
ii_net = net.input_info
|
||||
ii_net2 = ref_net.input_info
|
||||
o_net = net.outputs
|
||||
o_net2 = ref_net.outputs
|
||||
assert ii_net.keys() == ii_net2.keys()
|
||||
assert o_net.keys() == o_net2.keys()
|
||||
|
@ -1,124 +0,0 @@
|
||||
import warnings
|
||||
import numpy
|
||||
|
||||
from openvino.inference_engine import DataPtr, IECore
|
||||
from conftest import model_path
|
||||
|
||||
|
||||
test_net_xml, test_net_bin = model_path()
|
||||
|
||||
|
||||
def test_name(recwarn):
|
||||
warnings.simplefilter("always")
|
||||
ie = IECore()
|
||||
net = ie.read_network(model=test_net_xml, weights=test_net_bin)
|
||||
assert net.layers['27'].name == "27"
|
||||
assert len(recwarn) == 1
|
||||
assert recwarn.pop(DeprecationWarning)
|
||||
|
||||
|
||||
def test_type(recwarn):
|
||||
warnings.simplefilter("always")
|
||||
ie = IECore()
|
||||
net = ie.read_network(model=test_net_xml, weights=test_net_bin)
|
||||
assert net.layers['27'].type == "Pooling"
|
||||
assert len(recwarn) == 1
|
||||
assert recwarn.pop(DeprecationWarning)
|
||||
|
||||
|
||||
def test_affinity_getter(recwarn):
|
||||
warnings.simplefilter("always")
|
||||
ie = IECore()
|
||||
net = ie.read_network(model=test_net_xml, weights=test_net_bin)
|
||||
assert net.layers['27'].affinity == ""
|
||||
assert len(recwarn) == 1
|
||||
assert recwarn.pop(DeprecationWarning)
|
||||
|
||||
|
||||
def test_affinity_setter(recwarn):
|
||||
warnings.simplefilter("always")
|
||||
ie = IECore()
|
||||
net = ie.read_network(model=test_net_xml, weights=test_net_bin)
|
||||
net.layers['27'].affinity = "CPU"
|
||||
assert net.layers['27'].affinity == "CPU"
|
||||
assert len(recwarn) == 2
|
||||
assert recwarn.pop(DeprecationWarning)
|
||||
|
||||
|
||||
def test_blobs(recwarn):
|
||||
warnings.simplefilter("always")
|
||||
ie = IECore()
|
||||
net = ie.read_network(model=test_net_xml, weights=test_net_bin)
|
||||
assert isinstance(net.layers['19/Fused_Add_'].blobs["biases"], numpy.ndarray)
|
||||
assert isinstance(net.layers['19/Fused_Add_'].blobs["weights"], numpy.ndarray)
|
||||
assert net.layers['19/Fused_Add_'].blobs["biases"].size != 0
|
||||
assert net.layers['19/Fused_Add_'].blobs["weights"].size != 0
|
||||
assert len(recwarn) == 4
|
||||
assert recwarn.pop(DeprecationWarning)
|
||||
|
||||
|
||||
def test_params_getter(recwarn):
|
||||
warnings.simplefilter("always")
|
||||
ie = IECore()
|
||||
net = ie.read_network(model=test_net_xml, weights=test_net_bin)
|
||||
assert net.layers['27'].params == {"kernel" : "2,2", "pads_begin" : "0,0",
|
||||
"pads_end" : "0,0", "rounding_type" : "floor",
|
||||
"strides" : "2,2", "pool-method" : "max",
|
||||
"originalLayersNames" : "27"}
|
||||
assert len(recwarn) == 1
|
||||
assert recwarn.pop(DeprecationWarning)
|
||||
|
||||
|
||||
def test_params_setter(recwarn):
|
||||
warnings.simplefilter("always")
|
||||
ie = IECore()
|
||||
net = ie.read_network(model=test_net_xml, weights=test_net_bin)
|
||||
params = net.layers['27'].params
|
||||
params.update({'PrimitivesPriority': 'cpu:ref_any'})
|
||||
net.layers['27'].params = params
|
||||
assert net.layers['27'].params == {"kernel" : "2,2", "pads_begin" : "0,0",
|
||||
"pads_end" : "0,0", "rounding_type" : "floor",
|
||||
"strides" : "2,2", "pool-method" : "max",
|
||||
"originalLayersNames" : "27", 'PrimitivesPriority': 'cpu:ref_any'}
|
||||
assert len(recwarn) == 3
|
||||
assert recwarn.pop(DeprecationWarning)
|
||||
|
||||
|
||||
def test_out_data(recwarn):
|
||||
warnings.simplefilter("always")
|
||||
ie = IECore()
|
||||
net = ie.read_network(model=test_net_xml, weights=test_net_bin)
|
||||
assert isinstance(net.layers['27'].out_data[0], DataPtr)
|
||||
assert len(recwarn) == 1
|
||||
assert recwarn.pop(DeprecationWarning)
|
||||
|
||||
|
||||
def test_in_data(recwarn):
|
||||
warnings.simplefilter("always")
|
||||
ie = IECore()
|
||||
net = ie.read_network(model=test_net_xml, weights=test_net_bin)
|
||||
assert isinstance(net.layers['27'].in_data[0], DataPtr)
|
||||
assert len(recwarn) == 1
|
||||
assert recwarn.pop(DeprecationWarning)
|
||||
|
||||
|
||||
def test_parents(recwarn):
|
||||
warnings.simplefilter("always")
|
||||
ie = IECore()
|
||||
net = ie.read_network(model=test_net_xml, weights=test_net_bin)
|
||||
parents = net.layers['27'].parents
|
||||
assert len(parents) == 1
|
||||
assert(parents[0] == '26')
|
||||
assert len(recwarn) == 1
|
||||
assert recwarn.pop(DeprecationWarning)
|
||||
|
||||
|
||||
def test_children(recwarn):
|
||||
warnings.simplefilter("always")
|
||||
ie = IECore()
|
||||
net = ie.read_network(model=test_net_xml, weights=test_net_bin)
|
||||
children = net.layers['26'].children
|
||||
assert len(children) == 1
|
||||
assert(children[0] == '27')
|
||||
assert len(recwarn) == 1
|
||||
assert recwarn.pop(DeprecationWarning)
|
@ -3,8 +3,7 @@ import pytest
|
||||
import warnings
|
||||
import numpy as np
|
||||
|
||||
from openvino.inference_engine import IECore, IENetwork, IENetLayer, DataPtr, \
|
||||
InputInfoPtr, PreProcessInfo
|
||||
from openvino.inference_engine import IECore, IENetwork, DataPtr, InputInfoPtr, PreProcessInfo
|
||||
from conftest import model_path
|
||||
|
||||
|
||||
@ -181,30 +180,12 @@ def test_batch_size_after_reshape():
|
||||
assert net.input_info['data'].input_data.shape == [8, 3, 32, 32]
|
||||
|
||||
|
||||
def test_layers(recwarn):
|
||||
warnings.simplefilter("always")
|
||||
ie = IECore()
|
||||
net = ie.read_network(model=test_net_xml, weights=test_net_bin)
|
||||
layers_name = [key for key in net.layers]
|
||||
assert sorted(layers_name) == ['19/Fused_Add_', '21', '22', '23', '24/Fused_Add_',
|
||||
'26', '27', '29', 'data', 'fc_out']
|
||||
assert isinstance(net.layers['19/Fused_Add_'], IENetLayer)
|
||||
assert len(recwarn) == 2
|
||||
assert recwarn.pop(DeprecationWarning)
|
||||
|
||||
|
||||
@pytest.mark.skip(reason="Test is failed due-to ngraph conversion")
|
||||
def test_serialize(recwarn):
|
||||
warnings.simplefilter("always")
|
||||
ie = IECore()
|
||||
net = ie.read_network(model=test_net_xml, weights=test_net_bin)
|
||||
net.serialize("./serialized_net.xml", "./serialized_net.bin")
|
||||
serialized_net = ie.read_network(model="./serialized_net.xml", weights="./serialized_net.bin")
|
||||
assert net.layers.keys() == serialized_net.layers.keys()
|
||||
os.remove("./serialized_net.xml")
|
||||
os.remove("./serialized_net.bin")
|
||||
assert len(recwarn) == 2
|
||||
assert recwarn.pop(DeprecationWarning)
|
||||
def test_serialize():
|
||||
with pytest.raises(RuntimeError) as excinfo:
|
||||
ie = IECore()
|
||||
net = ie.read_network(model=test_net_xml, weights=test_net_bin)
|
||||
net.serialize("./serialized_net.xml", "./serialized_net.bin")
|
||||
assert "The serialize for IR v10 is not implemented" in str(excinfo.value)
|
||||
|
||||
|
||||
def test_reshape():
|
||||
@ -228,18 +209,21 @@ def test_read_net_from_buffer_deprecated():
|
||||
|
||||
|
||||
def test_net_from_buffer_valid_deprecated():
|
||||
with warnings.catch_warnings(record=True) as w:
|
||||
with open(test_net_bin, 'rb') as f:
|
||||
bin = f.read()
|
||||
with open(test_net_xml, 'rb') as f:
|
||||
xml = f.read()
|
||||
net = IENetwork(model=xml, weights=bin, init_from_buffer=True)
|
||||
net2 = IENetwork(model=test_net_xml, weights=test_net_bin)
|
||||
for name, l in net.layers.items():
|
||||
for blob, data in l.blobs.items():
|
||||
assert np.allclose(data, net2.layers[name].blobs[blob]), \
|
||||
"Incorrect weights for layer {} and blob {}".format(name, blob)
|
||||
assert len(w) == 11
|
||||
ie = IECore()
|
||||
with open(test_net_bin, 'rb') as f:
|
||||
bin = f.read()
|
||||
with open(model_path()[0], 'rb') as f:
|
||||
xml = f.read()
|
||||
net = ie.read_network(model=xml, weights=bin, init_from_buffer=True)
|
||||
ref_net = ie.read_network(model=test_net_xml, weights=test_net_bin)
|
||||
assert net.name == ref_net.name
|
||||
assert net.batch_size == ref_net.batch_size
|
||||
ii_net = net.input_info
|
||||
ii_net2 = ref_net.input_info
|
||||
o_net = net.outputs
|
||||
o_net2 = ref_net.outputs
|
||||
assert ii_net.keys() == ii_net2.keys()
|
||||
assert o_net.keys() == o_net2.keys()
|
||||
|
||||
|
||||
def test_multi_out_data():
|
||||
|
@ -32,8 +32,6 @@ from tests import (xfail_issue_34323,
|
||||
xfail_issue_36479,
|
||||
xfail_issue_36480)
|
||||
|
||||
from openvino.inference_engine import IENetwork
|
||||
|
||||
|
||||
def test_ngraph_function_api():
|
||||
shape = [2, 2]
|
||||
@ -415,14 +413,3 @@ def test_runtime_info():
|
||||
runtime_info_after = relu_node.get_rt_info()
|
||||
|
||||
assert runtime_info_after["affinity"] == "test_affinity"
|
||||
|
||||
params = [test_param]
|
||||
results = [relu_node]
|
||||
|
||||
ng_function = Function(results, params, "testFunc")
|
||||
|
||||
capsule = Function.to_capsule(ng_function)
|
||||
cnn_network = IENetwork(capsule)
|
||||
cnn_layer = cnn_network.layers["testReLU"]
|
||||
assert cnn_layer is not None
|
||||
assert cnn_layer.affinity == "test_affinity"
|
||||
|
Loading…
Reference in New Issue
Block a user