Hello everyone,
As under my GSOC 2020 proposal, I’m thinking of developing a Machine learning library for Processing, since currently a large number of students are using processing in there machine and deep learning project as it offers a cool way to visualize data.
As in P5js there’re already some external tools available(tensorflow.js, ml5.js) but there’s almost no tool available for processing.
Now, the library I’m thinking to develop a library under the category of math, Creating an abstraction layer over algorithms for gradient descent, Neural network etc. So basically ultimate aim would be to create tensorflow for processing.
Please share your thoughts
If the library will actually add value to processing?
Thanks for sharing this. I don’t teach Machine Learning with Java Processing – I know that ml5.js got some Coding Train tutorials in 2018-19, so it might be worth sending @shiffman an email / github ping / messenger owl and asking his thoughts on what might be helpful for beginners in the Java mode.
Is your idea to build this “Tensorflow for Processing” library on top of the Tensorflow Java API and example? Something like the way that OpenCV for Processing is based on OpenCV’s official Java bindings?
Yes exactly, my idea is tensorflow for processing… But library would be more light weight and beginner friendly, which is core aim for processing foundation. Should I directly email @shiffman? also Whats your thought on this project?
Given what an exciting area machine learning is for digital art and data science it sounds like a good idea to me.
That said, working with ML can be a big undertaking, and I don’t have expertise specific expertise in teaching this in Java so I don’t have strong opinions about the right way to do it as an API or which technologies to build on. Possibly sticking close to the tensorflow API but using ml5.js as a model for accessibility / simplification?
One thing to evaluate might also be how “in flux” the Tensorflow Java API truly is (they have a disclaimer). If it is currently changing to0 rapidly that could disrupt the summer project or leave the result hard to update / frozen in time.
Actually, I’ve not thought of using tensoflow API. Right now i have a vague idea of implementing it(without tensorflow API) .
I used tensorflow to set a upper threshold(as a example).
mock implementation would be like
Model model= new Model();
model.setInputLayer=3;
model.setHiddenLayer=4;
model.setOutputLayer=2;
model.itteration=100;
model.input=arr;
model.train();
int[] arr = model.predict();
which is similar(easier) to tensorflow in terms of it’s methods and variable.
I might use tensorfloiw or code some basic functions from scratch.
The reason I’m reluctant to use any heavy library is because it’s aim isn’t heavy data science projects but fun animations (like codingtrain website).
The nice thing about a simplified API to a full industrial library is that it gives people a growth trajectory – they can learn with toy projects using e.g. a limited subset of OpenCV functionality, then utilize more of the API directly if they have advanced needs not addressed by the wrapper. My one concern about trying to recreate a machine learning library from scratch as a summer project is that is a lot of hard wheel-reinventing. Perhaps tensorflow is the wrong candidate, but in my personal opinion as a non-expert wrapping something that already exists in a simplified interface is probably better than reinventing a toy ML from scratch – better because it is more versatile, easier to maintain and better tested (because the core is already heavily used), already has peripheral documentation and examples (from the main project), and gives people an on-ramp to advanced projects.
Yes… very true, Creating an abstraction layer is obviously a better way of doing it. But i’ll first research which is best library for java because tensorflow java is depreciated. Can you help with some names who have experience on machine learning with processing?
I’m very interested in this idea! Since ml5.js is built on top of TensorFlow.js it might make sense to look at the API for that library as a consideration for a Processing one!
Nice to hear that… I’ll soon make and share mock working implementation of simplest neural network. Probably re-implementing nature of code’s neural network example ,just to showcase how it’ll look like.