We've made cortex public:
Fork away, and we hope that this contributes to a growing ML community in
Clojure. Thoughts, ideas, feedback are welcome!
On Saturday, October 8, 2016 at 6:00:21 PM UTC-6, je...@thinktopic.com
> I'm glad this came up. We were initially thinking we'd wait until the
> API and design had stabilized before releasing Cortex, but there is enough
> of value now that I think Kovas is right. We should release it.
> Cortex has been a collaboration between ThinkTopic and Mike Anderson, and
> it's design is somewhat similar to Torch. (Neural network layers that
> implement protocols for forward computation and backward propagation of
> gradients along with a set of optimizers.) Although we are already using
> Cortex models in production, it's definitely still a library in flux. We
> had arrived at a pretty good set of base abstractions in pure Clojure using
> core.matrix, but then when we decided to add gpu support we realized we had
> to refactor things a bit. The CuDNN and CuBLAS libraries from Nvidia
> provide a lot of useful functionality, but they also come with their own
> abstractions for matrix computation, neural network layers, optimizers,
> etc. To take advantage of the GPU effectively we also need to be able to
> sequence and interleave tasks using streams, which requires a variety of
> design changes unless we want to maintain separate implementations of
> almost everything for both the CPU and the GPU. You can build and run
> networks now, but we are still exploring how this should all come together.
> So, as long as you keep in mind that things will change, it would be great
> to have you all join the conversation and help experiment with abstractions
> and apis.
> Give us a couple days to do some house keeping, and then we'll open source
> On Thursday, October 6, 2016 at 8:08:41 PM UTC-6, kovasb wrote:
>> On Thu, Oct 6, 2016 at 9:20 PM, Mikera <mike.r.an...@gmail.com> wrote:
>>> Hi Dragan,
>>> We have things working quite well (including stuff like cuDNN
>>> integration for convolution networks on the GPU). We also have all of the
>>> standard stuff (many different layer types, dropout, noise function,
>>> regularisation etc.). However I think it still needs a bunch of work before
>>> we stabilise on the core API.
>>> Things I'm paricularly keen to have nailed down in particular before we
>>> go public:
>> FWIW it sounds like you've achieved a huge amount already.
>> There are many people in the Clojure community who can come up with a DAG
>> abstraction. There are very, very few who have the skill and time to assess
>> and integrate the various native libs necessary to achieve the fundamental
>> operations in a clojure-friendly way.
>> If people build on the 'wrong' api, thats a good problem to have. The
>> field is so in flux anyway. The problem can also be mitigated through
>> minimalism in what is released in the beginning.
>> In any case, looking forward to hopefully seeing this stuff one day.
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to email@example.com
Note that posts from new members are moderated - please be patient with your
To unsubscribe from this group, send email to
For more options, visit this group at
You received this message because you are subscribed to the Google Groups
To unsubscribe from this group and stop receiving emails from it, send an email
For more options, visit https://groups.google.com/d/optout.