From b767b9abeec6d3202ab034dc376f77aafea0423f Mon Sep 17 00:00:00 2001 From: Alec Helbling Date: Fri, 27 Jan 2023 14:20:11 -0500 Subject: [PATCH] Simplified namespace so layers can be imported from manim_ml.neural_network --- Readme.md | 4 +--- examples/readme_example/example.py | 4 +--- manim_ml/neural_network/__init__.py | 23 +++++++++++++++++++ .../neural_network/architectures/__init__.py | 0 .../architectures/feed_forward.py | 15 ++++++++++++ .../variational_autoencoder.py | 0 manim_ml/neural_network/neural_network.py | 15 ------------ tests/test_feed_forward.py | 14 +++++++++++ 8 files changed, 54 insertions(+), 21 deletions(-) create mode 100644 manim_ml/neural_network/architectures/__init__.py create mode 100644 manim_ml/neural_network/architectures/feed_forward.py rename manim_ml/neural_network/{ => architectures}/variational_autoencoder.py (100%) create mode 100644 tests/test_feed_forward.py diff --git a/Readme.md b/Readme.md index 5f5bacb..7909765 100644 --- a/Readme.md +++ b/Readme.md @@ -37,9 +37,7 @@ https://user-images.githubusercontent.com/14181830/214898495-ff40c679-3f79-4954- ```python from manim import * -from manim_ml.neural_network.layers.convolutional_2d import Convolutional2DLayer -from manim_ml.neural_network.layers.feed_forward import FeedForwardLayer -from manim_ml.neural_network.neural_network import NeuralNetwork +from manim_ml.neural_network import Convolutional2DLayer, FeedForwardLayer, NeuralNetwork # Make the specific scene config.pixel_height = 700 diff --git a/examples/readme_example/example.py b/examples/readme_example/example.py index cf5e232..66d64b5 100644 --- a/examples/readme_example/example.py +++ b/examples/readme_example/example.py @@ -1,8 +1,6 @@ from manim import * -from manim_ml.neural_network.layers.convolutional_2d import Convolutional2DLayer -from manim_ml.neural_network.layers.feed_forward import FeedForwardLayer -from manim_ml.neural_network.neural_network import NeuralNetwork +from manim_ml.neural_network import Convolutional2DLayer, FeedForwardLayer, NeuralNetwork # Make the specific scene config.pixel_height = 700 diff --git a/manim_ml/neural_network/__init__.py b/manim_ml/neural_network/__init__.py index e69de29..bd0d6cc 100644 --- a/manim_ml/neural_network/__init__.py +++ b/manim_ml/neural_network/__init__.py @@ -0,0 +1,23 @@ +from manim_ml.neural_network.neural_network import NeuralNetwork +from manim_ml.neural_network.layers.feed_forward import FeedForwardLayer +from manim_ml.neural_network.layers.convolutional_2d_to_convolutional_2d import Convolutional2DToConvolutional2D +from manim_ml.neural_network.layers.convolutional_2d_to_feed_forward import Convolutional2DToFeedForward +from manim_ml.neural_network.layers.convolutional_2d_to_max_pooling_2d import Convolutional2DToMaxPooling2D +from manim_ml.neural_network.layers.convolutional_2d import Convolutional2DLayer +from manim_ml.neural_network.layers.embedding_to_feed_forward import EmbeddingToFeedForward +from manim_ml.neural_network.layers.embedding import EmbeddingLayer +from manim_ml.neural_network.layers.feed_forward_to_embedding import FeedForwardToEmbedding +from manim_ml.neural_network.layers.feed_forward_to_feed_forward import FeedForwardToFeedForward +from manim_ml.neural_network.layers.feed_forward_to_image import FeedForwardToImage +from manim_ml.neural_network.layers.feed_forward_to_vector import FeedForwardToVector +from manim_ml.neural_network.layers.feed_forward import FeedForwardLayer +from manim_ml.neural_network.layers.image_to_convolutional_2d import ImageToConvolutional2DLayer +from manim_ml.neural_network.layers.image_to_feed_forward import ImageToFeedForward +from manim_ml.neural_network.layers.image import ImageLayer +from manim_ml.neural_network.layers.max_pooling_2d_to_convolutional_2d import MaxPooling2DToConvolutional2D +from manim_ml.neural_network.layers.max_pooling_2d import MaxPooling2DLayer +from manim_ml.neural_network.layers.paired_query_to_feed_forward import PairedQueryToFeedForward +from manim_ml.neural_network.layers.paired_query import PairedQueryLayer +from manim_ml.neural_network.layers.triplet_to_feed_forward import TripletToFeedForward +from manim_ml.neural_network.layers.triplet import TripletLayer +from manim_ml.neural_network.layers.vector import VectorLayer \ No newline at end of file diff --git a/manim_ml/neural_network/architectures/__init__.py b/manim_ml/neural_network/architectures/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/manim_ml/neural_network/architectures/feed_forward.py b/manim_ml/neural_network/architectures/feed_forward.py new file mode 100644 index 0000000..3536d6f --- /dev/null +++ b/manim_ml/neural_network/architectures/feed_forward.py @@ -0,0 +1,15 @@ +from manim_ml.neural_network.layers.feed_forward import FeedForwardLayer + +class FeedForwardNeuralNetwork(NeuralNetwork): + """NeuralNetwork with just feed forward layers""" + + def __init__(self, layer_node_count, node_radius=0.08, node_color=BLUE, **kwargs): + # construct layers + layers = [] + for num_nodes in layer_node_count: + layer = FeedForwardLayer( + num_nodes, node_color=node_color, node_radius=node_radius + ) + layers.append(layer) + # call super class + super().__init__(layers, **kwargs) diff --git a/manim_ml/neural_network/variational_autoencoder.py b/manim_ml/neural_network/architectures/variational_autoencoder.py similarity index 100% rename from manim_ml/neural_network/variational_autoencoder.py rename to manim_ml/neural_network/architectures/variational_autoencoder.py diff --git a/manim_ml/neural_network/neural_network.py b/manim_ml/neural_network/neural_network.py index 65935fe..83a7e21 100644 --- a/manim_ml/neural_network/neural_network.py +++ b/manim_ml/neural_network/neural_network.py @@ -339,18 +339,3 @@ class NeuralNetwork(Group): string_repr = "NeuralNetwork([\n" + inner_string + "])" return string_repr - - -class FeedForwardNeuralNetwork(NeuralNetwork): - """NeuralNetwork with just feed forward layers""" - - def __init__(self, layer_node_count, node_radius=0.08, node_color=BLUE, **kwargs): - # construct layers - layers = [] - for num_nodes in layer_node_count: - layer = FeedForwardLayer( - num_nodes, node_color=node_color, node_radius=node_radius - ) - layers.append(layer) - # call super class - super().__init__(layers, **kwargs) diff --git a/tests/test_feed_forward.py b/tests/test_feed_forward.py new file mode 100644 index 0000000..70b71bf --- /dev/null +++ b/tests/test_feed_forward.py @@ -0,0 +1,14 @@ +from manim import * + +from manim_ml.neural_network import NeuralNetwork, FeedForwardLayer + +class FeedForwardScene(Scene): + + def construct(self): + nn = NeuralNetwork([ + FeedForwardLayer(3), + FeedForwardLayer(5), + FeedForwardLayer(3) + ]) + + self.add(nn) \ No newline at end of file