Skip to main content


Learn About Our Meetup

5000+ Members



Join our meetup, learn, connect, share, and get to know your Toronto AI community. 



Browse through the latest deep learning, ai, machine learning postings from Indeed for the GTA.



Are you looking to sponsor space, be a speaker, or volunteer, feel free to give us a shout.

[P] Neural Network Model Builder & Visualiser |

[P] Neural Network Model Builder & Visualiser |


I recently discovered the Mithril.js JavaScript library and wanted a project to build up my skills with it! I ended up going with a simple web app for visualising and editing network models which I’ve named I’ve wanted to build something like this for a while since it seemed like a really good project to improve my web development skills and my understanding of the process of building deep learning models. After reading this post on /r/deeplearning where the writer gives insight into the modular nature of deep learning and gives the analogy of a deep learning ‘lego set’ it gave me the motivation to start work on this with that sort of vision in mind and I’ve now got a decent working web app!

I’m sure there are existing tools similar to this in existence, so I wanted to keep it as simple as possible and not try to over-engineer it. It’s meant to be easy and simple to use!

Importing Models

It has some cool features at the moment, like the ability to parse Sequential() model definitions in Keras e.g.

test_model = Sequential() test_model.add(Conv2D(64,(5,5), activation='relu')) test_model.add(MaxPooling2D((2,2))) test_model.add(Dropout(0.25)) 

(Alternatively you can paste in Keras JSON definitions from for example test_model.to_json())

Once that simple model definition is imported it will be parsed by the app to create the following neat visualisation:

Editing Models

From here, you can make all the typical changes you would want to make to a model, including changing/adding layer parameters, adding new layers, changing the order of layers and removing layers, all without having to rely on Google to find the names of layers or their attributes. It can then be easily exported (or copied to the clipboard) with one click as either Python Keras code or a JSON spec which can be imported into Keras.

Building Models

It also has some nice features for building models from scratch, like the ability to add blocks of layers that come up in models frequently. Often it’s easy to forget the exact optimal order of layers for say a Convolutional block e.g. should pooling come before dropout or vice versa, and what about BatchNorm? Having preconfigured blocks of layers to choose from when building a model helps with this.

On top of that, just having an easily indexable list of layers is useful in itself.

Browsing Models

There is also a host of existing model architectures for a variety of machine learning tasks/datasets to explore and this is one of the most helpful features for me personally. Having an easy and centralised way to access a bunch of existing standard model architectures to take inspiration from is really useful! Rather than creating a model from scratch, you can find an existing model on the site, change say the input shape and a few of the hyperparameters and export it as working Keras code in just a few clicks. It’s also great for learning about the different architectures commonly used in building models.

Planned Features

  • Integration with TensorFlow.js to have some kind of in-browser training/prototyping
  • The ability to share your own model architectures
  • Support for variables. Currently you can specify meta tags for a model like ‘name’ and ‘source’. It would be cool to be able to specify variables in this same key/value fashion to allow even easier tuning.
  • Better mobile support. The site is relatively responsive at the moment, but not perfect. Hopefully you’re not building Keras models on your phone to begin with, but it will work if that’s something you wish to do 😁

So, I’d love to get some feedback on this project! Is it useful? Do you like the design? I’m open to criticism, this is primarily for me to learn 😁

Thanks for reading!

submitted by /u/DataSnaek
[link] [comments]