# ManimML
[](https://github.com/helblazer811/ManimMachineLearning/blob/main/LICENSE.md)
[](https://img.shields.io/github/v/release/helblazer811/ManimMachineLearning)

[](https://twitter.com/alec_helbling)
ManimML is a project focused on providing animations and visualizations of common machine learning concepts with the [Manim Community Library](https://www.manim.community/). We want this project to be a compilation of primitive visualizations that can be easily combined to create videos about complex machine learning concepts. Additionally, we want to provide a set of abstractions which allow users to focus on explanations instead of software engineering.
## Table of Contents
1. [Getting Started](#getting-started)
2. [Examples](#examples)
## Getting Started
First you will want to [install manim](https://docs.manim.community/en/stable/installation.html).
Then install the package form source or
`pip install manim_ml`
Then you can run the following to generate the example videos from python scripts.
`manim -pqh src/vae.py VAEScene`
## Examples
Checkout the ```examples``` directory for some example videos with source code.
### Neural Networks
This is a visualization of a Variational Autoencoder made using ManimML. It has a Pytorch style list of layers that can be composed in arbitrary order. The following video is made with the code from below.
```python
class VariationalAutoencoderScene(Scene):
def construct(self):
embedding_layer = EmbeddingLayer(dist_theme="ellipse").scale(2)
image = Image.open('images/image.jpeg')
numpy_image = np.asarray(image)
# Make nn
neural_network = NeuralNetwork([
ImageLayer(numpy_image, height=1.4),
FeedForwardLayer(5),
FeedForwardLayer(3),
embedding_layer,
FeedForwardLayer(3),
FeedForwardLayer(5),
ImageLayer(numpy_image, height=1.4),
], layer_spacing=0.1)
neural_network.scale(1.3)
self.play(Create(neural_network))
self.play(neural_network.make_forward_pass_animation(run_time=15))
```
### Convolutional Neural Network
This is a visualization of a Convolutional Neural Network.
### Generative Adversarial Network
This is a visualization of a Generative Adversarial Network made using ManimML.
### VAE Disentanglement
This is a visualization of disentanglement with a Variational Autoencoder