forked from openvinotoolkit/openvino
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_input_node.py
169 lines (134 loc) · 5.67 KB
/
test_input_node.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
# -*- coding: utf-8 -*-
# Copyright (C) 2018-2025 Intel Corporation
# SPDX-License-Identifier: Apache-2.0
import os
import numpy as np
from openvino import Input, RTMap
from openvino._pyopenvino import DescriptorTensor
import openvino.opset13 as ops
from openvino import Core, OVAny, Shape, PartialShape, Type, Tensor, Symbol
from tests.utils.helpers import get_relu_model
def test_input_type(device):
core = Core()
model = get_relu_model()
compiled_model = core.compile_model(model, device)
net_input = compiled_model.output(0)
input_node = net_input.get_node().inputs()[0]
assert isinstance(input_node, Input)
def test_const_output_docs(device):
core = Core()
model = get_relu_model()
compiled_model = core.compile_model(model, device)
net_input = compiled_model.output(0)
input_node = net_input.get_node().inputs()[0]
exptected_string = "openvino.Input wraps ov::Input<Node>"
assert input_node.__doc__ == exptected_string
def test_input_get_index(device):
core = Core()
model = get_relu_model()
compiled_model = core.compile_model(model, device)
net_input = compiled_model.output(0)
input_node = net_input.get_node().inputs()[0]
assert input_node.get_index() == 0
def test_input_element_type(device):
core = Core()
model = get_relu_model()
compiled_model = core.compile_model(model, device)
net_input = compiled_model.output(0)
input_node = net_input.get_node().inputs()[0]
assert input_node.get_element_type() == Type.f32
def test_input_get_shape(device):
core = Core()
model = get_relu_model()
compiled_model = core.compile_model(model, device)
net_input = compiled_model.output(0)
input_node = net_input.get_node().inputs()[0]
assert str(input_node.get_shape()) == str(Shape([1, 3, 32, 32]))
def test_input_get_partial_shape(device):
core = Core()
model = get_relu_model()
compiled_model = core.compile_model(model, device)
net_input = compiled_model.output(0)
input_node = net_input.get_node().inputs()[0]
expected_partial_shape = PartialShape([1, 3, 32, 32])
assert input_node.get_partial_shape() == expected_partial_shape
def test_input_get_source_output(device):
core = Core()
model = get_relu_model()
compiled_model = core.compile_model(model, device)
net_input = compiled_model.output(0)
input_node = net_input.get_node().inputs()[0]
name = input_node.get_source_output().get_node().get_friendly_name()
# Expected ReLu node name can be changed if conversion precision applied (new Convert node added)
assert name in ("relu", "relu.0")
def test_input_get_tensor(device):
core = Core()
model = get_relu_model()
compiled_model = core.compile_model(model, device)
net_input = compiled_model.output(0)
input_node = net_input.get_node().inputs()[0]
tensor = input_node.get_tensor()
assert isinstance(tensor, DescriptorTensor)
def test_input_get_rt_info(device):
core = Core()
model = get_relu_model()
compiled_model = core.compile_model(model, device)
net_input = compiled_model.output(0)
input_node = net_input.get_node().inputs()[0]
rt_info = input_node.get_rt_info()
assert isinstance(rt_info, RTMap)
def test_input_rt_info(device):
core = Core()
model = get_relu_model()
compiled_model = core.compile_model(model, device)
net_input = compiled_model.output(0)
input_node = net_input.get_node().inputs()[0]
rt_info = input_node.rt_info
assert isinstance(rt_info, RTMap)
def test_input_replace_source_output(device):
param = ops.parameter([1, 64], Type.i64)
param.output(0).get_tensor().set_names({"a", "b"})
param1 = ops.parameter([1, 64], Type.i64)
param1.output(0).get_tensor().set_names({"c", "d"})
relu = ops.relu(param)
relu.input(0).replace_source_output(param1.output(0))
assert param.output(0).get_tensor().get_names() == {"a", "b"}
assert param1.output(0).get_tensor().get_names() == {"c", "d"}
def test_input_update_rt_info(device):
core = Core()
model = get_relu_model()
compiled_model = core.compile_model(model, device)
net_input = compiled_model.output(0)
input_node = net_input.get_node().inputs()[0]
rt = input_node.get_rt_info()
rt["test12345"] = "test"
for key, value in input_node.get_rt_info().items():
assert key == "test12345"
assert isinstance(value, OVAny)
def test_tensor_bounds_in_model(device):
core = Core()
model = get_relu_model()
compiled_model = core.compile_model(model, device)
tensor = compiled_model.output(0).get_tensor()
partial_shape = tensor.get_partial_shape().to_shape()
tensor_size = np.prod(partial_shape)
lower_value = np.zeros(tensor_size, dtype=np.float32)
lower_value_tensor = Tensor(lower_value.reshape(partial_shape))
upper_value = np.ones(tensor_size, dtype=np.float32)
upper_value_tensor = Tensor(upper_value.reshape(partial_shape))
tensor.set_lower_value(lower_value_tensor)
retrieved_lower_value = tensor.get_lower_value().data
tensor.set_upper_value(upper_value_tensor)
retrieved_upper_value = tensor.get_upper_value().data
assert np.array_equal(retrieved_lower_value, lower_value_tensor.data)
assert np.array_equal(retrieved_upper_value, upper_value_tensor.data)
def test_value_symbol_in_model(device):
core = Core()
model = get_relu_model()
compiled_model = core.compile_model(model, device)
tensor = compiled_model.output(0).get_tensor()
partial_shape = tensor.get_partial_shape().to_shape()
tensor_size = np.prod(partial_shape)
values = [Symbol() for _ in range(tensor_size)]
tensor.set_value_symbol(values)
assert tensor.get_value_symbol() == values