Deep Learning with Elixir

I am creating a framework for Deep Learning.
The network is described by macros as follows.

defnetwork init_network2(_x) do
  _x |> f(5,5) |> flatten
  |> w(576,100) |> b(100) |> sigmoid
  |> w(100,10) |> b(10) |> sigmoid
end

Process backpropagation in parallel.

In the future, we will introduce Hastega as a GPU-based engine.

GitHub
https://github.com/sasagawa888/DeepLearning

13 Likes

This is really cool.

I was wondering did you check out/compare different matrix related Elixir libs?

Quick research resulted in finding this interesting one at github /a115/exmatrix (I can’t post links to github :O)
Cool thing about it is that it’s “implementing a parallel matrix multiplication” which improves speed almost quadratically.

Ps. Some non-PhD-required type of description would be great as well :wink:

2 Likes

Thank you.

This is a brief introduction.
https://medium.com/@kenichisasagawa/deep-learning-with-elixir-78a62a61e6bd

5 Likes

What an awesome representation of the underlying operations.

Pipelines are such an idiomatic way to represent neural nets.

Nit comment: any reason the _x has to be underscored? Something to do with the way the macros work I’m guessing?

1 Like

Thank you for reply.
Underbar like _x is for avoiding compiler warnings. Also works as x.

1 Like

Naming Conventions:

a value that is not meant to be used must be assigned to _ or to a variable starting with underscore

2 Likes

We are considering using CBLAS with the Matrex library to achieve practical speed.

4 Likes

I replaced the matrix calculation with the fast Matrex module.
I would like to thank the author, Mr. Versilov.

6 Likes

Deep Pipe has become faster with Matrex and CBLAS.

6 Likes