Back to Annotated Deep Learning Paper Implementations

උදාහරණයක්සාමාන්යකරණය

docs/si/normalization/instance_norm/index.html

latest6.2 KB
Original Source

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=1W​xt,i,l,m​xt,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​=γi​x^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()

Trending Research Paperslabml.ai