From f8701c8a91abd96fa18adafacf7866ffa7c46e89 Mon Sep 17 00:00:00 2001 From: Alec Helbling Date: Fri, 30 Dec 2022 22:32:44 -0500 Subject: [PATCH] Updated examples --- examples/cnn/cnn.py | 73 ++++++++++--------- .../neural_network/layers/parent_layers.py | 2 +- 2 files changed, 40 insertions(+), 35 deletions(-) diff --git a/examples/cnn/cnn.py b/examples/cnn/cnn.py index 38a14c2..6081778 100644 --- a/examples/cnn/cnn.py +++ b/examples/cnn/cnn.py @@ -1,26 +1,30 @@ from manim import * from PIL import Image -from manim_ml.neural_network.layers.convolutional import ConvolutionalLayer +from manim_ml.neural_network.layers.convolutional3d import Convolutional3DLayer from manim_ml.neural_network.layers.feed_forward import FeedForwardLayer from manim_ml.neural_network.layers.image import ImageLayer from manim_ml.neural_network.neural_network import NeuralNetwork +# Make the specific scene +config.pixel_height = 1200 +config.pixel_width = 1900 +config.frame_height = 7.0 +config.frame_width = 7.0 + def make_code_snippet(): code_str = """ # Make nn nn = NeuralNetwork([ - ImageLayer(numpy_image), - ConvolutionalLayer(3, 3, 3), - ConvolutionalLayer(5, 2, 2), - ConvolutionalLayer(10, 2, 1), + ImageLayer(numpy_image, height=1.5), + Convolutional3DLayer(1, 7, 7, 3, 3), + Convolutional3DLayer(3, 5, 5, 3, 3), + Convolutional3DLayer(5, 3, 3, 1, 1), FeedForwardLayer(3), - FeedForwardLayer(1) - ], layer_spacing=0.2) - # Center the nn - self.play(Create(nn)) + FeedForwardLayer(3), + ]) # Play animation - self.play(nn.make_forward_pass_animation(run_time=5)) + self.play(nn.make_forward_pass_animation()) """ code = Code( @@ -33,40 +37,41 @@ def make_code_snippet(): #background="window", language="py", ) - code.scale(0.6) + code.scale(0.50) return code - -# Make the specific scene -config.pixel_height = 1200 -config.pixel_width = 1900 -config.frame_height = 12.0 -config.frame_width = 12.0 - -class CombinedScene(ThreeDScene, Scene): +class CombinedScene(ThreeDScene): def construct(self): image = Image.open('../../assets/mnist/digit.jpeg') numpy_image = np.asarray(image) # Make nn nn = NeuralNetwork([ - ImageLayer(numpy_image, height=3.5), - ConvolutionalLayer(3, 3, 3, filter_spacing=0.2), - ConvolutionalLayer(5, 2, 2, filter_spacing=0.2), - ConvolutionalLayer(10, 2, 1, filter_spacing=0.2), - FeedForwardLayer(3, rectangle_stroke_width=4, node_stroke_width=4).scale(2), - FeedForwardLayer(1, rectangle_stroke_width=4, node_stroke_width=4).scale(2) - ], layer_spacing=0.2) - nn.scale(0.9) + ImageLayer(numpy_image, height=1.5), + Convolutional3DLayer(1, 7, 7, 3, 3, filter_spacing=0.32), + Convolutional3DLayer(3, 5, 5, 3, 3, filter_spacing=0.32), + Convolutional3DLayer(5, 3, 3, 1, 1, filter_spacing=0.18), + FeedForwardLayer(3), + FeedForwardLayer(3), + ], + layer_spacing=0.25, + ) + # Center the nn nn.move_to(ORIGIN) - nn.shift(UP*1.8) + self.add(nn) # Make code snippet code = make_code_snippet() - code.shift(DOWN*1.8) - # Center the nn - self.play(Create(nn)) + code.next_to(nn, DOWN) self.add(code) + # Group it all + group = Group(nn, code) + group.move_to(ORIGIN) # Play animation - # self.set_camera_orientation(phi=280* DEGREES, theta=-20*DEGREES, gamma=90 * DEGREES) - # self.begin_ambient_camera_rotation() - self.play(nn.make_forward_pass_animation(run_time=5)) + forward_pass = nn.make_forward_pass_animation( + corner_pulses=False, + all_filters_at_once=False + ) + self.wait(1) + self.play( + forward_pass + ) diff --git a/manim_ml/neural_network/layers/parent_layers.py b/manim_ml/neural_network/layers/parent_layers.py index ec0aa33..23929a3 100644 --- a/manim_ml/neural_network/layers/parent_layers.py +++ b/manim_ml/neural_network/layers/parent_layers.py @@ -45,7 +45,7 @@ class ThreeDLayer(ABC): three_d_x_rotation = 90 * DEGREES #-90 * DEGREES three_d_y_rotation = 0 * DEGREES # -10 * DEGREES rotation_angle = 60 * DEGREES - rotation_axis = [0.1, 0.9, 0] + rotation_axis = [0.0, 0.9, 0.0] class ConnectiveLayer(VGroupNeuralNetworkLayer): """Forward pass animation for a given pair of layers"""