Back to Annotated Deep Learning Paper Implementations

නොපැහැදිලි ටයිල් සක්රීය කිරීමේ අත්හදා බැලීම

docs/si/activations/fta/experiment.html

latest10.3 KB
Original Source

homeactivationsfta

View code on Github

#

නොපැහැදිලි ටයිල් සක්රීය කිරීමේ අත්හදා බැලීම

මෙන්න අපි Feed-Forward ජාලයේ Fuzzy Tiling Activation භාවිතා කරන ට්රාන්ස්ෆෝමරයක් පුහුණු කරමු. අපි එය භාෂා ආකෘතියක් සඳහා භාවිතා කරන අතර නිරූපණය සඳහා කුඩා ෂේක්ස්පියර් දත්ත කට්ටලය මත එය පුහුණු කරමු.

කෙසේ වෙතත්, මෙය බොහෝ විට FTA සඳහා සුදුසුම කාර්යය නොවන අතර අඛණ්ඩ විචල්යයන් සහිත දත්ත ආකෘතිකරණය සඳහා FTA වඩාත් සුදුසු යැයි අපි විශ්වාස කරමු.

21importcopy2223importtorch24importtorch.nnasnn2526fromlabmlimportexperiment27fromlabml.configsimportoption28fromlabml\_helpers.moduleimportModule29fromlabml\_nn.activations.ftaimportFTA30fromlabml\_nn.experiments.nlp\_autoregressionimportNLPAutoRegressionConfigs31fromlabml\_nn.transformersimportMultiHeadAttention,TransformerLayer32fromlabml\_nn.transformers.utilsimportsubsequent\_mask

#

FTA සක්රිය කිරීම සමඟ FFN මොඩියුලය

35classFeedForwardFTA(nn.Module):

#

  • d_model යනු ටෝකන කාවැද්දීම තුළ ඇති විශේෂාංග ගණන
  • d_ff යනු FFN හි සැඟවුණු ස්ථරයේ ඇති ලක්ෂණ ගණන
  • activation FTA සක්රිය කිරීමේ මොඩියුලය
  • dropout සැඟවුණු ස්තරය සඳහා අතහැර දැමීමේ සම්භාවිතාව
40def\_\_init\_\_(self,d\_model:int,d\_ff:int,41activation:FTA,42dropout:float=0.1):

#

49super().\_\_init\_\_()

#

බර W1​ හා නැඹුරුව අනුව පරාමිතිකරණය කරන ලද එක් ස්ථරය b1​

51self.layer1=nn.Linear(d\_model,d\_ff)

#

බර W1​ හා නැඹුරුව අනුව පරාමිතිකරණය කරන ලද ස්ථර දෙකක් b1​

53self.layer2=nn.Linear(d\_ff\*activation.expansion\_factor,d\_model)

#

සැඟවුණුස්ථර හැලීම

55self.dropout=nn.Dropout(dropout)

#

සක්රියකිරීමේ කාර්යය f

57self.activation=activation

#

59defforward(self,x:torch.Tensor):

#

f(xW1​+b1​)

61x=self.activation(self.layer1(x))

#

අතහැරදැමීම යොදන්න

63x=self.dropout(x)

#

65returnself.layer2(x)

#

ස්වයංක්රීයප්රතිගාමී ආකෘතිය

මෙය(නොපැහැදිලි ටයිලිං ඇක්ටිවේෂන්) (index.html) සමඟ ෆීඩ්-ෆෝවර්ඩ් නෙට්වර්ක් භාවිතා කරන ස්වයංක්රීය ප්රතිගාමී ට්රාන්ස්ෆෝමර් ආකෘතියකි.

68classAutoregressiveTransformer(Module):

#

  • n_tokens යනු වචන මාලාවේ ටෝකන ගණන
  • d_model කාවැද්දීම ප්රමාණය වේ
  • n_layers ට්රාන්ස්ෆෝමර් ස්ථර ගණන
  • layer ස්තරය වේ. අපි ට්රාන්ස්ෆෝමර් සඳහා මෙහි n_layers පිටපත් භාවිතා කරමු.
76def\_\_init\_\_(self,n\_tokens:int,d\_model:int,n\_layers:int,layer:TransformerLayer):

#

83super().\_\_init\_\_()

#

n_layers ස්ථර සහිත ට්රාන්ස්ෆෝමර්

85self.transformer\_layers=nn.ModuleList([copy.deepcopy(layer)for\_inrange(n\_layers)])

#

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

88self.emb=nn.Embedding(n\_tokens,d\_model)

#

කියවීමේස්ථරය

90self.readout=nn.Linear(d\_model,n\_tokens)

#

පළමුඇමතුමෙන් වෙස්මුහුණ ආරම්භ කරනු ඇත

93self.mask=None

#

  • x හැඩයේ ආදාන ටෝකන වේ [seq_len, batch_size]
95defforward(self,x:torch.Tensor):

#

ස්වයංක්රීයප්රතිගාමී වෙස් මුහුණක් සාදන්න

100ifself.maskisNoneorself.mask.size(0)!=len(x):

#

පසුකාලීනවෙස්මුහුණ, අනාගත ටෝකන දැකීමෙන් ටෝකන වසං කරනු ඇත

102self.mask=subsequent\_mask(len(x)).to(x.device)

#

ටෝකන්කාවැද්දීම් ලබා ගන්න

105x=self.emb(x)

#

ට්රාන්ස්ෆෝමර්එන්කෝඩරය

107forlayerinself.transformer\_layers:108x=layer(x=x,mask=self.mask)

#

පිවිසුම්ලබා ගන්න

110x=self.readout(x)

#

ආපසුප්රතිඵල

113returnx,None

#

වින්යාසකිරීම්

මෙයඋරුම වන්නේ NLPAutoRegressionConfigs

116classConfigs(NLPAutoRegressionConfigs):

#

ආකෘතිය

125model:AutoregressiveTransformer

#

ස්ථරගණන

128n\_layers:int=4

#

α සහ ගැඹුරු සම්මතය β සඳහා

131deep\_norm\_alpha:float132deep\_norm\_beta:float

#

අවධානයයොමු කරන හිස් ගණන

135n\_heads:int=4

#

කාවැද්දීමප්රමාණය

137d\_model:int=256

#

එක්එක් අවධානය හිස ප්රමාණය

139d\_k:int=16

#

ඉදිරිස්ථරයේ ප්රමාණය පෝෂණය කරන්න

141d\_ff:int=256

#

FTA

144fta\_lower\_limit:float=-1.145fta\_upper\_limit:float=+1.146fta\_delta:float=0.2147fta\_eta:float=0.05

#

ආකෘතියආරම්භ කරන්න

150@option(Configs.model)151def\_model(c:Configs):

#

FTAසක්රිය කිරීමේ මොඩියුලය සාදන්න

157fta=FTA(c.fta\_lower\_limit,c.fta\_upper\_limit,c.fta\_delta,c.fta\_eta)

#

ට්රාන්ස්ෆෝමරයසාදන්න. අපි නැවත භාවිතා කිරීම TransformerLayerMultiHeadAttention සහ ක්රියාත්මක කිරීම.

161m=AutoregressiveTransformer(c.n\_tokens,c.d\_model,c.n\_layers,162TransformerLayer(d\_model=c.d\_model,163feed\_forward=FeedForwardFTA(d\_model=c.d\_model,164d\_ff=c.d\_ff,165activation=fta,166dropout=0.1),167self\_attn=MultiHeadAttention(c.n\_heads,c.d\_model,168dropout\_prob=0.0),169dropout\_prob=0.0))

#

උපාංගයවෙත ගෙන යන්න

172returnm.to(c.device)

#

අත්හදාබැලීම නිර්මාණය කර ක්රියාත්මක කරන්න

175defmain():

#

අත්හදාබැලීම සාදන්න

180experiment.create(name="fta",writers={'screen','labml'})

#

වින්යාසසාදන්න

182conf=Configs()

#

වින්යාසයන්අභිබවා යන්න

184experiment.configs(conf,{

#

අක්ෂරමට්ටමේ ටෝකනයිසර් භාවිතා කරන්න

186'tokenizer':'character',

#

කඩිනම්බෙදුම්කරු හිස් ය

188'prompt\_separator':'',

#

නියැදීමසඳහා විමසුමක් ආරම්භ කිරීම

190'prompt':'It is ',

#

කුඩාෂේක්ස්පියර් දත්ත කට්ටලය භාවිතා කරන්න

192'text':'tiny\_shakespeare',

#

කසන්දර්භය ප්රමාණය භාවිතා 256

195'seq\_len':256,

#

32වයස අවුරුදු සඳහා දුම්රිය

197'epochs':32,

#

කණ්ඩායම්ප්රමාණය 16

199'batch\_size':16,

#

එක් 10 යුගයකට වරක් පුහුණුව සහ වලංගු කිරීම අතර මාරු වන්න

201'inner\_iterations':10,

#

උනුසුම්වීමක් නොමැති ආදම් ප්රශස්තකරණය

204'optimizer.optimizer':'Adam',205'optimizer.learning\_rate':3e-4,206})

#

ඉතිරිකිරීම සහ පැටවීම සඳහා ආකෘතිය (ය) සකසන්න

209experiment.add\_pytorch\_models({'model':conf.model})

#

අත්හදාබැලීම ආරම්භ කරන්න

212withexperiment.start():

#

පුහුණුධාවනය

214conf.run()

#

218if\_\_name\_\_=='\_\_main\_\_':219main()

Trending Research Paperslabml.ai