diff --git a/.gitignore b/.gitignore index 6d38729..0bfd98c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,9 @@ +__pycache__ +manim_ml.egg-info/ +manim_ml/manim_ml.egg-info/ +dist +manim_ml/media media -__pycache__ \ No newline at end of file +pyproject.toml +setup.cfg +!examples/media \ No newline at end of file diff --git a/Readme.md b/Readme.md index b800299..425de04 100644 --- a/Readme.md +++ b/Readme.md @@ -1,6 +1,6 @@ # Manim Machine Learning - + [![GitHub license](https://img.shields.io/github/license/helblazer811/ManimMachineLearning)](https://github.com/helblazer811/ManimMachineLearning/blob/main/LICENSE.md) @@ -28,16 +28,16 @@ Checkout the ```examples``` directory for some example videos with source code. This is a visualization of a Variational Autoencoder. - + ### VAE Disentanglement This is a visualization of disentanglement with a Variational Autoencoder - + ### Neural Networks This is a visualization of a Neural Network. - + diff --git a/src/disentanglement.py b/examples/disentanglement/disentanglement.py similarity index 86% rename from src/disentanglement.py rename to examples/disentanglement/disentanglement.py index db72353..4aea487 100644 --- a/src/disentanglement.py +++ b/examples/disentanglement/disentanglement.py @@ -1,7 +1,10 @@ """This module is dedicated to visualizing VAE disentanglement""" +import sys +import os +sys.path.append(os.environ["PROJECT_ROOT"]) from manim import * -from neural_network import NeuralNetwork -import util +from manim_ml.neural_network import NeuralNetwork +import manim_ml.util as util import pickle class VAEDecoder(VGroup): @@ -19,11 +22,11 @@ class VAEDecoder(VGroup): class DisentanglementVisualization(VGroup): - def __init__(self, model_path="autoencoder_models/saved_models/model_dim2.pth", image_height=0.35): + def __init__(self, model_path=os.path.join(os.environ["PROJECT_ROOT"], "examples/variational_autoencoder/autoencoder_models/saved_models/model_dim2.pth"), image_height=0.35): self.model_path = model_path self.image_height = image_height # Load disentanglement image objects - with open("autoencoder_models/disentanglement.pkl", "rb") as f: + with open(os.path.join(os.environ["PROJECT_ROOT"], "examples/variational_autoencoder/autoencoder_models/disentanglement.pkl"), "rb") as f: self.image_handler = pickle.load(f) def make_disentanglement_generation_animation(self): diff --git a/src/interpolation.py b/examples/interpolation/interpolation.py similarity index 93% rename from src/interpolation.py rename to examples/interpolation/interpolation.py index 2e11028..9928e87 100644 --- a/src/interpolation.py +++ b/examples/interpolation/interpolation.py @@ -6,8 +6,8 @@ sys.path.append(os.environ["PROJECT_ROOT"]) from manim import * import pickle import numpy as np -import neural_network -import variational_autoencoder +import manim_ml.neural_network as neural_network +import examples.variational_autoencoder.variational_autoencoder as variational_autoencoder """ The VAE Scene for the twitter video. diff --git a/examples/DisentanglementScene.gif b/examples/media/DisentanglementScene.gif similarity index 100% rename from examples/DisentanglementScene.gif rename to examples/media/DisentanglementScene.gif diff --git a/examples/DisentanglementScene.mp4 b/examples/media/DisentanglementScene.mp4 similarity index 100% rename from examples/DisentanglementScene.mp4 rename to examples/media/DisentanglementScene.mp4 diff --git a/examples/ManimMLLogo.gif b/examples/media/ManimMLLogo.gif similarity index 100% rename from examples/ManimMLLogo.gif rename to examples/media/ManimMLLogo.gif diff --git a/examples/NNImage.png b/examples/media/NNImage.png similarity index 100% rename from examples/NNImage.png rename to examples/media/NNImage.png diff --git a/examples/TestNeuralNetworkScene.gif b/examples/media/TestNeuralNetworkScene.gif similarity index 100% rename from examples/TestNeuralNetworkScene.gif rename to examples/media/TestNeuralNetworkScene.gif diff --git a/examples/TestNeuralNetworkScene.mp4 b/examples/media/TestNeuralNetworkScene.mp4 similarity index 100% rename from examples/TestNeuralNetworkScene.mp4 rename to examples/media/TestNeuralNetworkScene.mp4 diff --git a/examples/VAEImage.png b/examples/media/VAEImage.png similarity index 100% rename from examples/VAEImage.png rename to examples/media/VAEImage.png diff --git a/examples/VAEScene.gif b/examples/media/VAEScene.gif similarity index 100% rename from examples/VAEScene.gif rename to examples/media/VAEScene.gif diff --git a/examples/VAEScene.mp4 b/examples/media/VAEScene.mp4 similarity index 100% rename from examples/VAEScene.mp4 rename to examples/media/VAEScene.mp4 diff --git a/src/autoencoder_models/.DS_Store b/examples/variational_autoencoder/autoencoder_models/.DS_Store similarity index 100% rename from src/autoencoder_models/.DS_Store rename to examples/variational_autoencoder/autoencoder_models/.DS_Store diff --git a/src/__init__.py b/examples/variational_autoencoder/autoencoder_models/__init__.py similarity index 100% rename from src/__init__.py rename to examples/variational_autoencoder/autoencoder_models/__init__.py diff --git a/src/autoencoder_models/data/MNIST/raw/t10k-images-idx3-ubyte b/examples/variational_autoencoder/autoencoder_models/data/MNIST/raw/t10k-images-idx3-ubyte similarity index 100% rename from src/autoencoder_models/data/MNIST/raw/t10k-images-idx3-ubyte rename to examples/variational_autoencoder/autoencoder_models/data/MNIST/raw/t10k-images-idx3-ubyte diff --git a/src/autoencoder_models/data/MNIST/raw/t10k-images-idx3-ubyte.gz b/examples/variational_autoencoder/autoencoder_models/data/MNIST/raw/t10k-images-idx3-ubyte.gz similarity index 100% rename from src/autoencoder_models/data/MNIST/raw/t10k-images-idx3-ubyte.gz rename to examples/variational_autoencoder/autoencoder_models/data/MNIST/raw/t10k-images-idx3-ubyte.gz diff --git a/src/autoencoder_models/data/MNIST/raw/t10k-labels-idx1-ubyte b/examples/variational_autoencoder/autoencoder_models/data/MNIST/raw/t10k-labels-idx1-ubyte similarity index 100% rename from src/autoencoder_models/data/MNIST/raw/t10k-labels-idx1-ubyte rename to examples/variational_autoencoder/autoencoder_models/data/MNIST/raw/t10k-labels-idx1-ubyte diff --git a/src/autoencoder_models/data/MNIST/raw/t10k-labels-idx1-ubyte.gz b/examples/variational_autoencoder/autoencoder_models/data/MNIST/raw/t10k-labels-idx1-ubyte.gz similarity index 100% rename from src/autoencoder_models/data/MNIST/raw/t10k-labels-idx1-ubyte.gz rename to examples/variational_autoencoder/autoencoder_models/data/MNIST/raw/t10k-labels-idx1-ubyte.gz diff --git a/src/autoencoder_models/data/MNIST/raw/train-images-idx3-ubyte b/examples/variational_autoencoder/autoencoder_models/data/MNIST/raw/train-images-idx3-ubyte similarity index 100% rename from src/autoencoder_models/data/MNIST/raw/train-images-idx3-ubyte rename to examples/variational_autoencoder/autoencoder_models/data/MNIST/raw/train-images-idx3-ubyte diff --git a/src/autoencoder_models/data/MNIST/raw/train-images-idx3-ubyte.gz b/examples/variational_autoencoder/autoencoder_models/data/MNIST/raw/train-images-idx3-ubyte.gz similarity index 100% rename from src/autoencoder_models/data/MNIST/raw/train-images-idx3-ubyte.gz rename to examples/variational_autoencoder/autoencoder_models/data/MNIST/raw/train-images-idx3-ubyte.gz diff --git a/src/autoencoder_models/data/MNIST/raw/train-labels-idx1-ubyte b/examples/variational_autoencoder/autoencoder_models/data/MNIST/raw/train-labels-idx1-ubyte similarity index 100% rename from src/autoencoder_models/data/MNIST/raw/train-labels-idx1-ubyte rename to examples/variational_autoencoder/autoencoder_models/data/MNIST/raw/train-labels-idx1-ubyte diff --git a/src/autoencoder_models/data/MNIST/raw/train-labels-idx1-ubyte.gz b/examples/variational_autoencoder/autoencoder_models/data/MNIST/raw/train-labels-idx1-ubyte.gz similarity index 100% rename from src/autoencoder_models/data/MNIST/raw/train-labels-idx1-ubyte.gz rename to examples/variational_autoencoder/autoencoder_models/data/MNIST/raw/train-labels-idx1-ubyte.gz diff --git a/src/autoencoder_models/disentanglement.pkl b/examples/variational_autoencoder/autoencoder_models/disentanglement.pkl similarity index 100% rename from src/autoencoder_models/disentanglement.pkl rename to examples/variational_autoencoder/autoencoder_models/disentanglement.pkl diff --git a/src/autoencoder_models/generate_disentanglement.py b/examples/variational_autoencoder/autoencoder_models/generate_disentanglement.py similarity index 100% rename from src/autoencoder_models/generate_disentanglement.py rename to examples/variational_autoencoder/autoencoder_models/generate_disentanglement.py diff --git a/src/autoencoder_models/generate_images.py b/examples/variational_autoencoder/autoencoder_models/generate_images.py similarity index 100% rename from src/autoencoder_models/generate_images.py rename to examples/variational_autoencoder/autoencoder_models/generate_images.py diff --git a/src/autoencoder_models/generate_interpolation.py b/examples/variational_autoencoder/autoencoder_models/generate_interpolation.py similarity index 100% rename from src/autoencoder_models/generate_interpolation.py rename to examples/variational_autoencoder/autoencoder_models/generate_interpolation.py diff --git a/src/autoencoder_models/image_pairs.pkl b/examples/variational_autoencoder/autoencoder_models/image_pairs.pkl similarity index 100% rename from src/autoencoder_models/image_pairs.pkl rename to examples/variational_autoencoder/autoencoder_models/image_pairs.pkl diff --git a/src/autoencoder_models/interpolations.pkl b/examples/variational_autoencoder/autoencoder_models/interpolations.pkl similarity index 100% rename from src/autoencoder_models/interpolations.pkl rename to examples/variational_autoencoder/autoencoder_models/interpolations.pkl diff --git a/src/autoencoder_models/saved_models/model_dim16.pth b/examples/variational_autoencoder/autoencoder_models/saved_models/model_dim16.pth similarity index 100% rename from src/autoencoder_models/saved_models/model_dim16.pth rename to examples/variational_autoencoder/autoencoder_models/saved_models/model_dim16.pth diff --git a/src/autoencoder_models/saved_models/model_dim2.pth b/examples/variational_autoencoder/autoencoder_models/saved_models/model_dim2.pth similarity index 100% rename from src/autoencoder_models/saved_models/model_dim2.pth rename to examples/variational_autoencoder/autoencoder_models/saved_models/model_dim2.pth diff --git a/src/autoencoder_models/saved_models/model_dim2_cnn.pth b/examples/variational_autoencoder/autoencoder_models/saved_models/model_dim2_cnn.pth similarity index 100% rename from src/autoencoder_models/saved_models/model_dim2_cnn.pth rename to examples/variational_autoencoder/autoencoder_models/saved_models/model_dim2_cnn.pth diff --git a/src/autoencoder_models/saved_models/model_dim5.pth b/examples/variational_autoencoder/autoencoder_models/saved_models/model_dim5.pth similarity index 100% rename from src/autoencoder_models/saved_models/model_dim5.pth rename to examples/variational_autoencoder/autoencoder_models/saved_models/model_dim5.pth diff --git a/src/autoencoder_models/variational_autoencoder.py b/examples/variational_autoencoder/autoencoder_models/variational_autoencoder.py similarity index 97% rename from src/autoencoder_models/variational_autoencoder.py rename to examples/variational_autoencoder/autoencoder_models/variational_autoencoder.py index 229acd2..a3363c7 100644 --- a/src/autoencoder_models/variational_autoencoder.py +++ b/examples/variational_autoencoder/autoencoder_models/variational_autoencoder.py @@ -198,7 +198,12 @@ def train_model(latent_dim=16, plot=True, digit=1, epochs=200): losses.append(loss.detach().cpu()) outputs.append((epochs, image, reconstructed)) - torch.save(model.state_dict(), os.path.join(os.environ["PROJECT_ROOT"], f"saved_models/model_dim{latent_dim}.pth")) + torch.save(model.state_dict(), + os.path.join( + os.environ["PROJECT_ROOT"], + f"examples/variational_autoencoder/autoencoder_model/saved_models/model_dim{latent_dim}.pth" + ) + ) if plot: # Defining the Plot Style diff --git a/src/variational_autoencoder.py b/examples/variational_autoencoder/variational_autoencoder.py similarity index 98% rename from src/variational_autoencoder.py rename to examples/variational_autoencoder/variational_autoencoder.py index d6b4fb2..6322150 100644 --- a/src/variational_autoencoder.py +++ b/examples/variational_autoencoder/variational_autoencoder.py @@ -8,7 +8,7 @@ from manim import * import pickle import numpy as np import os -import neural_network +import manim_ml.neural_network as neural_network class VariationalAutoencoder(VGroup): """Variational Autoencoder Manim Visualization""" @@ -244,8 +244,8 @@ class MNISTImageHandler(): def __init__( self, - image_pairs_file_path=os.path.join(os.environ["PROJECT_ROOT"], "autoencoder_models/image_pairs.pkl"), - interpolations_file_path=os.path.join(os.environ["PROJECT_ROOT"], "autoencoder_models/interpolations.pkl") + image_pairs_file_path=os.path.join(os.environ["PROJECT_ROOT"], "examples/variational_autoencoder/autoencoder_models/image_pairs.pkl"), + interpolations_file_path=os.path.join(os.environ["PROJECT_ROOT"], "examples/variational_autoencoder/autoencoder_models/interpolations.pkl") ): self.image_pairs_file_path = image_pairs_file_path self.interpolations_file_path = interpolations_file_path diff --git a/src/autoencoder_models/__init__.py b/manim_ml/__init__.py similarity index 100% rename from src/autoencoder_models/__init__.py rename to manim_ml/__init__.py diff --git a/src/logo.py b/manim_ml/logo.py similarity index 100% rename from src/logo.py rename to manim_ml/logo.py diff --git a/src/neural_network.py b/manim_ml/neural_network.py similarity index 100% rename from src/neural_network.py rename to manim_ml/neural_network.py diff --git a/src/probability_embedding.py b/manim_ml/probability_embedding.py similarity index 100% rename from src/probability_embedding.py rename to manim_ml/probability_embedding.py diff --git a/src/util.py b/manim_ml/util.py similarity index 100% rename from src/util.py rename to manim_ml/util.py