Giter VIP home page Giter VIP logo

Comments (4)

g2cacheQ avatar g2cacheQ commented on July 29, 2024

I have similar question - ie what would be involved in importing a pre-trained network via the open source ONNX format?

https://github.com/onnx/models/tree/master/mnist

from kann.

attractivechaos avatar attractivechaos commented on July 29, 2024

No. ONNX is based on protobuf, which alone is many times larger than KANN. Supporting ONNX would defeat the goal of this project.

from kann.

g2cacheQ avatar g2cacheQ commented on July 29, 2024

I'm not sure I follow how ONNX would defeat the goal of the kann project. Protocol buffers are merely binary serialization format - the size and complexity directly proportional to the object model you are serializing. The purpose of ONNX is to provide an open mechanism for sharing trained network data between frameworks. People will not realistically write custom training routines with kann. I see ONNX as a translation layer - possibly a 1-way street. I like the lightweight model implementation, but am not interested in re-engineering the creation of established models, then training them. I would like to deploy a trained model with kann and use a "real" framework for training. I apologize if my use of the term "real" seems derogatory - it's not intended to be so. Just that Caffe, Tensorflow, Keras etc are established training frameworks, and I don't see kann as a viable competitor. Regardless, it would be helpful to describe how one applies/updates the weights to a kann model. Thank you for your work, this is very interesting.

from kann.

attractivechaos avatar attractivechaos commented on July 29, 2024

Parsing protobuf requires a protobuf-c, which is about the same size as kann. You additionally need translation code. With ONNX, kann won't be lightweight any more. ONNX support should be a separate project, not part of kann itself.

In fact, if the goal is to deploy the model, the much cleaner way is to start a brand-new project, taking bits of kann code and fit them into structs matching the ONNX definitions. The majority of code in kann is for autodiff and training. The forward pass can be implemented in ~1000 lines. Creating a translation layer between kann and ONNX probably needs more than that amount of code.

Anyway, I buy your point, but that is not happening in this repo.

from kann.

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.