Giter Club home page Giter Club logo

kayak's People

Contributors

davek44 avatar dougalm avatar duvenaud avatar jaspersnoek avatar rpadams avatar slinderman avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kayak's Issues

L2 Loss implicitly broadcasts and causes headaches

I had a set of targets of size (77,) and a set of predictions of size (77,1). When I applied an L2 loss to this, Kayak implicitly broadcast so that it applied an L2 loss to all 77^2 combinations of predictions and targets.

More generally, I think that there is an opportunity to make Kayak operations enforce explicit shapes in its arguments. This makes it slightly more inconvenient in that broadcasting has to be done explicitly, but it also avoids a lot of the silly pitfalls that come from implicit broadcasting.

No simple way to take the mean of a Kayak object?

Based on some advice from an avid Kayak user, I found that this was one way to do it:

invN = kayak.Constant(np.atleast_2d(1.0/y.shape[0]))
self.loss = kayak.MatMult(y,invN)

Something like this really should be a basic op.

Write actual documentation

We should write some documentation in the readme file indicating how to:

  • Install the package
  • Run the examples
  • Possibly explain somewhat how to create new modules

Kayak objects cannot be saved

Currently the error
TypeError: a class that defines slots without defining getstate cannot be pickled
appears when I try to pickle Kayak objects. How would we save the trained networks?

Reduce the different variable types to a single type?

Currently there are different variable types: Input, Target, Constant, Parameter. I understand why each of these exist, but the difference between them from a computational standpoint is not obvious. The one exception perhaps is that inputs and targets can be batched?

I'm thinking that there should just be a single Variable type that has access to every basic op, including differentiation and batching. That way it would be very straightforward for someone who is new to the framework to get started.

Either that, or there should be some very explicit documentation about how all of these types differ.

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.