Giter Club home page Giter Club logo

Comments (4)

LaurentMazare avatar LaurentMazare commented on May 30, 2024 2

Thinking more about this, it would certainly be nice to use more of usize for dimensions/shape, e.g. for size or for the various nn creators. The only exception I can think of are view, get, narrow which should handle negative indexing and values. I'll try making some changes for this when I get a chance.

from tch-rs.

LaurentMazare avatar LaurentMazare commented on May 30, 2024

Right, having usize at some places would be better. That said, a commonly used value is -1 both for indexes and shapes.
For indexes it means start from the end, -1 would be the last value, -2 the value before and so on.
For shapes it's used for a single dimension and gets an appropriate value based on the tensor total number of elements (this number of element has to be divisible by the product of sizes for other dimensions of course). E.g. one could write a.reshape([batch_size, -1]) to flatten a.
This explains why i64 are used there, it's less verbose than using Option<usize> for shapes or some other alternative for indexes, it's also close to how the python api works but it certainly doesn't feel very rust idiomatic.

from tch-rs.

grtlr avatar grtlr commented on May 30, 2024

Thanks for the quick reply! I like the idea of tch-rs staying close to the Python API. For now I will just start to write some more idiomatic Rust wrappers around some of these methods for my own needs. Maybe in the future we can have a separate crate which handles these kind of things. Such a crate was briefly discussed in #12, do you have any ideas in mind here?

from tch-rs.

LaurentMazare avatar LaurentMazare commented on May 30, 2024

I don't have much concrete ideas but maybe a couple of these would be good:

  • The tensor type could be parameterized by the kind of element embedded would be nice, e.g. Tensor<i64>.
  • The tensor type could embed the number of dimensions, e.g. Tensor<d2, i64> or Tensor2d<i64>.
  • Maybe tensors with named dimensions although that may be quite a stretch.

I would have hoped for the first two points to be doable when generating the binding code but I haven't found enough information in the Declarations.yaml file that is used for generation. Fwiw tensorflow provides some description of operations with all the details on the supported types which make it possible to generate better type annotations, e.g. for conv2d here is some generated ocaml code: conv2d can only apply to tensors of float or double and return a tensor of the same type.

Also if you get some interesting wrappers that you think should be part of tch-rs let me know via a PR or an issue.

from tch-rs.

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.