diff --git a/src/BetaSchedules/Cosine.jl b/src/BetaSchedules/Cosine.jl index 0e571b7..637511a 100644 --- a/src/BetaSchedules/Cosine.jl +++ b/src/BetaSchedules/Cosine.jl @@ -4,7 +4,7 @@ Cosine beta schedule. ## Input * `T::Int`: number of timesteps * `βₘₐₓ::Real=0.999f0`: maximum value of β - * `ϵ::Real=1e-3f0`: small value used to avoid division by zero + * `ϵ::Real=1.0f-3`: small value used to avoid division by zero ## Output * `β::Vector{Real}`: βₜ values at each timestep t @@ -13,7 +13,7 @@ Cosine beta schedule. * [[2102.09672] Improved Denoising Diffusion Probabilistic Models](https://arxiv.org/abs/2102.09672) * [github:openai/improved-diffusion](https://github.com/openai/improved-diffusion/blob/783b6740edb79fdb7d063250db2c51cc9545dcd1/improved_diffusion/gaussian_diffusion.py#L36) """ -function cosine_beta_schedule(T::Integer, βₘₐₓ::Real=0.999f0, ϵ::Real=0.001f0) +function cosine_beta_schedule(T::Integer, βₘₐₓ::Real=0.999f0, ϵ::Real=1.0f-3) α̅(t) = cos((t / T + ϵ) / (1 + ϵ) * π / 2)^2 β = Vector{Real}(undef, T) diff --git a/src/BetaSchedules/Linear.jl b/src/BetaSchedules/Linear.jl index 6c19e4a..a77ed13 100644 --- a/src/BetaSchedules/Linear.jl +++ b/src/BetaSchedules/Linear.jl @@ -3,8 +3,8 @@ Linear beta schedule. ## Input * `T::Integer`: number of timesteps - * `β₁::Real=0.0001f0`: initial (t=1) value of β - * `β₋₁::Real=0.02f0`: final (t=T) value of β + * `β₁::Real=1.0f-4`: initial (t=1) value of β + * `β₋₁::Real=2.0f-2`: final (t=T) value of β ## Output * `β::Vector{Real}`: βₜ values at each timestep t @@ -12,6 +12,6 @@ Linear beta schedule. ## References * [[2006.11239] Denoising Diffusion Probabilistic Models](https://arxiv.org/abs/2006.11239) """ -function linear_beta_schedule(T::Integer, β₁::Real=0.0001f0, β₋₁::Real=0.02f0) +function linear_beta_schedule(T::Integer, β₁::Real=1.0f-4, β₋₁::Real=2.0f-2) return range(start=β₁, stop=β₋₁, length=T) end diff --git a/src/BetaSchedules/ScaledLinear.jl b/src/BetaSchedules/ScaledLinear.jl index 4472cfc..7be4130 100644 --- a/src/BetaSchedules/ScaledLinear.jl +++ b/src/BetaSchedules/ScaledLinear.jl @@ -3,8 +3,8 @@ Scaled linear beta schedule. ## Input * `T::Int`: number of timesteps - * `β₁::Real=0.0001f0`: initial value of β - * `β₋₁::Real=0.02f0`: final value of β + * `β₁::Real=1.0f-4`: initial value of β + * `β₋₁::Real=2.0f-2`: final value of β ## Output * `β::Vector{Real}`: βₜ values at each timestep t @@ -12,6 +12,6 @@ Scaled linear beta schedule. ## References * [[2006.11239] Denoising Diffusion Probabilistic Models](https://arxiv.org/abs/2006.11239) """ -function scaled_linear_beta_schedule(T::Integer, β₁::Real=0.0001f0, β₋₁::Real=0.02f0) - return range(start=β₁^0.5, stop=β₋₁^0.5, length=T) .^ 2 +function scaled_linear_beta_schedule(T::Integer, β₁::Real=1.0f-4, β₋₁::Real=2.0f-2) + return range(start=√β₁, stop=√β₋₁, length=T) .^ 2 end diff --git a/src/BetaSchedules/Sigmoid.jl b/src/BetaSchedules/Sigmoid.jl index 277a9aa..9e22fd3 100644 --- a/src/BetaSchedules/Sigmoid.jl +++ b/src/BetaSchedules/Sigmoid.jl @@ -5,8 +5,8 @@ Sigmoid beta schedule. ## Input * `T::Int`: number of timesteps - * `β₁::Real=0.0001f0`: initial value of β - * `β₋₁::Real=0.02f0`: final value of β + * `β₁::Real=1.0f-4`: initial value of β + * `β₋₁::Real=2.0f-2`: final value of β ## Output * `β::Vector{Real}`: βₜ values at each timestep t @@ -15,7 +15,7 @@ Sigmoid beta schedule. * [[2203.02923] GeoDiff: a Geometric Diffusion Model for Molecular Conformation Generation](https://arxiv.org/abs/2203.02923) * [github.com:MinkaiXu/GeoDiff](https://github.com/MinkaiXu/GeoDiff/blob/ea0ca48045a2f7abfccd7f0df449e45eb6eae638/models/epsnet/diffusion.py#L57) """ -function sigmoid_beta_schedule(T::Integer, β₁::Real=0.0001f0, β₋₁::Real=0.02f0) +function sigmoid_beta_schedule(T::Integer, β₁::Real=1.0f-4, β₋₁::Real=2.0f-2) x = range(start=-6, stop=6, length=T) return sigmoid(x) .* (β₋₁ - β₁) .+ β₁ end