Added updated VAEScene to the readme.

This commit is contained in:
Alec Helbling
2022-04-23 23:10:15 -04:00
parent 0152be64b0
commit 7d04bf55ec
3 changed files with 9 additions and 6 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 MiB

After

Width:  |  Height:  |  Size: 1.8 MiB

View File

@ -6,9 +6,10 @@ class EmbeddingLayer(VGroupNeuralNetworkLayer):
"""NeuralNetwork embedding object that can show probability distributions""" """NeuralNetwork embedding object that can show probability distributions"""
def __init__(self, point_radius=0.02, mean = np.array([0, 0]), def __init__(self, point_radius=0.02, mean = np.array([0, 0]),
covariance=np.array([[1.5, 0], [0, 1.5]]), **kwargs): covariance=np.array([[1.5, 0], [0, 1.5]]), dist_theme="gaussian", **kwargs):
super(VGroupNeuralNetworkLayer, self).__init__(**kwargs) super(VGroupNeuralNetworkLayer, self).__init__(**kwargs)
self.point_radius = point_radius self.point_radius = point_radius
self.dist_theme = dist_theme
self.axes = Axes( self.axes = Axes(
tips=False, tips=False,
x_length=0.8, x_length=0.8,
@ -19,7 +20,8 @@ class EmbeddingLayer(VGroupNeuralNetworkLayer):
self.point_cloud = self.construct_gaussian_point_cloud(mean, covariance) self.point_cloud = self.construct_gaussian_point_cloud(mean, covariance)
self.add(self.point_cloud) self.add(self.point_cloud)
# Make latent distribution # Make latent distribution
self.latent_distribution = GaussianDistribution(self.axes, mean=mean, cov=covariance) # Use defaults self.latent_distribution = GaussianDistribution(self.axes, mean=mean, cov=covariance,
dist_theme=self.dist_theme) # Use defaults
def sample_point_location_from_distribution(self): def sample_point_location_from_distribution(self):
"""Samples from the current latent distribution""" """Samples from the current latent distribution"""
@ -49,12 +51,12 @@ class EmbeddingLayer(VGroupNeuralNetworkLayer):
return point_dots return point_dots
def make_forward_pass_animation(self, dist_theme="gaussian", **kwargs): def make_forward_pass_animation(self, **kwargs):
"""Forward pass animation""" """Forward pass animation"""
# Make ellipse object corresponding to the latent distribution # Make ellipse object corresponding to the latent distribution
self.latent_distribution = GaussianDistribution( self.latent_distribution = GaussianDistribution(
self.axes, self.axes,
dist_theme=dist_theme, dist_theme=self.dist_theme,
cov=np.array([[0.8, 0], [0.0, 0.8]]) cov=np.array([[0.8, 0], [0.0, 0.8]])
) # Use defaults ) # Use defaults
# Create animation # Create animation

View File

@ -28,5 +28,6 @@ class VariationalAutoencoderScene(Scene):
neural_network.scale(1.3) neural_network.scale(1.3)
self.play(Create(neural_network)) self.play(Create(neural_network), run_time=3)
self.play(neural_network.make_forward_pass_animation(run_time=15)) self.play(neural_network.make_forward_pass_animation(), run_time=5)
self.play(neural_network.make_forward_pass_animation(), run_time=5)