Files
ManimML/tests/test_nn_dropout.py

81 lines
2.2 KiB
Python

from manim import *
from manim_ml.neural_network.animations.dropout import (
make_neural_network_dropout_animation,
)
from manim_ml.neural_network.layers.feed_forward import FeedForwardLayer
from manim_ml.neural_network.layers.image import ImageLayer
from PIL import Image
from manim_ml.neural_network.neural_network import NeuralNetwork
import numpy as np
config.pixel_height = 1200
config.pixel_width = 1900
config.frame_height = 5.0
config.frame_width = 5.0
def make_code_snippet():
code_str = """
nn = NeuralNetwork([
FeedForwardLayer(3),
FeedForwardLayer(5),
FeedForwardLayer(3),
FeedForwardLayer(5),
FeedForwardLayer(4),
])
self.play(
make_neural_network_dropout_animation(
nn, dropout_rate=0.25, do_forward_pass=True
)
)
"""
code = Code(
code=code_str,
tab_width=4,
background_stroke_width=1,
background_stroke_color=WHITE,
insert_line_no=False,
style="monokai",
language="py",
)
code.scale(0.28)
return code
class DropoutNeuralNetworkScene(Scene):
def construct(self):
# Make nn
nn = NeuralNetwork(
[
FeedForwardLayer(3, rectangle_color=BLUE),
FeedForwardLayer(5, rectangle_color=BLUE),
FeedForwardLayer(3, rectangle_color=BLUE),
FeedForwardLayer(5, rectangle_color=BLUE),
FeedForwardLayer(4, rectangle_color=BLUE),
],
layer_spacing=0.4,
)
# Center the nn
nn.move_to(ORIGIN)
self.add(nn)
# Make code snippet
code_snippet = make_code_snippet()
self.add(code_snippet)
code_snippet.next_to(nn, DOWN * 0.7)
Group(code_snippet, nn).move_to(ORIGIN)
# Play animation
self.play(
make_neural_network_dropout_animation(
nn, dropout_rate=0.25, do_forward_pass=True
)
)
self.wait(1)
if __name__ == "__main__":
"""Render all scenes"""
dropout_nn_scene = DropoutNeuralNetworkScene()
dropout_nn_scene.render()