mirror of
https://github.com/Laurent2916/Diffusers.jl.git
synced 2024-09-18 18:45:28 +00:00
🧪 (beta_schedules) add ZeroSNR rescaling tests
This commit is contained in:
parent
7427828eda
commit
9896a1665e
|
@ -2,32 +2,49 @@ using Diffusers.BetaSchedules
|
||||||
using Test
|
using Test
|
||||||
|
|
||||||
@testset "Variance schedules tests" begin
|
@testset "Variance schedules tests" begin
|
||||||
|
|
||||||
@testset "SNR decreases monotonically" begin
|
@testset "SNR decreases monotonically" begin
|
||||||
T = 1000
|
T = 1000
|
||||||
|
|
||||||
β_linear = linear_beta_schedule(T)
|
for beta_schedule_type in [
|
||||||
β_scaled_linear = scaled_linear_beta_schedule(T)
|
linear_beta_schedule,
|
||||||
β_cosine = cosine_beta_schedule(T)
|
scaled_linear_beta_schedule,
|
||||||
β_sigmoid = sigmoid_beta_schedule(T)
|
cosine_beta_schedule,
|
||||||
β_exponential = exponential_beta_schedule(T)
|
sigmoid_beta_schedule,
|
||||||
|
exponential_beta_schedule,
|
||||||
|
]
|
||||||
|
@testset "Variance schedule == $beta_schedule_type" begin
|
||||||
|
β = beta_schedule_type(T)
|
||||||
|
α = 1 .- β
|
||||||
|
α̅ = cumprod(α)
|
||||||
|
|
||||||
α̅_linear = cumprod(1 .- β_linear)
|
SNR = α̅ ./ (1 .- α̅)
|
||||||
α̅_scaled_linear = cumprod(1 .- β_scaled_linear)
|
|
||||||
α̅_cosine = cumprod(1 .- β_cosine)
|
|
||||||
α̅_sigmoid = cumprod(1 .- β_sigmoid)
|
|
||||||
α̅_exponential = cumprod(1 .- β_exponential)
|
|
||||||
|
|
||||||
# arxiv:2208.11970 Eq. 109
|
@test all(diff(SNR) .<= 0)
|
||||||
SNR_linear = α̅_linear ./ (1 .- α̅_linear)
|
|
||||||
SNR_scaled_linear = α̅_scaled_linear ./ (1 .- α̅_scaled_linear)
|
|
||||||
SNR_cosine = α̅_cosine ./ (1 .- α̅_cosine)
|
|
||||||
SNR_sigmoid = α̅_sigmoid ./ (1 .- α̅_sigmoid)
|
|
||||||
SNR_exponential = α̅_exponential ./ (1 .- α̅_exponential)
|
|
||||||
|
|
||||||
@test all(diff(SNR_linear) .<= 0)
|
|
||||||
@test all(diff(SNR_scaled_linear) .<= 0)
|
|
||||||
@test all(diff(SNR_cosine) .<= 0)
|
|
||||||
@test all(diff(SNR_sigmoid) .<= 0)
|
|
||||||
@test all(diff(SNR_exponential) .<= 0)
|
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
@testset "ZeroSNR rescaling" begin
|
||||||
|
T = 1000
|
||||||
|
|
||||||
|
for beta_schedule_type in [
|
||||||
|
linear_beta_schedule,
|
||||||
|
scaled_linear_beta_schedule,
|
||||||
|
cosine_beta_schedule,
|
||||||
|
sigmoid_beta_schedule,
|
||||||
|
exponential_beta_schedule,
|
||||||
|
]
|
||||||
|
@testset "Variance schedule == $beta_schedule_type" begin
|
||||||
|
β = rescale_zero_terminal_snr(beta_schedule_type(T))
|
||||||
|
α = 1 .- β
|
||||||
|
α̅ = cumprod(α)
|
||||||
|
|
||||||
|
SNR = α̅ ./ (1 .- α̅)
|
||||||
|
|
||||||
|
@test SNR[end] ≈ 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue