docs/si/activations/fta/experiment.html
මෙන්න අපි 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
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()