From 0debb5f0085dc9a9b33d618e3db2d1e31a28de52 Mon Sep 17 00:00:00 2001 From: Gabriel Ayres Date: Wed, 4 Dec 2024 22:59:28 -0300 Subject: [PATCH 1/2] adding sigmoid noise schedule --- improved_diffusion/gaussian_diffusion.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/improved_diffusion/gaussian_diffusion.py b/improved_diffusion/gaussian_diffusion.py index 403d474f3b..e8febbe866 100644 --- a/improved_diffusion/gaussian_diffusion.py +++ b/improved_diffusion/gaussian_diffusion.py @@ -38,6 +38,13 @@ def get_named_beta_schedule(schedule_name, num_diffusion_timesteps): num_diffusion_timesteps, lambda t: math.cos((t + 0.008) / 1.008 * math.pi / 2) ** 2, ) + elif beta_schedule == "sigmoid": + scale = 1000 / num_diffusion_timesteps + beta_start = scale * 0.0001 + beta_end = scale * 0.02 + betas = np.linspace(-6, 6, num_diffusion_timesteps) + betas = (1/(np.exp(betas) + 1)) * (beta_end - beta_start) + beta_start + return betas else: raise NotImplementedError(f"unknown beta schedule: {schedule_name}") From e634c2e82800690ff21558aa5f901d836c4de1ed Mon Sep 17 00:00:00 2001 From: Gabriel Ayres Date: Wed, 4 Dec 2024 23:10:51 -0300 Subject: [PATCH 2/2] adding constant noise scheduler --- improved_diffusion/gaussian_diffusion.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/improved_diffusion/gaussian_diffusion.py b/improved_diffusion/gaussian_diffusion.py index e8febbe866..ae634cdece 100644 --- a/improved_diffusion/gaussian_diffusion.py +++ b/improved_diffusion/gaussian_diffusion.py @@ -38,13 +38,18 @@ def get_named_beta_schedule(schedule_name, num_diffusion_timesteps): num_diffusion_timesteps, lambda t: math.cos((t + 0.008) / 1.008 * math.pi / 2) ** 2, ) - elif beta_schedule == "sigmoid": + elif schedule_name == "constant": + scale = 1000 / num_diffusion_timesteps + beta_end = scale * 0.02 + return beta_end * np.ones( + num_diffusion_timesteps, dtype=np.float64 + ) + elif schedule_name == "sigmoid": scale = 1000 / num_diffusion_timesteps beta_start = scale * 0.0001 beta_end = scale * 0.02 betas = np.linspace(-6, 6, num_diffusion_timesteps) - betas = (1/(np.exp(betas) + 1)) * (beta_end - beta_start) + beta_start - return betas + return (1/(np.exp(betas) + 1)) * (beta_end - beta_start) + beta_start else: raise NotImplementedError(f"unknown beta schedule: {schedule_name}")