Create deep learning models with Flowpoints
An intuitive way to build and share deep learning models.
I often find myself explaining how my models work. Sometimes I try to put it in layman’s terms, sometimes I just explain it as a black box, and sometimes I draw interconnected nodes representing parts of a neural net.
Flowpoints is an open-sourced online tool in which users can build deep learning models in a flowchart kind of manner.
By creating nodes representing operations in a neural net (flowpoints), connecting these to each other, and changing their parameters, you can quickly create a deep learning model.
The corresponding Python code can be viewed in the browser, or copied to the clip-board with just one click.
With a single menu you can choose wether you’d like the code to utilize TensorFlow or PyTorch.
… and you can easily create shareable links to your models!
A quick example
So let’s try it out! For this example we’ll create the following model, which in turn will be trained on the CIFAR10 dataset.
First: Create a new model
Start by heading over to flowpoints.io. A rather empty user-interface should show up on your screen.
In the sidebar, click the Library-dropdown, and select TensorFlow. Now the code for our model will use TensorFlow instead of PyTorch.
Next, click on the Theme-dropdown and select “orange”. This has no practical value, but we’re coding with style here.
Second: Add some flowpoints to your model
Add some operations to your model. Click the blue + button to create a single new flowpoint. The first flowpoint that show up should say “Input”. This point will be used to tell the model the shape of our input. We’ll get back to that.
Without clicking anywhere else, click the + button a few more times. A bunch of flowpoints should pop up beneath each other, and connect automatically.
If you’re missing a connection: click the flowpoint you want to take the output from, hold shift, and click on the flowpoint you want to connect it to. The connection should show up immediately. To remove the connection, just repeat this procedure.
Create as many flowpoints as you’d like, and arrange them however you prefer. Or just copy the model in the picture.
Third: Changing the layer types
By now you’ve got a big bunch of linear operations. Those won’t help us much. It’s time to tell each flowpoint what it should do.
Click on the first flowpoint (the “Input”), and select the Flowpoint-tab in the sidebar. Make sure the “n_dims”-box is set to 3, and the “dimensions” read 32, 32, 3. These are the dimensions of pictures in the CIFAR10 dataset.
Click the next flowpoint (the one connected to the input), and click on the “Layer type”-area. Here you’ll change the operation of this flowpoint. Start by removing all text in this field, and type “Conv”. A list of operations should show up, with Conv2d being pretty close to the top. Select this operation.
The tiny orange and blue badges indicate what library the layer in question is available in.
The parameters of the flowpoint should change to match those of the Conv2D-operation in TensorFlow.
Set all parameters to something that makes sense (you can use my model as an example).
Repeat this step for all flowpoints, changing their layer types and parameters so they make sense.
Fourth: Take a look at the code!
Click the “Code”-tab in the sidebar to display the code for your current model. It should look something like this:
The entire code looks like this:
To share your work or save it for later: Click the link-sharing button in the small stack of buttons in the lower left of your screen. A dialog will pop up, asking you for a password. This can be used to protect your model. If you want to create a public link (like I did for this example), just leave the password field empty.
To copy the code for your model, click the copy-button in the button stack. A notification will pop up, telling you that the code was copied to your clip-board. You can paste this directly into your pipeline. You can find the code for my model in the colab I created for this little walkthrough :)
Thanks for reading!
Feel free to share any feedback, open new issues if you find bugs (the code is open-sourced), or add functionality and patches yourself!