Giter VIP home page Giter VIP logo

Comments (2)

ksaur avatar ksaur commented on June 12, 2024

Rearranging our test a bit for debugging:

    def test_varying_batch_sizes(self):
        model = GradientBoostingClassifier(n_estimators=10, max_depth=3)
        np.random.seed(0)
        X = np.random.rand(100, 200)
        X = np.array(X, dtype=np.float32)
        y = np.random.randint(2, size=100)

        X_test = np.random.rand(2, 200)
        X_test = np.array(X_test, dtype=np.float32)

        model.fit(X, y)

        model_probs = model.predict_proba(X_test) 

        # failure is here on the HB convert line
        # conv_model  = hummingbird.ml.convert(model, "onnx", X, extra_config={})  

The ORT team mentioned that there was a change to the transpose opset and that "the input shape seems missing".

When I run this code above, at the torch.onnx.export( call in _topology.py, I get some warnings:

torch/onnx/utils.py:1702: UserWarning: The exported ONNX model failed ONNX shape inference. The model will not be executable by the ONNX Runtime. If this is unintended and you believe there is a bug, please report an issue at https://github.com/pytorch/pytorch/issues. 

Error reported by strict ONNX shape inference: [ShapeInferenceError] Inference error(s): (op_type:Reshape, node name: /_operators.0/Reshape_4): 
[ShapeInferenceError] Dimension could not be inferred: incompatible shapes
(op_type:ReduceSum, node name: /_operators.0/ReduceSum): [TypeInferenceError] Input 0 expected to have type but instead is null
(op_type:Add, node name: /_operators.0/Add): [TypeInferenceError] Input 0 expected to have type but instead is null
(op_type:Sigmoid, node name: /_operators.0/Sigmoid): [TypeInferenceError] Input 0 expected to have type but instead is null
 (Triggered internally at ../torch/csrc/jit/serialization/export.cpp:1488.)
  _C._check_onnx_proto(proto)

Maybe it does not like our dynamic_axes?

Which I guess explains the error message of ({) which mean Null with the "[TypeInferenceError] Invalid attribute perm {1, 0}, input shape = {"

from hummingbird.

ksaur avatar ksaur commented on June 12, 2024

dynamic_axes_cfg in this test is {'input_0': {0: 'sym'}, 'variable': {0: 'sym'}}.

If I remove the dynamic axes here (ex: ###dynamic_axes=dynamic_axes_cfg, from torch.onnx.export), and change my test code above to X_test = np.random.rand(100, 200) (instead of (2, 200) which won't work without dyn axes), it passes just fine.

from hummingbird.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.