def test_function_add_output_incorrect_tensor_name(): input_shape = PartialShape([1]) param = ops.parameter(input_shape, dtype=np.float32, name="data") relu1 = ops.relu(param, name="relu1") relu1.get_output_tensor(0).set_names({"relu_t1"}) relu2 = ops.relu(relu1, name="relu2") function = Model(relu2, [param], "TestFunction") assert len(function.get_results()) == 1 with pytest.raises(RuntimeError) as e: function.add_outputs("relu_t") assert "Tensor name relu_t was not found." in str(e.value)
def test_add_outputs_incorrect_value(): input_shape = PartialShape([1]) param = ops.parameter(input_shape, dtype=np.float32, name="data") relu1 = ops.relu(param, name="relu1") relu1.get_output_tensor(0).set_names({"relu_t1"}) relu2 = ops.relu(relu1, name="relu2") function = Model(relu2, [param], "TestFunction") assert len(function.get_results()) == 1 with pytest.raises(TypeError) as e: function.add_outputs(0) assert "Incorrect type of a value to add as output." in str(e.value)
def test_function_add_output_incorrect_name(): input_shape = PartialShape([1]) param = ops.parameter(input_shape, dtype=np.float32, name="data") relu1 = ops.relu(param, name="relu1") relu1.get_output_tensor(0).set_names({"relu_t1"}) relu2 = ops.relu(relu1, name="relu2") function = Model(relu2, [param], "TestFunction") assert len(function.get_results()) == 1 with pytest.raises(RuntimeError) as e: function.add_outputs(("relu_1", 0)) # Verify that absent op name is present in error message assert "relu_1" in str(e.value)
def test_get_result_index_invalid(): shape1 = PartialShape([1]) param1 = ops.parameter(shape1, dtype=np.float32, name="data1") relu1 = ops.relu(param1, name="relu1") function = Model(relu1, [param1], "TestFunction") shape2 = PartialShape([2]) param2 = ops.parameter(shape2, dtype=np.float32, name="data2") relu2 = ops.relu(param2, name="relu2") invalid_output = relu2.outputs()[0] assert len(function.outputs) == 1 assert function.get_result_index(invalid_output) == -1
def test_output_replace(device): param = ops.parameter([1, 64], Type.i64) param.output(0).get_tensor().set_names({"a", "b"}) relu = ops.relu(param) relu.output(0).get_tensor().set_names({"c", "d"}) new_relu = ops.relu(param) new_relu.output(0).get_tensor().set_names({"f"}) relu.output(0).replace(new_relu.output(0)) assert new_relu.output(0).get_tensor().get_names() == {"c", "d", "f"}
def test_function_add_output_incorrect_idx(): input_shape = PartialShape([1]) param = ops.parameter(input_shape, dtype=np.float32, name="data") relu1 = ops.relu(param, name="relu1") relu1.get_output_tensor(0).set_names({"relu_t1"}) relu2 = ops.relu(relu1, name="relu2") function = Model(relu2, [param], "TestFunction") assert len(function.get_results()) == 1 with pytest.raises(RuntimeError) as e: function.add_outputs(("relu1", 10)) assert "Cannot add output to port 10 operation relu1 has only 1 outputs." in str( e.value)
def create_function2(shape1=[2, 2], shape2=[2, 2], dtype1=np.float32, dtype2=np.float32): input1 = ops.parameter(shape1, dtype=dtype1, name="input1") input1.get_output_tensor(0).set_names({'input1', 'input1a'}) relu1 = ops.relu(input1) res1 = ops.result(relu1, "res1") res1.get_output_tensor(0).set_names({'res1', 'res1a'}) input2 = ops.parameter(shape2, dtype=dtype2, name="input2") input2.get_output_tensor(0).set_names({'input2', 'input2a'}) relu2 = ops.relu(input2) res2 = ops.result(relu2, "res2") res2.get_output_tensor(0).set_names({'res2', 'res2a'}) function = Model(results=[res1, res2], parameters=[input1, input2], name="TestFunction") return function
def test_function_add_output_port(): input_shape = PartialShape([1]) param = ops.parameter(input_shape, dtype=np.float32, name="data") relu1 = ops.relu(param, name="relu1") relu1.get_output_tensor(0).set_names({"relu_t1"}) relu2 = ops.relu(relu1, name="relu2") function = Model(relu2, [param], "TestFunction") assert len(function.get_results()) == 1 new_outs = function.add_outputs(relu1.output(0)) assert len(function.get_results()) == 2 assert len(new_outs) == 1 assert new_outs[0].get_node() == function.outputs[1].get_node() assert new_outs[0].get_index() == function.outputs[1].get_index()
def simple_if(condition_val): condition = ov.constant(condition_val, dtype=np.bool) # then_body X_t = ov.parameter([2], np.float32, "X") Y_t = ov.parameter([2], np.float32, "Y") then_mul = ov.multiply(X_t, Y_t) then_body_res_1 = ov.result(then_mul) then_body = Model([then_body_res_1], [X_t, Y_t], "then_body_function") # else_body X_e = ov.parameter([2], np.float32, "X") Y_e = ov.parameter([2], np.float32, "Y") add_e = ov.add(X_e, Y_e) else_body_res_1 = ov.result(add_e) else_body = Model([else_body_res_1], [X_e, Y_e], "else_body_function") X = ov.constant([3, 4], dtype=np.float32) Y = ov.constant([2, 1], dtype=np.float32) if_node = ov.if_op(condition) if_node.set_then_body(then_body) if_node.set_else_body(else_body) if_node.set_input(X.output(0), X_t, X_e) if_node.set_input(Y.output(0), Y_t, Y_e) if_res = if_node.set_output(then_body_res_1, else_body_res_1) relu = ov.relu(if_res) return relu
def test_input_shape_read_only(): shape = Shape([1, 10]) param = ov.parameter(shape, dtype=np.float32) model = Model(ov.relu(param), [param]) ref_shape = model.input().shape ref_shape[0] = Dimension(3) assert model.input().shape == shape
def get_test_function(): element_type = Type.f32 param = Parameter(element_type, Shape([1, 3, 22, 22])) relu = ops.relu(param) func = Function([relu], [param], "test") assert func is not None return func
def simple_if(condition_val): condition = ov.constant(condition_val, dtype=np.bool) # then_body X_t = ov.parameter([2], np.float32, "X") Y_t = ov.parameter([2], np.float32, "Y") then_mul = ov.multiply(X_t, Y_t) then_body_res_1 = ov.result(then_mul) then_body = GraphBody([X_t, Y_t], [then_body_res_1]) then_body_inputs = [ TensorIteratorInvariantInputDesc(1, 0), TensorIteratorInvariantInputDesc(2, 1) ] then_body_outputs = [TensorIteratorBodyOutputDesc(0, 0)] # else_body X_e = ov.parameter([2], np.float32, "X") Y_e = ov.parameter([2], np.float32, "Y") add_e = ov.add(X_e, Y_e) else_body_res_1 = ov.result(add_e) else_body = GraphBody([X_e, Y_e], [else_body_res_1]) else_body_inputs = [ TensorIteratorInvariantInputDesc(1, 0), TensorIteratorInvariantInputDesc(2, 1) ] else_body_outputs = [TensorIteratorBodyOutputDesc(0, 0)] X = ov.constant([3, 4], dtype=np.float32) Y = ov.constant([2, 1], dtype=np.float32) if_node = ov.if_op(condition, [X, Y], (then_body, else_body), (then_body_inputs, else_body_inputs), (then_body_outputs, else_body_outputs)) relu = ov.relu(if_node) return relu
def test_infer_list_as_inputs(device): num_inputs = 4 input_shape = [2, 1] dtype = np.float32 params = [ops.parameter(input_shape, dtype) for _ in range(num_inputs)] model = Model(ops.relu(ops.concat(params, 1)), params) core = Core() compiled_model = core.compile_model(model, device) def check_fill_inputs(request, inputs): for input_idx in range(len(inputs)): assert np.array_equal( request.get_input_tensor(input_idx).data, inputs[input_idx]) request = compiled_model.create_infer_request() inputs = [np.random.normal(size=input_shape).astype(dtype)] request.infer(inputs) check_fill_inputs(request, inputs) inputs = [ np.random.normal(size=input_shape).astype(dtype) for _ in range(num_inputs) ] request.infer(inputs) check_fill_inputs(request, inputs)
def test_get_result_index(): input_shape = PartialShape([1]) param = ops.parameter(input_shape, dtype=np.float32, name="data") relu = ops.relu(param, name="relu") function = Model(relu, [param], "TestFunction") assert len(function.outputs) == 1 assert function.get_result_index(function.outputs[0]) == 0
def test_parameter_index_invalid(): shape1 = PartialShape([1]) param1 = ops.parameter(shape1, dtype=np.float32, name="data1") relu = ops.relu(param1, name="relu") function = Model(relu, [param1], "TestFunction") shape2 = PartialShape([2]) param2 = ops.parameter(shape2, dtype=np.float32, name="data2") assert function.get_parameter_index(param2) == -1
def create_function1(shape1=[2, 2]): input1 = ops.parameter(shape1, dtype=np.float32, name="input1") input1.get_output_tensor(0).set_names({'input1a', 'input1b'}) relu1 = ops.relu(input1) res1 = ops.result(relu1, "res1") res1.get_output_tensor(0).set_names({'res1', 'res1a'}) function = Model(results=[res1], parameters=[input1], name="TestFunction") return function
def test_update_rt_info(device): relu = ops.relu(5) output_node = Output._from_node(relu) rt = output_node.get_rt_info() rt["test12345"] = "test" for k, v in output_node.get_rt_info().items(): assert k == "test12345" assert isinstance(v, OVAny)
def get_model(): param = opset8.parameter(PartialShape([1, 3, 22, 22]), name="parameter") param.get_output_tensor(0).set_names({"parameter"}) relu = opset8.relu(param) reshape = opset8.reshape(relu, opset8.shape_of(relu), False) res = opset8.result(reshape, name="result") res.get_output_tensor(0).set_names({"result"}) return Model([res], [param], "test")
def test_replace_output_update_name(): param = opset8.parameter(PartialShape([1, 3, 22, 22]), name="parameter") relu = opset8.relu(param.output(0)) exp = opset8.exp(relu.output(0)) res = opset8.result(exp.output(0), name="result") replace_output_update_name(exp.output(0), exp.input_value(0)) assert res.input_value(0).get_node() == exp
def test_any_input(): param = opset8.parameter(PartialShape([1, 3, 22, 22])) relu = opset8.relu(param.output(0)) slope = opset8.parameter(PartialShape([])) prelu = opset8.prelu(param.output(0), slope.output(0)) m = Matcher(WrapType("opset8.PRelu", [AnyInput(), AnyInput()]), "FindActivation") assert not m.match(relu) assert m.match(prelu)
def test_reshape(device): shape = Shape([1, 10]) param = ops.parameter(shape, dtype=np.float32) model = Model(ops.relu(param), [param]) ref_shape = model.input().partial_shape ref_shape[0] = 3 model.reshape(ref_shape) core = Core() compiled = core.compile_model(model, device) assert compiled.input().partial_shape == ref_shape
def test_runtime_info(): test_shape = PartialShape([1, 1, 1, 1]) test_type = Type.f32 test_param = Parameter(test_type, test_shape) relu_node = ops.relu(test_param) runtime_info = relu_node.get_rt_info() runtime_info["affinity"] = "test_affinity" relu_node.set_friendly_name("testReLU") runtime_info_after = relu_node.get_rt_info() assert runtime_info_after["affinity"] == "test_affinity"
def test_or(): param = opset8.parameter(PartialShape([1, 3, 22, 22])) relu = opset8.relu(param.output(0)) slope = opset8.parameter(PartialShape([])) prelu = opset8.prelu(param.output(0), slope.output(0)) m = Matcher(Or([WrapType("opset8.Relu"), WrapType("opset8.PRelu")]), "FindActivation") assert m.match(relu) assert m.match(prelu)
def test_replace_source_output(): param = opset8.parameter(PartialShape([1, 3, 22, 22]), name="parameter") relu = opset8.relu(param.output(0)) res = opset8.result(relu.output(0), name="result") exp = opset8.exp(param.output(0)) res.input(0).replace_source_output(exp.output(0)) assert len(exp.output(0).get_target_inputs()) == 1 assert len(relu.output(0).get_target_inputs()) == 0 assert next(iter(exp.output(0).get_target_inputs())).get_node() == res
def test_test_descriptor_tensor(): input_shape = PartialShape([1]) param = ops.parameter(input_shape, dtype=np.float32, name="data") relu1 = ops.relu(param, name="relu1") relu1.get_output_tensor(0).set_names({"relu_t1"}) td = relu1.get_output_tensor(0) assert "relu_t1" in td.names assert td.element_type == Type.f32 assert td.partial_shape == PartialShape([1]) assert repr(td.shape) == "<Shape: {1}>" assert td.size == 4 assert td.any_name == "relu_t1"
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_replace_parameter(): shape1 = PartialShape([1]) param1 = ops.parameter(shape1, dtype=np.float32, name="data") shape2 = PartialShape([2]) param2 = ops.parameter(shape2, dtype=np.float32, name="data") relu = ops.relu(param1, name="relu") function = Model(relu, [param1], "TestFunction") param_index = function.get_parameter_index(param1) function.replace_parameter(param_index, param2) assert function.get_parameter_index(param2) == param_index assert function.get_parameter_index(param1) == -1
def test_ngraph_preprocess_set_memory_type(): shape = [1, 1, 1] parameter_a = ops.parameter(shape, dtype=np.int32, name="A") op = ops.relu(parameter_a) model = op function = Model(model, [parameter_a], "TestFunction") p = PrePostProcessor(function) p.input().tensor().set_memory_type("some_memory_type") function = p.build() assert any(key for key in function.input().rt_info if "memory_type" in key)
def test_wrap_type_ctors(): param = opset8.parameter(PartialShape([1, 3, 22, 22])) relu = opset8.relu(param.output(0)) slope = opset8.parameter(PartialShape([])) prelu = opset8.prelu(param.output(0), slope.output(0)) m = Matcher(WrapType(["opset8.Relu", "opset8.PRelu"]), "FindActivation") assert m.match(relu) assert m.match(prelu) m = Matcher(WrapType(["opset8.Relu", "opset8.PRelu"], WrapType("opset8.Parameter").output(0)), "FindActivation") assert m.match(relu)
def test_infer_queue_is_ready(device): core = Core() param = ops.parameter([10]) model = Model(ops.relu(param), [param]) compiled = core.compile_model(model, device) infer_queue = AsyncInferQueue(compiled, 1) def callback(request, _): time.sleep(0.001) infer_queue.set_callback(callback) assert infer_queue.is_ready() infer_queue.start_async() assert not infer_queue.is_ready() infer_queue.wait_all()