Back to Annotated Deep Learning Paper Implementations

වින්යාසගතකළ හැකි ට්රාන්ස්ෆෝමර් සංරචක

docs/si/transformers/configs.html

latest14.1 KB
Original Source

hometransformers

View code on Github

#

වින්යාසගතකළ හැකි ට්රාන්ස්ෆෝමර් සංරචක

9importcopy1011importtorch.nnasnn1213fromlabml.configsimportBaseConfigs,option,calculate,aggregate14fromlabml\_helpers.moduleimportModule15from.feed\_forwardimportFeedForward16from.mhaimportMultiHeadAttention17from.modelsimportEmbeddingsWithPositionalEncoding,EmbeddingsWithLearnedPositionalEncoding,TransformerLayer,\18Encoder,Decoder,Generator,EncoderDecoder

#

FFNවින්යාසයන්

අර්ථදක්වා ඇති ස්ථාන-නැණවත් Feedඉදිරි ජාලයක් නිර්මාණය කරයි feed_forward.py.

21classFeedForwardConfigs(BaseConfigs):

#

ස්ථාන-නැණවත්පෝෂක ස්ථරය

31ffn:FeedForward

#

කාවැද්දීමේවිශේෂාංග ගණන

33d\_model:int

#

සැඟවුණුස්ථරයේ ඇති ලක්ෂණ ගණන

35d\_ff:int=2048

#

අතහැරදැමීමේ සම්භාවිතාව

37dropout:float=0.1

#

ස්ථාන-නැණවත්පෝෂක ස්ථරයේ සක්රිය කිරීම

39activation:nn.Module='ReLU'

#

FFNස්තරය ගේට්ටු කළ යුතුද යන්න

41is\_gated:bool=False

#

පළමුපූර්ණ සම්බන්ධිත ස්ථරයට ඉගෙන ගත හැකි නැඹුරුවක් තිබිය යුතුද යන්න

43bias1:bool=True

#

දෙවනපූර්ණ සම්බන්ධිත ස්තරය ඉගෙන ගත හැකි නැඹුරුවක් තිබිය යුතුද යන්න

45bias2:bool=True

#

ගේට්ටුවසඳහා පූර්ණ සම්බන්ධිත ස්තරය ඉගෙන ගත හැකි නැඹුරුවක් තිබිය යුතුද යන්න

47bias\_gate:bool=False

#

පූර්වනිශ්චිත GLU ප්රභේද

49glu\_variant:str='none'

#

Reluසක්රිය

max(0,x)

52@option(FeedForwardConfigs.activation,'ReLU')53def\_ffn\_activation\_relu():

#

59returnnn.ReLU()

#

GELUසක්රිය කිරීම

xΦ(x) කොහේද Φ(x)=P(X≤x),X∼N(0,1)

එයකඩදාසි Gaussian දෝෂ රේඛීය ඒකකහඳුන්වා දෙන ලදී.

62@option(FeedForwardConfigs.activation,'GELU')63def\_ffn\_activation\_gelu():

#

71returnnn.GELU()

#

ආහාර ඉදිරි ජාලයක්ආරම්භ කරන්න

74@option(FeedForwardConfigs.ffn,'default')75def\_feed\_forward(c:FeedForwardConfigs):

#

79returnFeedForward(c.d\_model,c.d\_ff,80dropout=c.dropout,81activation=c.activation,82is\_gated=c.is\_gated,83bias1=c.bias1,84bias2=c.bias2,85bias\_gate=c.bias\_gate)

#

GLUප්රභේද

මේවාකඩදාසි වලින් හඳුන්වා දී ඇති පරිදි එෆ්එෆ්එන් සඳහා ගේට්ටු සැඟවුණු ස්ථර සහිත ප්රභේද වේ GLU ප්රභේද ට්රාන්ස්ෆෝමර් වැඩි දියුණු කරන්න. කඩදාසි වල දක්වා ඇති පරිදි අපි පක්ෂග්රාහී නියමයන් මඟ හැරි ඇත.

#

ගේට්ටුරේඛීය ඒකක සමඟ FFN

FFNGLU​(x)(x,W1​,V,W2​)=(σ(xW1​)⊗xV)W2​

95aggregate(FeedForwardConfigs.glu\_variant,'GLU',96(FeedForwardConfigs.is\_gated,True),97(FeedForwardConfigs.bias1,False),98(FeedForwardConfigs.bias2,False),99(FeedForwardConfigs.bias\_gate,False),100(FeedForwardConfigs.activation,nn.Sigmoid()))

#

බිලීනියර්සැඟවුණු තට්ටුවක් සහිත FFN

FFNBilinear​(x)(x,W1​,V,W2​)=(xW1​⊗xV)W2​

105aggregate(FeedForwardConfigs.glu\_variant,'Bilinear',106(FeedForwardConfigs.is\_gated,True),107(FeedForwardConfigs.bias1,False),108(FeedForwardConfigs.bias2,False),109(FeedForwardConfigs.bias\_gate,False),110(FeedForwardConfigs.activation,nn.Identity()))

#

RelUගේට්ටුව සමඟ FFN

FFNReGLU​(x)(x,W1​,V,W2​)=(max(0,xW1​)⊗xV)W2​

115aggregate(FeedForwardConfigs.glu\_variant,'ReGLU',116(FeedForwardConfigs.is\_gated,True),117(FeedForwardConfigs.bias1,False),118(FeedForwardConfigs.bias2,False),119(FeedForwardConfigs.bias\_gate,False),120(FeedForwardConfigs.activation,nn.ReLU()))

#

GELUගේට්ටුව සහිත FFN

FFNGEGLU​(x)(x,W1​,V,W2​)=(GELU(xW1​)⊗xV)W2​

125aggregate(FeedForwardConfigs.glu\_variant,'GEGLU',126(FeedForwardConfigs.is\_gated,True),127(FeedForwardConfigs.bias1,False),128(FeedForwardConfigs.bias2,False),129(FeedForwardConfigs.bias\_gate,False),130(FeedForwardConfigs.activation,nn.GELU()))

#

ස්විෂ්ගේට්ටුව සමඟ එෆ්එෆ්එන්

FFNSwiGLU​(x)(x,W1​,V,W2​)=(Swish1​(xW1​)⊗xV)W2​ කොහේද Swishβ​(x)=xσ(βx)

136aggregate(FeedForwardConfigs.glu\_variant,'SwiGLU',137(FeedForwardConfigs.is\_gated,True),138(FeedForwardConfigs.bias1,False),139(FeedForwardConfigs.bias2,False),140(FeedForwardConfigs.bias\_gate,False),141(FeedForwardConfigs.activation,nn.SiLU()))

#

ට්රාන්ස්ෆෝමර්වින්යාසයන්

මෙයට්රාන්ස්ෆෝමරයක් සඳහා වින්යාසයන් අර්ථ දක්වයි. වින්යාසයන් විකල්ප කාර්යයන් භාවිතා කරමින් ගණනය කරනු ලැබේ. මේවා කම්මැලි ලෙස පටවා ඇති අතර එබැවින් අවශ්ය මොඩියුල පමණක් ගණනය කරනු ලැබේ.

144classTransformerConfigs(BaseConfigs):

#

අවධානයයොමු ප්රධානීන් ගණන

156n\_heads:int=8

#

ට්රාන්ස්ෆෝමර්කාවැද්දීමේ ප්රමාණය

158d\_model:int=512

#

ස්ථරගණන

160n\_layers:int=6

#

අතහැරදැමීමේ සම්භාවිතාව

162dropout:float=0.1

#

ප්රභවවචන මාලාවේ ටෝකන ගණන (ටෝකන් කාවැද්දීම් සඳහා)

164n\_src\_vocab:int

#

ඉලක්කගතවචන මාලාවේ ටෝකන ගණන (පුරෝකථනය සඳහා පිවිසුම් ජනනය කිරීමට)

166n\_tgt\_vocab:int

#

එන්කෝඩරයස්වයං අවධානය

169encoder\_attn:MultiHeadAttention='mha'

#

විකේතකයස්වයං අවධානය

171decoder\_attn:MultiHeadAttention='mha'

#

විකේතකමතක අවධානය

173decoder\_mem\_attn:MultiHeadAttention='mha'

#

වින්යාසගතකළ හැකි ප්රතිපෝෂණ ස්ථරය

176ffn:FeedForwardConfigs

#

ආකේතකයස්ථරය

179encoder\_layer:TransformerLayer='default'

#

ස්තරයවිකේතකය

181decoder\_layer:TransformerLayer='default'

#

බහුඑන්කෝඩර් ස්ථර වලින් සමන්විත එන්කෝඩරය

184encoder:Encoder='default'

#

බහුවිකේතක ස්ථර වලින් සමන්විත එන්කෝඩරය

186decoder:Decoder='default'

#

ප්රභවයසඳහා ස්තරය කාවැද්දීම

189src\_embed:Module='fixed\_pos'

#

ඉලක්කයසඳහා ස්තරය කාවැද්දීම (විකේතකය සඳහා)

191tgt\_embed:Module='fixed\_pos'

#

අනාවැකියසඳහා ලොගින් වන්න ජනකය

194generator:Generator='default'

#

එන්කෝඩරය-විකේතකය

197encoder\_decoder:EncoderDecoder

#

බහු-හිසඅවධානය

201def\_mha(c:TransformerConfigs):202returnMultiHeadAttention(c.n\_heads,c.d\_model,dropout\_prob=c.dropout)203204205calculate(TransformerConfigs.encoder\_attn,'mha',\_mha)206calculate(TransformerConfigs.decoder\_attn,'mha',\_mha)207calculate(TransformerConfigs.decoder\_mem\_attn,'mha',\_mha)

#

සාපේක්ෂබහු-හිස අවධානය

211def\_relative\_mha(c:TransformerConfigs):212fromlabml\_nn.transformers.xl.relative\_mhaimportRelativeMultiHeadAttention213returnRelativeMultiHeadAttention(c.n\_heads,c.d\_model)214215216calculate(TransformerConfigs.encoder\_attn,'relative',\_relative\_mha)217calculate(TransformerConfigs.decoder\_attn,'relative',\_relative\_mha)218calculate(TransformerConfigs.decoder\_mem\_attn,'relative',\_relative\_mha)

#

ප්රතිපෝෂණස්ථර වින්යාසයන් සාදන්න

221@option(TransformerConfigs.ffn,'default')222def\_feed\_forward(c:TransformerConfigs):

#

226conf=FeedForwardConfigs()227conf.set\_default(FeedForwardConfigs.d\_model,func=lambda:c.d\_model)228conf.set\_default(FeedForwardConfigs.dropout,func=lambda:c.dropout)229returnconf

#

ආකේතකයස්ථරය

232@option(TransformerConfigs.encoder\_layer,'default')233def\_encoder\_layer(c:TransformerConfigs):

#

237returnTransformerLayer(d\_model=c.d\_model,self\_attn=c.encoder\_attn,238src\_attn=None,feed\_forward=copy.deepcopy(c.ffn.ffn),239dropout\_prob=c.dropout)

#

ස්තරයවිකේතකය

242@option(TransformerConfigs.decoder\_layer,'default')243def\_decoder\_layer(c:TransformerConfigs):

#

247returnTransformerLayer(d\_model=c.d\_model,self\_attn=c.decoder\_attn,248src\_attn=c.decoder\_mem\_attn,feed\_forward=copy.deepcopy(c.ffn.ffn),249dropout\_prob=c.dropout)

#

එන්කෝඩරය

252@option(TransformerConfigs.encoder,'default')253def\_encoder(c:TransformerConfigs):

#

257returnEncoder(c.encoder\_layer,c.n\_layers)

#

විකේතකය

260@option(TransformerConfigs.decoder,'default')261def\_decoder(c:TransformerConfigs):

#

265returnDecoder(c.decoder\_layer,c.n\_layers)

#

ලොගින්වන්න ජනකය

268@option(TransformerConfigs.generator,'default')269def\_generator(c:TransformerConfigs):

#

273returnGenerator(c.n\_tgt\_vocab,c.d\_model)

#

ස්ථාවරස්ථානීය කාවැද්දීම්

ස්ථාවරස්ථානීය කේතීකරණ සමඟ ප්රභව කාවැද්දීම

277@option(TransformerConfigs.src\_embed,'fixed\_pos')278def\_src\_embed\_with\_positional(c:TransformerConfigs):

#

282returnEmbeddingsWithPositionalEncoding(c.d\_model,c.n\_src\_vocab)

#

ස්ථාවරස්ථානීය කේතන ක්රම සමඟ කාවැද්දීම ඉලක්ක කරන්න

285@option(TransformerConfigs.tgt\_embed,'fixed\_pos')286def\_tgt\_embed\_with\_positional(c:TransformerConfigs):

#

290returnEmbeddingsWithPositionalEncoding(c.d\_model,c.n\_tgt\_vocab)

#

ස්ථානීයකාවැද්දීම් ඉගෙන

උගත්ස්ථානීය කේතීකරණ සමඟ ප්රභවය කාවැද්දීම

294@option(TransformerConfigs.src\_embed,'learned\_pos')295def\_src\_embed\_with\_learned\_positional(c:TransformerConfigs):

#

299returnEmbeddingsWithLearnedPositionalEncoding(c.d\_model,c.n\_src\_vocab)

#

උගත්ස්ථානීය කේතන ක්රම සමඟ කාවැද්දීම ඉලක්ක කර ගන්න

302@option(TransformerConfigs.tgt\_embed,'learned\_pos')303def\_tgt\_embed\_with\_learned\_positional(c:TransformerConfigs):

#

307returnEmbeddingsWithLearnedPositionalEncoding(c.d\_model,c.n\_tgt\_vocab)

#

ස්ථානීයකාවැද්දීම් නොමැත

ස්ථානීයකේතීකරණයකින් තොරව ප්රභව කාවැද්දීම

311@option(TransformerConfigs.src\_embed,'no\_pos')312def\_src\_embed\_without\_positional(c:TransformerConfigs):

#

316returnnn.Embedding(c.n\_src\_vocab,c.d\_model)

#

319@option(TransformerConfigs.tgt\_embed,'no\_pos')320def\_tgt\_embed\_without\_positional(c:TransformerConfigs):321returnnn.Embedding(c.n\_tgt\_vocab,c.d\_model)322323324@option(TransformerConfigs.encoder\_decoder,'default')325def\_encoder\_decoder(c:TransformerConfigs):326returnEncoderDecoder(c.encoder,c.decoder,c.src\_embed,c.tgt\_embed,c.generator)

Trending Research Paperslabml.ai