def test_pipe_way4_mixin_fit(self): X = np.arange(20).reshape(10, 2) try: tr = wrap_as_onnx_mixin(make_pipeline(CustomOpTransformer(), KMeans(n_clusters=2)), target_opset=TARGET_OPSET) except KeyError as e: assert "SklearnGaussianProcessRegressor" in str(e) return tr.fit(X) onx = tr.to_onnx(X.astype(np.float32)) if (TARGET_OPSET == 11 or os.environ.get('TEST_TARGET_OPSET', '') != ''): sonx = str(onx) if "version: 11" not in sonx or "ir_version: 6" not in sonx: raise AssertionError("Issue with TARGET_OPSET: {}\n{}".format( TARGET_OPSET, sonx)) dump_data_and_model(X.astype(np.float32), tr, onx, basename="MixinPipeWay4OnnxMixin2")
def test_pipe_way3_mixin(self): X = np.arange(20).reshape(10, 2) tr = make_pipeline(CustomOpTransformer(op_version=TARGET_OPSET), KMeans(n_clusters=2)) tr.fit(X) try: tr_mixin = wrap_as_onnx_mixin(tr, target_opset=TARGET_OPSET) except KeyError as e: assert ("SklearnGaussianProcessRegressor" in str(e) or "SklearnGaussianProcessClassifier" in str(e)) return try: onx = tr_mixin.to_onnx() except RuntimeError as e: assert "Method enumerate_initial_types" in str(e) onx = tr_mixin.to_onnx(X.astype(np.float32)) if TARGET_OPSET == 11: sonx = str(onx) if "version: 11" not in sonx or "ir_version: 6" not in sonx: raise AssertionError("Issue with TARGET_OPSET: {}\n{}".format( TARGET_OPSET, sonx)) dump_data_and_model(X.astype(np.float32), tr, onx, basename="MixinPipeWay3OnnxMixin")
def test_way3_mixin(self): X = np.arange(20).reshape(10, 2) # avoids point of different cluster to be very close # and avoid a small discrepancy due to double/float # conversion to change a label. X[:10] += 100 tr = KMeans(n_clusters=2) tr.fit(X) try: tr_mixin = wrap_as_onnx_mixin(tr, target_opset=TARGET_OPSET) except KeyError as e: assert ("SklearnGaussianProcessRegressor" in str(e) or "SklearnGaussianProcessClassifier" in str(e)) return try: onx = tr_mixin.to_onnx() except RuntimeError as e: assert "Method enumerate_initial_types" in str(e) onx = tr_mixin.to_onnx(X.astype(np.float32)) dump_data_and_model(X.astype(np.float32), tr, onx, basename="MixinWay3OnnxMixin")
def test_way4_mixin_fit(self): X = np.arange(20).reshape(10, 2) tr = wrap_as_onnx_mixin(KMeans(n_clusters=2)) tr.fit(X) onx = tr.to_onnx(X.astype(np.float32)) dump_data_and_model(X.astype(np.float32), tr, onx, basename="MixinWay4OnnxMixin2")
def test_pipe_way4_mixin_fit(self): X = np.arange(20).reshape(10, 2) tr = wrap_as_onnx_mixin( make_pipeline(CustomOpTransformer(), KMeans(n_clusters=2))) tr.fit(X) onx = tr.to_onnx(X.astype(np.float32)) dump_data_and_model(X.astype(np.float32), tr, onx, basename="MixinPipeWay4OnnxMixin2")
def test_way4_mixin_fit(self): X = np.arange(20).reshape(10, 2) try: tr = wrap_as_onnx_mixin(KMeans(n_clusters=2)) except KeyError as e: assert "SklearnGaussianProcessRegressor" in str(e) return tr.fit(X) onx = tr.to_onnx(X.astype(np.float32)) dump_data_and_model( X.astype(np.float32), tr, onx, basename="MixinWay4OnnxMixin2")
def test_pipe_way4_mixin_fit(self): X = np.arange(20).reshape(10, 2) try: tr = wrap_as_onnx_mixin( make_pipeline(CustomOpTransformer(), KMeans(n_clusters=2)), target_opset=TARGET_OPSET) except KeyError as e: assert "SklearnGaussianProcessRegressor" in str(e) return tr.fit(X) onx = tr.to_onnx(X.astype(np.float32)) dump_data_and_model( X.astype(np.float32), tr, onx, basename="MixinPipeWay4OnnxMixin2")
def test_way3_mixin(self): X = np.arange(20).reshape(10, 2) tr = KMeans(n_clusters=2) tr.fit(X) tr_mixin = wrap_as_onnx_mixin(tr) try: onx = tr_mixin.to_onnx() except RuntimeError as e: assert "Method enumerate_initial_types" in str(e) onx = tr_mixin.to_onnx(X.astype(np.float32)) dump_data_and_model(X.astype(np.float32), tr, onx, basename="MixinWay3OnnxMixin")
def test_pipe_way3_mixin(self): X = np.arange(20).reshape(10, 2) tr = make_pipeline(CustomOpTransformer(), KMeans(n_clusters=2)) tr.fit(X) try: tr_mixin = wrap_as_onnx_mixin(tr) except KeyError as e: assert "SklearnGaussianProcessRegressor" in str(e) return try: onx = tr_mixin.to_onnx() except RuntimeError as e: assert "Method enumerate_initial_types" in str(e) onx = tr_mixin.to_onnx(X.astype(np.float32)) dump_data_and_model( X.astype(np.float32), tr, onx, basename="MixinPipeWay3OnnxMixin")
def test_way3_mixin(self): X = np.arange(20).reshape(10, 2) tr = KMeans(n_clusters=2) tr.fit(X) try: tr_mixin = wrap_as_onnx_mixin(tr, target_opset=TARGET_OPSET) except KeyError as e: assert "SklearnGaussianProcessRegressor" in str(e) return try: onx = tr_mixin.to_onnx() except RuntimeError as e: assert "Method enumerate_initial_types" in str(e) onx = tr_mixin.to_onnx(X.astype(np.float32)) dump_data_and_model( X.astype(np.float32), tr, onx, basename="MixinWay3OnnxMixin")
def test_algebra_converter(self): X = numpy.array([[1, 2], [2, 3]]) op = OnnxSklearnStandardScaler() op.fit(X) onx = op.to_onnx(X.astype(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, {'X': X.astype(numpy.float32)})[0] except RuntimeError as e: raise RuntimeError("Unable to run\n{}".format(onx)) from e assert_almost_equal(Y, op.transform(X)) onx1 = str(onx) op = wrap_as_onnx_mixin(StandardScaler()) op = OnnxSklearnStandardScaler() op.fit(X) onx = op.to_onnx(X.astype(numpy.float32)) onx2 = str(onx) assert 'domain: "ai.onnx.ml"' in onx1 assert 'domain: "ai.onnx.ml"' in onx2 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, {'X': X.astype(numpy.float32)})[0] except RuntimeError as e: raise RuntimeError("Unable to run\n{}".format(onx)) from e assert_almost_equal(Y, op.transform(X))
def test_way4_mixin_fit(self): X = np.arange(20).reshape(10, 2) try: tr = wrap_as_onnx_mixin(KMeans(n_clusters=2), target_opset=TARGET_OPSET) except KeyError as e: assert ("SklearnGaussianProcessRegressor" in str(e) or "SklearnGaussianProcessClassifier" in str(e)) return tr.fit(X) onx = tr.to_onnx(X.astype(np.float32)) if TARGET_OPSET == 11: sonx = str(onx) if "version: 11" not in sonx or "ir_version: 6" not in sonx: raise AssertionError("Issue with TARGET_OPSET: {}\n{}".format( TARGET_OPSET, sonx)) dump_data_and_model( X.astype(np.float32), tr, onx, basename="MixinWay4OnnxMixin2")
tr.fit(X) onx = to_onnx(tr, X.astype(np.float32), target_opset=12) print(predict_with_onnxruntime(onx, X)) ################################# # The third way: :func:`wrap_as_onnx_mixin`: wraps # the machine learned model into a new class # inheriting from :class:`OnnxOperatorMixin`. X = np.arange(20).reshape(10, 2) tr = KMeans(n_clusters=2) tr.fit(X) tr_mixin = wrap_as_onnx_mixin(tr, target_opset=12) onx = tr_mixin.to_onnx(X.astype(np.float32)) print(predict_with_onnxruntime(onx, X)) ################################# # The fourth way: :func:`wrap_as_onnx_mixin`: can be called # before fitting the model. X = np.arange(20).reshape(10, 2) tr = wrap_as_onnx_mixin(KMeans(n_clusters=2), target_opset=12) tr.fit(X) onx = tr.to_onnx(X.astype(np.float32)) print(predict_with_onnxruntime(onx, X))
tr = KMeans(n_clusters=2) tr.fit(X) onx = to_onnx(tr, X.astype(np.float32)) print(predict_with_onnxruntime(onx, X)) ################################# # The third way: :func:`wrap_as_onnx_mixin`: wraps # the machine learned model into a new class # inheriting from :class:`OnnxOperatorMixin`. X = np.arange(20).reshape(10, 2) tr = KMeans(n_clusters=2) tr.fit(X) tr_mixin = wrap_as_onnx_mixin(tr) onx = tr_mixin.to_onnx(X.astype(np.float32)) print(predict_with_onnxruntime(onx, X)) ################################# # The fourth way: :func:`wrap_as_onnx_mixin`: can be called # before fitting the model. X = np.arange(20).reshape(10, 2) tr = wrap_as_onnx_mixin(KMeans(n_clusters=2)) tr.fit(X) onx = tr.to_onnx(X.astype(np.float32)) print(predict_with_onnxruntime(onx, X))