Neural Networks

Example: MySimpleNeuralNetworkScene

../_images/MySimpleNeuralNetworkScene-1.png

Code: MySimpleNeuralNetworkScene

import manim as m

from manta.color_theme.catppucin.catppuccin_mocha import CatppuccinMochaTheme
from manta.components.neural_networks_utils import NeuralNetworkUtils
from manta.slide_templates.minimal.minimal_slide_template import MinimalSlideTemplate


class MySimpleNeuralNetworkScene(NeuralNetworkUtils, MinimalSlideTemplate):
    subtitle_color = CatppuccinMochaTheme.yellow
    title_seperator_color = CatppuccinMochaTheme.magenta

    def construct(self):
        nn = self.simple_neural_network()
        nn.scale(2.0) # make the network a bit bigger

        self.play(
            self.set_title_row(
                title="NeuralNetworkUtils",
                seperator=": ",
                subtitle="Simple Neural Network"
            ),
            m.FadeIn(nn),
        )


if __name__ == '__main__':
    MySimpleNeuralNetworkScene.render_video_medium()

Example: MyTwoHeadedNeuralNetworkScene

../_images/MyTwoHeadedNeuralNetworkScene-1.png

Code: MyTwoHeadedNeuralNetworkScene

import manim as m

from manta.color_theme.catppucin.catppuccin_mocha import CatppuccinMochaTheme
from manta.components.neural_networks_utils import NeuralNetworkUtils
from manta.slide_templates.minimal.minimal_slide_template import MinimalSlideTemplate


class MyTwoHeadedNeuralNetworkScene(NeuralNetworkUtils, MinimalSlideTemplate):
    subtitle_color = CatppuccinMochaTheme.yellow
    title_seperator_color = CatppuccinMochaTheme.magenta

    def construct(self):
        nn = self.two_headed_network()
        nn.scale(1.5) # make the network a bit bigger

        self.play(
            self.set_title_row(
                title="NeuralNetworkUtils",
                seperator=": ",
                subtitle="Two Headed Neural Network",
            ),
            m.FadeIn(nn),
        )


if __name__ == '__main__':
    MyTwoHeadedNeuralNetworkScene.render_video_medium()

Example: MyNetworkAnimationScene

Code: MyNetworkAnimationScene

import manim as m

from manta.color_theme.catppucin.catppuccin_mocha import CatppuccinMochaTheme
from manta.components.neural_networks_utils import NeuralNetworkUtils
from manta.slide_templates.minimal.minimal_slide_template import MinimalSlideTemplate


class MyNetworkAnimationScene(NeuralNetworkUtils, MinimalSlideTemplate):
    subtitle_color = CatppuccinMochaTheme.yellow
    title_seperator_color = CatppuccinMochaTheme.magenta

    def construct(self):
        nn = self.simple_neural_network(
            # make the blue for more contrast
            arrow_kwargs={"color": self.blue,},
            neuron_circle_kwargs={"stroke_color": self.blue, "fill_color": self.green, "fill_opacity": 0.2},
        )
        nn.scale(2.0) # scale the neural network

        self.play(
            self.set_title_row(
                title="NeuralNetworkUtils",
                seperator=": ",
                subtitle="simple_neural_network_forward_animation",
            ),
            m.FadeIn(nn),
        )

        self.play(
            self.simple_neural_network_forward_animation(nn),
        )

        self.play(
            self.simple_neural_network_forward_animation(
                nn,
                color=self.red,
                run_time=2.5
            ),
        )

        self.play(
            self.simple_neural_network_forward_animation(
                nn,
                color=self.yellow,
                run_time=2.5
            ),
        )
        self.wait(0.25)


        self.fade_out_scene()

if __name__ == '__main__':
    MyNetworkAnimationScene.render_video_medium()

Example: MyTwoHeadedNeuralNetworkAnimationScene

Code: MyTwoHeadedNeuralNetworkAnimationScene

import manim as m

from manta.color_theme.catppucin.catppuccin_mocha import CatppuccinMochaTheme
from manta.components.neural_networks_utils import NeuralNetworkUtils
from manta.slide_templates.minimal.minimal_slide_template import MinimalSlideTemplate


class MyTwoHeadedNeuralNetworkAnimationScene(NeuralNetworkUtils, MinimalSlideTemplate):
    subtitle_color = CatppuccinMochaTheme.yellow
    title_seperator_color = CatppuccinMochaTheme.magenta

    def construct(self):
        two_headed_nn = self.two_headed_network()

        self.play(
            self.set_title_row(
                title="NeuralNetworkUtils",
                seperator=": ",
                subtitle="two_headed_neural_network_forward_animation",
            ),
            m.FadeIn(two_headed_nn),
        )

        self.play(
            self.two_headed_neural_network_forward_animation(
                two_headed_nn,
                color=self.cyan
            ),
        )

        self.play(
            m.Transform(
                two_headed_nn,
                self.two_headed_network(
                    shared_network_kwargs={
                        "input_layer_dim": 12,
                        "hidden_layer_dim": 10,
                        "hidden_layer_n": 3,
                        "output_layer_dim": 9,
                    },
                    shared_network_color=self.green,
                    top_head_network_kwargs={
                        "input_layer_dim": 4,
                        "hidden_layer_dim": 3,
                        "hidden_layer_n": 2,
                        "output_layer_dim": 2,
                    },
                    top_head_network_color=self.cyan,
                    bottom_networks_kwargs={
                        "input_layer_dim": 2,
                        "hidden_layer_dim": 2,
                        "hidden_layer_n": 3,
                        "output_layer_dim": 2,
                    },
                    bottom_networks_color=self.magenta,
                )
            )
        )

        self.play(
            self.two_headed_neural_network_forward_animation(
                two_headed_nn,
                color=self.green,
                run_time=2.0
            ),
        )


if __name__ == '__main__':
    MyTwoHeadedNeuralNetworkAnimationScene.render_video_medium()

Example: MyNeuralNetworkExample

Code: MyNeuralNetworkExample

import manim as m

from manta.color_theme.catppucin.catppuccin_mocha import CatppuccinMochaTheme
from manta.components.neural_networks_utils import NeuralNetworkUtils
from manta.slide_templates.minimal.minimal_slide_template import MinimalSlideTemplate


class MyNeuralNetworkExample(NeuralNetworkUtils, MinimalSlideTemplate):
    subtitle_color = CatppuccinMochaTheme.yellow
    title_seperator_color = CatppuccinMochaTheme.magenta

    def construct(self):
        self.play(
            self.set_title_row(
                title="Neural Networks",
            )
        )

        example_nn = self.simple_neural_network()

        self.play(
            m.AnimationGroup(
                self.change_subtitle("Simple Neural Network"),
                m.FadeIn(example_nn),
                lag_ratio=0.85
            )
        )

        self.play(
            m.AnimationGroup(
                self.change_subtitle("Simple Neural Network Forward Pass Animation"),
                self.simple_neural_network_forward_animation(example_nn, color=self.yellow_bright),
                lag_ratio=0.85
            )
        )

        self.play(
            m.AnimationGroup(
                self.change_subtitle("Simple Neural Network with different architecture"),
                m.Transform(
                    example_nn,
                    self.simple_neural_network(
                        input_layer_dim=7,
                        hidden_layer_dim=5,
                        hidden_layer_n=3,
                        output_layer_dim=3,
                    )
                ),
                lag_ratio=0.85
            )
        )

        self.play(
            m.AnimationGroup(
                self.change_subtitle("Two Headed Neural Network"),
                m.Transform(
                    example_nn,
                    self.two_headed_network()
                ),
                lag_ratio=0.85
            )
        )

        self.play(
            m.AnimationGroup(
                self.change_subtitle("Two Headed Neural Network"),
                m.Transform(
                    example_nn,
                    self.two_headed_network(
                        shared_network_kwargs={
                            "input_layer_dim": 12,
                            "hidden_layer_dim": 10,
                            "hidden_layer_n": 3,
                            "output_layer_dim": 9,
                        },
                        shared_network_color=self.green,
                        top_head_network_kwargs={
                            "input_layer_dim": 4,
                            "hidden_layer_dim": 3,
                            "hidden_layer_n": 2,
                            "output_layer_dim": 2,
                        },
                        top_head_network_color=self.cyan,
                        bottom_networks_kwargs={
                            "input_layer_dim": 2,
                            "hidden_layer_dim": 2,
                            "hidden_layer_n": 3,
                            "output_layer_dim": 2,
                        },
                        bottom_networks_color=self.magenta,
                    )
                ),
                lag_ratio=0.85
            )
        )

        self.fade_out_scene()


if __name__ == '__main__':
    MyNeuralNetworkExample.render_video_medium()