docs/si/diffusion/stable_diffusion/sampler/index.html
homediffusionstable_diffusionsampler
[View code on Github](https://github.com/labmlai/annotated_deep_learning_paper_implementations/tree/master/labml_nn/diffusion/stable_diffusion/sampler/ init.py)
අපි පහත සඳහන් නියැදි ඇල්ගොරිතම ක්රියාත්මක කර ඇත:
18fromtypingimportOptional,List1920importtorch2122fromlabml\_nn.diffusion.stable\_diffusion.latent\_diffusionimportLatentDiffusion
25classDiffusionSampler:
29model:LatentDiffusion
model ශබ්දය පුරෝකථනය කිරීමේ ආකෘතියයිϵcond(xt,c)31def\_\_init\_\_(self,model:LatentDiffusion):
35super().\_\_init\_\_()
ආකෘතිය සකසන්නϵcond(xt,c)
37self.model=model
ආකෘතිය පුහුණු කරන ලද පියවර ගණන ලබා ගන්නT
39self.n\_steps=model.n\_steps
x හැඩයෙන්xt යුක්ත වේ[batch_size, channels, height, width]t හැඩයෙන්t යුක්ත වේ[batch_size]c හැඩයේ කොන්දේසි සහිතc කාවැද්දීම් වේ[batch_size, emb_size]uncond_scale යනු කොන්දේසි විරහිත මාර්ගෝපදේශs පරිමාණයයි. මෙය භාවිතා වේϵθ(xt,c)=sϵcond(xt,c)+(s−1)ϵcond(xt,cu)uncond_cond හිස් විමසුමක් සඳහා කොන්දේසි සහිත කාවැද්දීම වේcu41defget\_eps(self,x:torch.Tensor,t:torch.Tensor,c:torch.Tensor,\*,42uncond\_scale:float,uncond\_cond:Optional[torch.Tensor]):
පරිමාණය විටs=1ϵθ(xt,c)=ϵcond(xt,c)
55ifuncond\_condisNoneoruncond\_scale==1.:56returnself.model(x,t,c)
අනුපිටපත්xt සහt
59x\_in=torch.cat([x]\*2)60t\_in=torch.cat([t]\*2)
සංයුක්තc සහcu
62c\_in=torch.cat([uncond\_cond,c])
ලබාϵcond(xt,c) ගන්නϵcond(xt,cu)
64e\_t\_uncond,e\_t\_cond=self.model(x\_in,t\_in,c\_in).chunk(2)
ගණනය කරන්නϵθ(xt,c)=sϵcond(xt,c)+(s−1)ϵcond(xt,cu)
67e\_t=e\_t\_uncond+uncond\_scale\*(e\_t\_cond-e\_t\_uncond)
70returne\_t
shape ස්වරූපයෙන් ජනනය කරන ලද රූපවල හැඩය[batch_size, channels, height, width]cond කොන්දේසි සහිත කාවැද්දීම් වේctemperature යනු ශබ්දයේ උෂ්ණත්වය (අහඹු ශබ්දය මෙයින් ගුණ කරනු ලැබේ)x_last වේxT. සපයා නොමැති නම් අහඹු ශබ්දය භාවිතා කරනු ඇත.uncond_scale යනු කොන්දේසි විරහිත මාර්ගෝපදේශs පරිමාණයයි. මෙය භාවිතා වේϵθ(xt,c)=sϵcond(xt,c)+(s−1)ϵcond(xt,cu)uncond_cond හිස් විමසුමක් සඳහා කොන්දේසි සහිත කාවැද්දීම වේcuskip_steps මඟ හැරීමට කාල පියවර ගණන වේ.72defsample(self,73shape:List[int],74cond:torch.Tensor,75repeat\_noise:bool=False,76temperature:float=1.,77x\_last:Optional[torch.Tensor]=None,78uncond\_scale:float=1.,79uncond\_cond:Optional[torch.Tensor]=None,80skip\_steps:int=0,81):
95raiseNotImplementedError()
x හැඩයෙන්xT′ යුක්ත වේ[batch_size, channels, height, width]cond කොන්දේසි සහිත කාවැද්දීම් වේct_start සිට ආරම්භ කිරීමට නියැදි පියවර වේ,T′orig යනු මුල් රූපයයි ගුප්ත පිටුව අපි පැල්ලම් කරන.mask මුල් රූපය තබා ගැනීම සඳහා වෙස්මුහුණ වේ.orig_noise මුල් රූපයට එකතු කළ යුතු ස්ථාවර ශබ්දය.uncond_scale යනු කොන්දේසි විරහිත මාර්ගෝපදේශs පරිමාණයයි. මෙය භාවිතා වේϵθ(xt,c)=sϵcond(xt,c)+(s−1)ϵcond(xt,cu)uncond_cond හිස් විමසුමක් සඳහා කොන්දේසි සහිත කාවැද්දීම වේcu97defpaint(self,x:torch.Tensor,cond:torch.Tensor,t\_start:int,\*,98orig:Optional[torch.Tensor]=None,99mask:Optional[torch.Tensor]=None,orig\_noise:Optional[torch.Tensor]=None,100uncond\_scale:float=1.,101uncond\_cond:Optional[torch.Tensor]=None,102):
116raiseNotImplementedError()
x0 හැඩයෙන්x0 යුක්ත වේ[batch_size, channels, height, width]index යනු කාල පියවරt දර්ශකයයිnoise ශබ්දය,ϵ118defq\_sample(self,x0:torch.Tensor,index:int,noise:Optional[torch.Tensor]=None):
126raiseNotImplementedError()