예제 #1
0
    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")
예제 #7
0
    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")
예제 #10
0
    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")
예제 #13
0
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))