def test_onnx_simple_text_plot_toy(self): x = numpy.random.randn(10, 3).astype(numpy.float32) node1 = OnnxAdd('X', x, op_version=15) node2 = OnnxSub('X', x, op_version=15) node3 = OnnxAbs(node1, op_version=15) node4 = OnnxAbs(node2, op_version=15) node5 = OnnxDiv(node3, node4, op_version=15) node6 = OnnxAbs(node5, output_names=['Y'], op_version=15) onx = node6.to_onnx({'X': x.astype(numpy.float32)}, outputs={'Y': x}, target_opset=15) text = onnx_simple_text_plot(onx, verbose=False) expected = textwrap.dedent(""" Add(X, Ad_Addcst) -> Ad_C0 Abs(Ad_C0) -> Ab_Y0 Identity(Ad_Addcst) -> Su_Subcst Sub(X, Su_Subcst) -> Su_C0 Abs(Su_C0) -> Ab_Y02 Div(Ab_Y0, Ab_Y02) -> Di_C0 Abs(Di_C0) -> Y """).strip(" \n") self.assertIn(expected, text) text2, out, err = self.capture( lambda: onnx_simple_text_plot(onx, verbose=True)) self.assertEqual(text, text2) self.assertIn('BEST:', out) self.assertEmpty(err)
def test_algebra_abs(self): op = OnnxAbs('I0', op_version=TARGET_OPSET) onx = op.to_onnx({'I0': numpy.empty((1, 2), dtype=numpy.float32)}) assert onx is not None import onnxruntime as ort try: sess = ort.InferenceSession(onx.SerializeToString()) except RuntimeError as e: raise RuntimeError("Unable to read\n{}".format(onx)) from e X = numpy.array([[0, 1], [-1, -2]]) try: Y = sess.run(None, {'I0': X.astype(numpy.float32)})[0] except RuntimeError as e: raise RuntimeError("Unable to run\n{}".format(onx)) from e assert_almost_equal(Y, numpy.abs(X))