Diffusers documentation
ScoreSdeVeScheduler
ScoreSdeVeScheduler
ScoreSdeVeScheduler, varyans patlatmalı stokastik diferansiyel denklem (SDE) zamanlayıcısıdır. Yang Song, Jascha Sohl-Dickstein, Diederik P. Kingma, Abhishek Kumar, Stefano Ermon ve Ben Poole tarafından Score-Based Generative Modeling through Stochastic Differential Equations makalesinde tanıtılmıştır.
Makalenin özeti şudur:
Veriden gürültü üretmek kolaydır; gürültüden veri üretmek ise üretken modellemedir. Karmaşık bir veri dağılımını, yavaşça gürültü enjekte ederek bilinen bir öncül dağılıma (prior distribution) pürüzsüzce dönüştüren bir stokastik diferansiyel denklemi (SDE) ve gürültüyü yavaşça kaldırarak öncül dağılımı tekrar veri dağılımına dönüştüren karşılık gelen ters zamanlı SDE'yi sunuyoruz. Kritik olarak, ters zamanlı SDE yalnızca bozulmuş veri dağılımının zamana bağlı gradyan alanına (diğer adıyla, skor) bağlıdır. Skor tabanlı üretken modellemedeki ilerlemelerden yararlanarak bu skorları sinir ağlarıyla doğru bir şekilde tahmin edebilir ve örnekler üretmek için sayısal SDE çözücülerini kullanabiliriz. Bu çerçevenin, skor tabanlı üretken modelleme ve difüzyon olasılıksal modellemedeki önceki yaklaşımları kapsadığını, yeni örnek alma prosedürlerine ve yeni modelleme yeteneklerine olanak tanıdığını gösteriyoruz. Özellikle, diskretize edilmiş ters zamanlı SDE'nin evrimindeki hataları düzeltmek için bir öngörücü-düzeltici (predictor-corrector) çerçevesi tanıtıyoruz. Ayrıca, SDE ile aynı dağılımdan örnekleyen ancak ek olarak kesin olasılık (likelihood) hesabına ve iyileştirilmiş örnek alma verimliliğine olanak tanıyan eşdeğer bir sinir ODE türetiyoruz. Bunun yanı sıra, sınıf koşullu üretim, görsel inpainting ve renklendirme üzerindeki deneylerle gösterildiği gibi, skor tabanlı modellerle ters problemleri çözmenin yeni bir yolunu sunuyoruz. Birden fazla mimari iyileştirmeyle birleştirildiğinde, CIFAR-10 üzerinde koşulsuz görsel üretim için 9.89 Inception skoru ve 2.20 FID ile rekor kıran bir performans elde ediyor, 2.99 bits/dim rekabetçi bir olasılık (likelihood) sağlıyor ve ilk kez skor tabanlı bir üretken modelden 1024 x 1024 görsellerin yüksek sadakatli üretimini gösteriyoruz.
ScoreSdeVeScheduler
sınıf diffusers.ScoreSdeVeScheduler
< source >( num_train_timesteps: int = 2000snr: float = 0.15sigma_min: float = 0.01sigma_max: float = 1348.0sampling_eps: float = 1e-05correct_steps: int = 1 )
Parametreler
- num_train_timesteps (
int, varsayılan 2000) — Modelin eğitileceği difüzyon adım sayısı. - snr (
float, varsayılan 0.15) —model_outputörneğinden (ağdan gelen) rastgele gürültüye giden adımı ağırlıklandıran bir katsayı. - sigma_min (
float, varsayılan 0.01) — Örnekleme işlemindeki sigma dizisi için başlangıç gürültü ölçeği. Minimum sigma, verilerin dağılımını yansıtmalıdır. - sigma_max (
float, varsayılan 1348.0) — Modelin girdisi olarak iletilen sürekli zaman adımlarının aralığı için kullanılan maksimum değer. - sampling_eps (
float, varsayılan 1e-5) — Adımların 1'den epsilon'a doğru kademeli olarak azaldığı örneklemenin son değeri. - correct_steps (
int, varsayılan 1) — Üretilen örnek üzerinde uygulanan düzeltme adım sayısı.
ScoreSdeVeScheduler, varyans patlatma (variance exploding) stokastik diferansiyel denklem (SDE) zamanlayıcısıdır.
Bu model SchedulerMixin ve ConfigMixin sınıflarından devralır. Kütüphanenin tüm zamanlayıcılar için yükleme ve kaydetme gibi genel yöntemleri uyguladığı üst sınıf belgelendirmesini kontrol edin.
add_noise
< source >( original_samples: Tensornoise: Tensortimesteps: Tensor ) → torch.Tensor
Parametreler
- original_samples (
torch.Tensor) — Gürültü eklenecek orijinal örnekler. - noise (
torch.Tensor) — Orijinal örneklerin üzerine eklenecek gürültü tensörü. - timesteps (
torch.Tensor) — Gürültü eklenmesi gereken zaman adımları, zaman çizelgesinden gürültü seviyesini belirler.
Dönüş değeri
torch.Tensor
Zaman adımı zamanlamasına göre ölçeklendirilen eklenen gürültüye sahip gürültülü örnekler.
Belirtilen zaman adımlarındaki gürültü zamanlamasına göre orijinal örneklerin gürültü ekleyin. Bu, ileri difüzyon sürecidir.
get_adjacent_sigma
< source >( timesteps: Tensort: Tensor ) → torch.Tensor
Önceki zaman adımı dizinine karşılık gelen sigma değerini döndürür. Zaman adımı sıfır olduğunda (önceki zaman adımı yoksa), sıfır döndürülür.
scale_model_input
< source >( sample: Tensortimestep: int | None = None ) → torch.Tensor
Gürültüden arındırma modelinin girdisinin mevcut zaman adımına bağlı olarak ölçeklenmesi gereken zamanlayıcılarla değiştirilebilirliği sağlar.
set_sigmas
< source >( num_inference_steps: intsigma_min: float | None = Nonesigma_max: float | None = Nonesampling_eps: float | None = None )
Parametreler
- num_inference_steps (
int) — Önceden eğitilmiş bir modelle örnekler oluşturulurken kullanılan difüzyon adım sayısı. - sigma_min (
float, isteğe bağlı) — Başlangıç gürültü ölçeği değeri (zamanlayıcı anında oluşturulması sırasında verilen değeri geçersiz kılar). - sigma_max (
float, isteğe bağlı) — Son gürültü ölçeği değeri (zamanlayıcı anında oluşturulurken verilen değeri geçersiz kılar). - sampling_eps (
float, isteğe bağlı) — Son zaman adımı değeri (zamanlayıcı anında oluşturulurken verilen değeri geçersiz kılar).
Difüzyon zinciri için kullanılan gürültü ölçeklerini ayarlar (çalıştırılmadan önce çıkarım yapılmalıdır). Sigmalar, örnek güncellemesinin drift ve diffusion bileşenlerinin ağırlığını kontrol eder.
set_timesteps
< source >( num_inference_steps: intsampling_eps: float | None = Nonedevice: typing.Union[str, torch.device, NoneType] = None )
Parametreler
- num_inference_steps (
int) — Önceden eğitilmiş bir modelle örnekler oluşturulurken kullanılan difüzyon adım sayısı. - sampling_eps (
float, isteğe bağlı) — Son zaman adımı değeri (zamanlayıcı anında oluşturulurken verilen değeri geçersiz kılar). - device (
strveyatorch.device, isteğe bağlı) — Adımların (timesteps) taşınacağı cihaz.Noneise adımlar taşınmaz.
Difüzyon zinciri için kullanılan sürekli zaman adımlarını ayarlar (çalıştırılmadan önce çıkarım yapılmalıdır).
step_correct
< source >( model_output: Tensorsample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → SchedulerOutput or tuple
Parametreler
- model_output (
torch.Tensor) — Öğrenen difüzyon modelinden gelen doğrudan çıktı. - sample (
torch.Tensor) — Difüzyon süreci tarafından oluşturulan bir örneğin mevcut bir örneği. - generator (
torch.Generator, isteğe bağlı) — Rastgele sayı üreteci. - return_dict (
bool, isteğe bağlı, varsayılanTrue) — SchedulerOutput veyatupledöndürülüp döndürülmemeye karar verir.
Dönüş değeri
SchedulerOutput veya tuple
return_dict True ise SchedulerOutput döndürülür, aksi halde ilk öğesi örnek tensörü olan bir tuple döndürülür.
Ağın model_output'una göre tahmin edilen örneği düzeltin. Bu işlem, genellikle bir önceki zaman adımının tahmini yapıldıktan sonra tekrar tekrar çalıştırılır.
step_pred
< source >( model_output: Tensortimestep: intsample: Tensorgenerator: typing.Optional[torch.Generator] = Nonereturn_dict: bool = True ) → SdeVeOutput or tuple
Parametreler
- model_output (
torch.Tensor) — Öğrenen difüzyon modelinden gelen doğrudan çıktı. - timestep (
int) — Difüzyon zincirindeki mevcut ayrık zaman adımı. - sample (
torch.Tensor) — Difüzyon süreci tarafından oluşturulan bir örneğin mevcut bir örneği. - generator (
torch.Generator, isteğe bağlı) — Rastgele sayı üreteci. - return_dict (
bool, isteğe bağlı, varsayılanTrue) — SdeVeOutput veyatupledöndürülüp döndürülmemeye karar verir.
Dönüş değeri
SdeVeOutput veya tuple
return_dict True ise SdeVeOutput döndürülür, aksi halde ilk öğesi örnek tensörü olan bir tuple döndürülür.
Önceki zaman adımındaki örneği SDE'yi tersine çevirerek tahmin edin. Bu işlev, öğrenilen model çıktılarını (en sık tahmin edilen gürültüyü) kullanarak difüzyon sürecini ilerletir.
SdeVeOutput
sınıf diffusers.schedulers.scheduling_sde_ve.SdeVeOutput
< source >( prev_sample: Tensorprev_sample_mean: Tensor )
Parametreler
- prev_sample (görseller için
torch.Tensor, şekli(batch_size, num_channels, height, width)) — Önceki zaman adımının hesaplanan örneği(x_{t-1}).prev_sample, gürültü azaltma döngüsünde bir sonraki model girdisi olarak kullanılmalıdır. - prev_sample_mean (görseller için
(batch_size, num_channels, height, width)boyutunda birtorch.Tensor) — Önceki zaman adımları üzerinde ortalama alınmışprev_sample.
Zamanlayıcının step işlevi çıktısı için çıktı sınıfı.