docs/si/normalization/instance_norm/index.html
homenormalizationinstance_norm
[View code on Github](https://github.com/labmlai/annotated_deep_learning_paper_implementations/tree/master/labml_nn/normalization/instance_norm/ init.py)
මෙය PyTorch ක්රියාත්මක කිරීම උදාහරණයක් සාමාන්යකරණය: වේගවත් ශෛලීකරණය සඳහා අතුරුදහන් වූ අමුද්රව්යය .
ශෛලිය මාරුවැඩි දියුණු කිරීම සඳහා උදාහරණයක් සාමාන්යකරණය හඳුන්වා දෙන ලදී. එය පදනම් වී ඇත්තේ අන්තර්ගත රූපයේ වෙනස මත ශෛලීකරණය රඳා නොතිබිය යුතු බව නිරීක්ෂණය කිරීම මත ය. “ප්රතිවිරුද්ධ සාමාන්යකරණය” වේ
yt,i,j,k=∑l=1H∑m=1Wxt,i,l,mxt,i,j,k
මානරූප දර්ශකය t, විශේෂාංග නාලිකාව iසහ j,kඅවකාශීය පිහිටීම සහිත රූප සමූහයක් x කොහේද?
සම්මුතිජාලයකට “ප්රතිවිරුද්ධ සාමාන්යකරණය” ඉගෙන ගැනීම දුෂ්කර බැවින්, මෙම ලිපිය මඟින් එය සිදු කරන උදාහරණයක් සාමාන්යකරණය හඳුන්වා දෙයි.
මෙන්න CIFAR තියෙන්නේ 10 උදාහරණයක් සාමාන්යකරණය භාවිතා කරන වර්ගීකරණය ආකෘතිය .
29importtorch30fromtorchimportnn3132fromlabml\_helpers.moduleimportModule
උදාහරණයක්සාමාන්යකරණය ස්ථරය පහත සඳහන් X පරිදි ආදාන IN normalizes:
X∈RB×C×H×W ආදානය රූප නිරූපණ සමූහයක් B වන විට, කණ්ඩායම් ප්රමාණය කොතැනද, C නාලිකා ගණන, H උස සහ W පළල වේ. γ∈RC සහ β∈RC. සමග affine පරිවර්තනය gamma හා විකල්ප beta වේ.
IN(X)=γH,WVar[X]+ϵX−H,WE[X]+β
35classInstanceNorm(Module):
channels යනු ආදානයේ ඇති විශේෂාංග ගණනeps සංඛ්යාත්මක ස්ථායිතාව Var[X]+ϵ සඳහා භාවිතා වේ ϵaffine සාමාන්යකරණය කළ අගය පරිමාණය කර මාරු කළ යුතුද යන්නයි51def\_\_init\_\_(self,channels:int,\*,52eps:float=1e-5,affine:bool=True):
58super().\_\_init\_\_()5960self.channels=channels6162self.eps=eps63self.affine=affine
පරිමාණයසහ මාරුව β සඳහා γ සහ පරාමිතීන් සාදන්න
65ifself.affine:66self.scale=nn.Parameter(torch.ones(channels))67self.shift=nn.Parameter(torch.zeros(channels))
x හැඩයේ ආතන්ය [batch_size, channels, *] වේ. * ඕනෑම සංඛ්යාවක් (සමහරවිට 0) මානයන් දක්වයි. උදාහරණයක් ලෙස, රූපයක් (2D) සංකෝචනය තුළ මෙය වනු ඇත [batch_size, channels, height, width]
69defforward(self,x:torch.Tensor):
මුල්හැඩය තබා ගන්න
77x\_shape=x.shape
කණ්ඩායම්ප්රමාණය ලබා ගන්න
79batch\_size=x\_shape[0]
විශේෂාංගගණන සමාන බව තහවුරු කර ගැනීම සඳහා සනීපාරක්ෂාව පරීක්ෂා කරන්න
81assertself.channels==x.shape[1]
නැවතහැඩගස්වා ගන්න [batch_size, channels, n]
84x=x.view(batch\_size,self.channels,-1)
අවසානමානය හරහා මධ්යන්යය ගණනය කරන්න, එනම් එක් එක් ලක්ෂණය සඳහා මාධ්යයන් E[xt,i]
88mean=x.mean(dim=[-1],keepdim=True)
පළමුහා අවසාන මානයන් හරහා වර්ග කළ මධ්යන්යය ගණනය කරන්න; එනම් එක් එක් ලක්ෂණය සඳහා මාධ්යයන් E[(xt,i2]
91mean\_x2=(x\*\*2).mean(dim=[-1],keepdim=True)
එක්එක් ලක්ෂණය සඳහා විචලතාව Var[xt,i]=E[xt,i2]−E[xt,i]2
93var=mean\_x2-mean\*\*2
සාමාන්යකරන්න x^t,i=Var[xt,i]+ϵxt,i−E[xt,i]
96x\_norm=(x-mean)/torch.sqrt(var+self.eps)97x\_norm=x\_norm.view(batch\_size,self.channels,-1)
පරිමාණයසහ මාරුව yt,i=γix^t,i+βi
100ifself.affine:101x\_norm=self.scale.view(1,-1,1)\*x\_norm+self.shift.view(1,-1,1)
මුල්පිටපතට නැවත හැඩගස්වා නැවත පැමිණීම
104returnx\_norm.view(x\_shape)
සරලපරීක්ෂණය
107def\_test():
111fromlabml.loggerimportinspect112113x=torch.zeros([2,6,2,4])114inspect(x.shape)115bn=InstanceNorm(6)116117x=bn(x)118inspect(x.shape)
122if\_\_name\_\_=='\_\_main\_\_':123\_test()