noiseschedule
Time-dependent noise schedules for DDPM diffusion models.
This module defines an abstract base class for noise schedules and several concrete implementations for mapping a normalized time variable \(t \in [0,1]\) to the noise parameters \(\beta(t)\), \(\sigma(t)\), and \(\gamma(t)\):
- QuadraticVarianceNoiseSchedule: \(\sigma(t)\propto(\sqrt{\sigma_{\min}/\sigma_{\max}}+t)^2\).
- LinearVarianceNoiseSchedule: \(\sigma(t)\propto(\sigma_{\min}/\sigma_{\max}+t)\).
- ExponentialVarianceNoiseSchedule: \(\sigma(t)=\sigma_{\min}^{1-t}\,\sigma_{\max}^t\).
NoiseSchedule(*, sigma_min, sigma_max)
dataclass
¶
Bases: DefaultDataClass, ABC
Abstract base class for time-dependent noise schedules.
Defines the noise schedule \(\beta(t)\), the cummulative noise scale \(\sigma(t)\), and the mean drift \(\gamma(t)\) for a diffusion process given a normalized time \(t \in [0,1]\).
Attributes:
-
sigma_min(float) –Minimum noise scale at \(t=0\).
-
sigma_max(float) –Maximum noise scale at \(t=1\).
Methods:
-
beta–Instantaneous noise rate \(\beta(t)\).
-
sigma–Noise scale \(\sigma(t)\).
-
gamma–Mean drift \(\gamma(t)\).
beta(t)
abstractmethod
¶
Instantaneous noise rate \(\beta(t)\).
Parameters:
-
t((array_like, shape(dim1))) –Normalized time steps \(t \in [0,1]\).
Returns:
-
beta_t((array_like, shape(dim1))) –Noise rate at each time.
Source code in src/fpsl/ddm/noiseschedule.py
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | |
sigma(t)
abstractmethod
¶
Noise scale \(\sigma(t)\).
Parameters:
-
t((array_like, shape(dim1))) –Normalized time steps \(t \in [0,1]\).
Returns:
-
sigma_t((array_like, shape(dim1))) –Noise magnitude at each time.
Source code in src/fpsl/ddm/noiseschedule.py
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | |
gamma(t)
abstractmethod
¶
Mean drift \(\gamma(t)\).
Parameters:
-
t((array_like, shape(dim1))) –Normalized time steps \(t \in [0,1]\).
Returns:
-
gamma_t((array_like, shape(dim1))) –Mean drift at each time.
Source code in src/fpsl/ddm/noiseschedule.py
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | |
QuadraticVarianceNoiseSchedule(*, sigma_min=0.07, sigma_max=0.5)
dataclass
¶
Bases: NoiseSchedule
Quadratic variance-exploding noise schedule.
Defines:
Attributes:
-
sigma_min(float, default=0.07) –Starting noise scale.
-
sigma_max(float, default=0.5) –Ending noise scale.
gamma(t)
¶
No drift; not implemented.
Source code in src/fpsl/ddm/noiseschedule.py
137 138 139 | |
sigma(t)
¶
Compute \(\sigma(t)\) as above.
Source code in src/fpsl/ddm/noiseschedule.py
141 142 143 144 145 | |
beta(t)
¶
Compute \(\beta(t) = \frac{d}{dt}\sigma(t)^2\) via autograd.
Source code in src/fpsl/ddm/noiseschedule.py
147 148 149 | |
LinearVarianceNoiseSchedule(*, sigma_min=0.05, sigma_max=0.5)
dataclass
¶
Bases: NoiseSchedule
Linear variance–exploding noise schedule.
Defines:
gamma(t)
¶
No drift; not implemented.
Source code in src/fpsl/ddm/noiseschedule.py
174 175 176 | |
sigma(t)
¶
Compute \(\sigma(t)\) as above.
Source code in src/fpsl/ddm/noiseschedule.py
178 179 180 181 182 | |
beta(t)
¶
Compute \(\beta(t) = \frac{d}{dt}\sigma(t)^2\) via autograd.
Source code in src/fpsl/ddm/noiseschedule.py
184 185 186 | |
ExponetialVarianceNoiseSchedule(*, sigma_min=0.05, sigma_max=0.5)
dataclass
¶
Bases: NoiseSchedule
Exponential variance-exploding noise schedule.
Defines:
gamma(t)
¶
No drift; not implemented.
Source code in src/fpsl/ddm/noiseschedule.py
209 210 211 | |
sigma(t)
¶
Compute \(\sigma(t) = \sigma_{\min}^{1-t}\,\sigma_{\max}^t\).
Source code in src/fpsl/ddm/noiseschedule.py
213 214 215 | |
beta(t)
¶
Compute \(\beta(t) = \frac{d}{dt}\sigma(t)^2\) via autograd.
Source code in src/fpsl/ddm/noiseschedule.py
217 218 219 | |