Seems like I can't change title anymore with the new forum :/.

Arraymancer is now at version 0.5: [release 
announcement.](https://github.com/mratsim/Arraymancer/releases/tag/v0.5.0)

Here are the highlights:
    

  * Backward incompatible: PCA now returns a tuple of the projected tensor and 
the principal components. An overloaded PCA can be used with the principal axes 
supplied by the user.
  * Datasets:
    * MNIST is now autodownloaded and cached
    * Added IMDB Movie Reviews dataset
  * IO:
    * Numpy file format support
    * Image reading and writing support (jpg, bmp, png, tga)
    * HDF5 reading and writing
  * Machine learning
    * Kmeans clustering
  * Deep Learning
    * RNN: GRU support including fused stacked GRU layers with 
sequence/timesteps
    * Embedding layer with multiple timesteps support. Indexing can be done 
with integers, byte, chars or enums.
    * Sparse softmax cross-entropy: the target tensor subtype can now be 
integers, byte, chars or enums.
    * Adam optimiser (Adaptative Moment Estimation)
    * Xavier Glorot, Kaiming He and Yann Lecun weight initialisation schemes
  * N-D arrays / tensors
    * Splitting and chunking support
    * Fancy indexing via index_select
  * End-to-end examples:
    * [Sequence/time-series classification using 
RNN](https://github.com/mratsim/Arraymancer/blob/v0.5.0/examples/ex05_sequence_classification_GRU.nim)
    * [Text generation on Shakespeare and Jane Austen's Pride and 
Prejudice](https://github.com/mratsim/Arraymancer/blob/v0.5.0/examples/ex06_shakespeare_generator.nim).
 This can be applied to any text-based dataset (including blog posts, Latex 
papers and code).



**A glimpse of the future**

I have been working on a new backend for Arraymancer called 
[Laser](https://github.com/numforge/laser) which will address the CPU bottle 
necks I have identified while developing Arraymancer. The internal 
representation of tensors will change to a view over pointer + length instead 
of a seqs for plain old datatypes. Strings, seqs and ref objects will still use 
a seq backend.

Currently Laser offers or will offer:

  * SIMD intrinsics,
  * OpenMP templates,
  * fused parallel iteration on strided tensors which I believe is the fastest 
and most compact in terms of codesize among all languages and libraries
  * 4x to 10x faster sum, min, max, exp, log compared to naive <math.h>
  * matrix multiplication in pure Nim as fast as state-of-the-art OpenBLAS on 
x86 CPUs.



I also started [Monocle](https://github.com/numforge/monocle), a 
proof-of-concept visualization library based on [Vega](http://vega.github.io/)

And lastly I started focusing on reinforcement learning in [Agent 
Smith](https://github.com/numforge/agent-smith). Currently it offers a wrapper 
for the [Arcade Learning 
Environment](https://github.com/mgbellemare/Arcade-Learning-Environment) to 
train agents on Atari games. A wrapper for [Starcraft 2 Client 
API](https://github.com/Blizzard/s2client-api) is planned and potentially 
[Unity ML Agents](https://github.com/Unity-Technologies/ml-agents) if I managed 
to understand how their Python bindings work.

Reply via email to