- Most Beautiful Hack
- Most Socially Useful Hack
Currently, open-source ML software like H2O.ai, Apache Spark, and Scala are far from noob-friendly. Complex syntax and nigh-incomprehensible documentation make them practically inaccessible to beginners. Drawing inspiration from MIT’s Scratch application (an interactive block-based programming language used to teach programming fundamentals to kids), we created a block-based neural network construction sandbox. The different blocks in the palette represent the different layers that are commonly used to create neural networks. By abstracting away these components into blocks, the user need not worry about syntactical complexities and errors and can focus on learning the fundamental concepts and different architectures of neural networks that are present today. The documentation includes more detailed descriptions of the abstracted components as well as links to the documentation of the modules used.
How we built the app
The application runs on the web using a public GitHub hosted server. The frontend was created using a raw HTML, CSS, and JS foundation. The code for the project can be found on the GitHub repo provided.
We used the Keras ML library that serves as a high-level API on the existing TensorFlow code. By stacking the blocks together, we were invariably stacking the Keras layers one on top of the other to create a neural network.
The Export function takes the blocks present in the sandbox space and writes the Keras code for the user in a ‘model.py’ file that can be downloaded and saved.
Challenges we ran into
Designing the UI to be as user-friendly and intuitive for beginners exploring Neural Networks as possible. There were terms and ML parlances that are usually associated with mathematical concepts that a beginner might not be able to understand. We had to make the documentation easy to read and understand without heavily depending on the use of jargon. We had to figure out how to modularize the neural network layers in order to maximize understandability.
Accomplishments that we're proud of
We had to drop our original idea of developing a handwriting improvement software halfway through the hackathon. As a result, we had to think of a new project and build a prototype as quickly as possible. Completing this project within 12 hours provided us an additional obstacle, and we are proud to have overcome it. We are deeply indebted to the coffee booth for their support.
What we learned
Representing the code for different layers via different blocks forced us to make our code modular. This helped make our code far more structured and helped us appreciate the benefits of modular, structured code. We had to understand the needs of the beginners to make it easily accessible to them. This forced us to abandon the assumptions we may have held based on our prior knowledge. We are now more comfortable designing programs that are intuitive for beginners.
What's next for MLBlocks
The team has discussed several problems and issues that still exist within the application. We highlighted a few updates that can be worked on to improve the overall quality and experience. The list includes:
- Exporting options that support C++, TensorFlow, and pure python3
- Draggable and editable Layer blocks (to simulate the Lego experience)
- Loading pre-built models
- Interactive tutorials and demos
- Terminal/Command prompt to run models
- Importing datasets like MNIST, Boston Housing Price, CIFAR10, CIFAR100, and Reuters-21578 to train models.
Thank you and "Service with Honour". ~ Team SwoleOverflow (NJC)