Skip to content

Releases: zk4x/zyx

v0.14.0

22 Sep 13:54
Compare
Choose a tag to compare

v0.12.0

10 Mar 09:41
Compare
Choose a tag to compare

Minor rewrite of the previous version. Fewer dependencies, better performance and fixed a number of bugs.
Also split repository into multiple cargo crates.

New features:

  • Optimizers SGD and Adam
  • zyx-compiler for easier implementation of compiled backends
  • reworked backpropagation algorithm with support for detaching tensors for recurrent neural networks
  • tensor indexing
  • more tensor ops
  • simplified opset (backends don't need to implement matmul anymore)

Full Changelog: v0.11.3...v0.12.0

v0.11.3

08 Oct 12:12
Compare
Choose a tag to compare

v0.11.3

  • Added torch backend using tch crate
  • Added number of ops
  • restructured tests

Full Changelog: v0.11.2...v0.11.3

v0.11.2

08 Oct 11:55
Compare
Choose a tag to compare

v0.11.2

Rewritten cpu backend so that movement ops are noops. This resulted in significant performance improvement.

Full Changelog: v0.11.1...v0.11.2

v0.11.1

28 Sep 14:06
Compare
Choose a tag to compare

Addition of multiple new ops:

  • relu
  • sin
  • softmax
  • dropout
  • scaled_dot_product

v0.11.0

28 Sep 13:47
Compare
Choose a tag to compare

Rewrite of Zyx to be more flexible while having more stable user API. From user perspective this means removal of almost all generics, since generics in Zyx exposed too many internal details.

v0.10.0

29 Dec 15:35
Compare
Choose a tag to compare
v0.10.0 Pre-release
Pre-release
  • BREAKING added devices so that we can support both cpu and gpu
  • Rewritten shapes to be const

Full Changelog: v0.9.0...v0.10.0

v0.9.0

16 Dec 16:55
Compare
Choose a tag to compare
v0.9.0 Pre-release
Pre-release
  • BREAKING Rewritten shape to now be stack only, since until now we used heap allocated shape. On description how shape works now, look at the documentation.
  • BREAKING Rewritten the way optimizers are handled. There are no more general requirements for all optimizers together, now every optimizers defines it's own requirements and is implemented separately. This gets rid of redundant requirements, but requires more code to be written.
  • BREAKING Rewritten the way parameters are handled. This is together with optimizers change. Not only allows us to use different optimizers with separate requirements, it also allows us to define ways to read and mutate parameters. This can be used for loading and saving to IO as well as initializing from different random distributions and so on.
  • Although all of the changes above are technically breaking, they do not require you to change the way you write your programs. For example shape is now part of cpu::Buffer generics (previously cpu::Buffer, now cpu::Buffer<T, Sh>), but shape can always be inferred, so you will at most need to write cpu::Buffer<f32, _> instead of cpu::Buffer.
  • Removed no_std claim, because it is not true, since we rely on rayon which requires std. In future, we will add std feature enabled by default and make rayon optinal dependency. Shouldn't be too difficult to do, since rayon is required only for cpu::Buffer. For no_std support we also need to make rand optional or create our own random seed. Rand is required by RandInit and UniformInit, so again it is not widely used.
  • Overall the way we rewritten shape and optimizer means that they are both now more modular, but require more code to be written. It should be now easier to add features as non-breaking changes.
  • ndarray has not been yet rewritten to be compatible with the changes