I think with JS being one of the most popular languages around, this can always be answered with 'to enable millions of devs to use this without the need to learn yet another language'
Because you can put your demo online plus your browser is also a nice debugger and profiler. And you can use HTML5 for graphics/fancy stuff that works everywhere.
Because it is one of the most popular and accessible programming languages. It can act as a gateway language for the millions of devs out there to try out NN's without the barrier of learning another language.
Sllightly off topic, but the Machine Learning department of the University of Tokyo has built a whole set of libraries for machine learning in Javascript: http://mil-tokyo.github.io/miljs.html
So much value. Cross-platform compatibility (browser/JS, server/Node, mobile/React-Native, robotics/Johny-Five, etc). In-built asynchronous execution of nodes (a boon in ANN architectures).
Then there's dev mindshare. So many people know JS, empowering them would add bodies to meet rising ML demand. I learned Python specifically for TensorFlow. Python's easy to learn, but like any language takes much time to master. I've mastered JS, so Python was a frustrating little reset.
All that said, this cazala/synaptic project doesn't look promising to me save as showcase. Better to focus on exposing JS APIs on existing computation-graph GPU-runnable frameworks, eg node-tensorflow (https://github.com/node-tensorflow/node-tensorflow).
I agree. A solid understanding of why it works is still a requirement if you want to do something productive with neural networks.
But as someone who has been taking video courses and seen youtube videos, somehow this was the final step I needed to get started on my idea. It was easy to follow along, the code was nice and clean (most importantly without convoluted variable naming), and the immediately-interactive code made it quick to test a few things, rather than having to fork a project, NPM install a thousand dependencies and then actually do some coding.
Module one of Andre Karpathy's course is the most intuitive explanation I've seen. Working through backprop equations was a major hassle until I read those notes.
The basic idea behind Scrimba is that we record events instead of pixels. So what you're seeing when you're watching a Scrimba screencast is simply a re-creation of what the creator did when creating the screencast (which is done in-browser).
Even the interactions with the live preview are recorder, through a DOM-recorder we've built.
This opens up for tons of possibilities, including enabling the viewer to interact with the code.
We will add support for server side languages (e.g. Python, Ruby, Node) in the future. However, it's not at the top of our list, as there are several core things we need to fix. Once we have a timeline for that, it'll surely be shared on our Gitter channel:
Next up on our feature list is to make the creation process a lot easier, by enabling the creator to edit the recording after it's done. Will likely be launched next week :)
By tweaking the learning rate I managed to lower the iterations/rounds to 750.
For my own test project I only did 10k iterations/.3 learning rate on a 16 input, 32 hidden, and 1 output neuron network and my early tests on my "non-math" problem seemed good.
Having almost failed my last year of IT engineering because of the AI part (which included neural networks) I would have loved working on such technologies, because my teacher only gave us a scientific article about a neural network algorithm and asked us to implement it with Netlogo, which was a huge pain in the a*s to work with. Whereas with this library I understand the code and therefore the logic behind it almost instictively. So to the people behind it : good work, and thanks !
I dislike the way some courses insist on using crusty old academic languages to teach subjects that are much better served by modern real world languages. Is it so students are less likely to copy work from the web? Clunky, poorly documented systems putting people off programming and obfuscating the subject being taught seems ridiculous!
This gave me cold chills about all too many academic projects which led me to question my understanding. Much older and wiser I realize it was the horrid projects that were largely to blame for imposing such horrid implementations as 'learning material'.
Would really like to find something similar but that teaches how to implement the layers and the network too. I feel like I'm not going to become familiar with NN's until I understand how it's built underneath too.
NN as a concept is hard since it is taught with math, however, I found his book to be easier than any other books I've read as it uses minimal math and down to earth explanations. Since NNs can implemented in most languages, I wish that a universal NN language could be developed that anyone could use vs having to learn it from other languages.
Ha - I chuckled when I saw the [video] tag. I remember when Scrimba was first posted here and it is indeed great -- but the really fun part is the fact that they aren't really videos!
Ha - I chuckled when I saw the [video] tag. I remember when Scrimba was first posted here and it is indeed great -- but the really fun part is the fact that they aren't really videos!
You can actually get some useful NN performance if you do this sort of thing in the browser but using shaders in WebGL for doing the calculations on the GPU. There is a Keras JS if you have already trained a net.. I think it uses the GPU. https://transcranial.github.io/keras-js/
I thought the only output you could get from WebGL was pixels... I wonder if they're rendering the output layer on an off-screen canvas and reading the pixel values.
45 comments
[ 5.1 ms ] story [ 87.5 ms ] threadHere are some other neural networks in JS:
https://github.com/harthur/brain: Neural Networks in JS
https://github.com/stevenmiller888/mind: a flexible neural network library
https://github.com/cazala/synaptic: an architecture-free neural network library for node.js and the browser
Sllightly off topic, but the Machine Learning department of the University of Tokyo has built a whole set of libraries for machine learning in Javascript: http://mil-tokyo.github.io/miljs.html
Then there's dev mindshare. So many people know JS, empowering them would add bodies to meet rising ML demand. I learned Python specifically for TensorFlow. Python's easy to learn, but like any language takes much time to master. I've mastered JS, so Python was a frustrating little reset.
All that said, this cazala/synaptic project doesn't look promising to me save as showcase. Better to focus on exposing JS APIs on existing computation-graph GPU-runnable frameworks, eg node-tensorflow (https://github.com/node-tensorflow/node-tensorflow).
Is there something you'd like to share with us, Johnanneskanybal?
But if you still are after some code here is mine: http://htmlpreview.github.io/?https://github.com/aguaviva/Ar...
But as someone who has been taking video courses and seen youtube videos, somehow this was the final step I needed to get started on my idea. It was easy to follow along, the code was nice and clean (most importantly without convoluted variable naming), and the immediately-interactive code made it quick to test a few things, rather than having to fork a project, NPM install a thousand dependencies and then actually do some coding.
http://cs231n.github.io/
Happy to answer any questions people might have :)
The basic idea behind Scrimba is that we record events instead of pixels. So what you're seeing when you're watching a Scrimba screencast is simply a re-creation of what the creator did when creating the screencast (which is done in-browser).
Even the interactions with the live preview are recorder, through a DOM-recorder we've built.
This opens up for tons of possibilities, including enabling the viewer to interact with the code.
We will add support for server side languages (e.g. Python, Ruby, Node) in the future. However, it's not at the top of our list, as there are several core things we need to fix. Once we have a timeline for that, it'll surely be shared on our Gitter channel:
https://gitter.im/scrimba_community/Lobby?utm_source=share-l...
Next up on our feature list is to make the creation process a lot easier, by enabling the creator to edit the recording after it's done. Will likely be launched next week :)
switch your imgur to https to fix the SSL for your streamcast. looks really cool though!
Is this typical for this level of task?
For my own test project I only did 10k iterations/.3 learning rate on a 16 input, 32 hidden, and 1 output neuron network and my early tests on my "non-math" problem seemed good.
Does anybody have any good resources for that?
https://www.amazon.com/Make-Your-Own-Neural-Network-ebook/dp...
NN as a concept is hard since it is taught with math, however, I found his book to be easier than any other books I've read as it uses minimal math and down to earth explanations. Since NNs can implemented in most languages, I wish that a universal NN language could be developed that anyone could use vs having to learn it from other languages.
https://www.producthunt.com/topics/developer-tools
It works great if you train it with all possible combinations, but if you leave something out, my experience is it will make very poor predictions.