මෙය FNet ආකෘතියක්පුහුණු කිරීම සඳහා කරන ලද PyTorch අත්හදා බැලීමකි.
මෙයපදනම් වී ඇත්තේ AG ප්රවෘත්ති වර්ගීකරණ කාර්යය සඳහා සාමාන්ය පුහුණු ලූප සහ වින්යාසයන්මත ය.
15import torch
16from torch import nn
17
18from labml import experiment
19from labml.configs import option
20from labml_helpers.module import Module
21from labml_nn.experiments.nlp_classification import NLPClassificationConfigs
22from labml_nn.transformers import Encoder
23from labml_nn.transformers import TransformerConfigs26class TransformerClassifier(nn.Module):encoder
ට්රාන්ස්ෆෝමර් එන්කෝඩරය src_embed
යනු ටෝකන් කාවැද්දීමේ මොඩියුලය (ස්ථානීය කේතීකරණ සමඟ) generator
යනු පිවිසුම් ලබා දෙන අවසාන පූර්ණ සම්බන්ධිත ස්ථරයයි . 30 def __init__(self, encoder: Encoder, src_embed: Module, generator: nn.Linear):37 super().__init__()
38 self.src_embed = src_embed
39 self.encoder = encoder
40 self.generator = generator42 def forward(self, x: torch.Tensor):ස්ථානීයකේතන ක්රම සමඟ ටෝකන් කාවැද්දීම් ලබා ගන්න
44 x = self.src_embed(x)ට්රාන්ස්ෆෝමර්එන්කෝඩරය
46 x = self.encoder(x, None)වර්ගීකරණයසඳහා පිවිසුම් ලබා ගන්න.
අනුක්රමයේඅවසාන ස්ථානයේ අපි [CLS]
ටෝකනය සකස් කරමු. මෙය උපුටා ගනු ලබන්නේ x[-1]
හැඩයෙන් x
කොතැනද
[seq_len, batch_size, d_model]
52 x = self.generator(x[-1])ප්රතිලාභප්රති results ල (දෙවන අගය රාජ්ය සඳහා වේ, මන්ද අපගේ පුහුණුකරු RNs සමඟ ද භාවිතා කරයි)
56 return x, None59class Configs(NLPClassificationConfigs):වර්ගීකරණආකෘතිය
68 model: TransformerClassifierට්රාන්ස්ෆෝමර්
70 transformer: TransformerConfigs73@option(Configs.transformer)
74def _transformer_configs(c: Configs):අපගේ වින්යාසගත කළ හැකි ට්රාන්ස්ෆෝමර් ක්රියාත්මක කිරීම භාවිතා කරමු
81 conf = TransformerConfigs()කාවැද්දීම්සහ පිවිසුම් උත්පාදනය සඳහා වචන මාලාව ප්රමාණ සකසන්න
83 conf.n_src_vocab = c.n_tokens
84 conf.n_tgt_vocab = c.n_tokens87 return conf ට්රාන්ස්ෆෝමර් එන්කෝඩර් ස්ථරයේ ස්වයං අවධානය ප්රතිස්ථාපනය කළ හැකි FNetMix
මොඩියුලයක් සාදන්න.
90@option(TransformerConfigs.encoder_attn)
91def fnet_mix():97 from labml_nn.transformers.fnet import FNetMix
98 return FNetMix()වර්ගීකරණආකෘතිය සාදන්න
101@option(Configs.model)
102def _model(c: Configs):106 m = TransformerClassifier(c.transformer.encoder,
107 c.transformer.src_embed,
108 nn.Linear(c.d_model, c.n_classes)).to(c.device)
109
110 return m113def main():අත්හදාබැලීම සාදන්න
115 experiment.create(name="fnet")වින්යාසසාදන්න
117 conf = Configs()වින්යාසයන්අභිබවා යන්න
119 experiment.configs(conf, {ලෝකමට්ටමේ ටෝකනයිසර් භාවිතා කරන්න
121 'tokenizer': 'basic_english',Epochs සඳහා දුම්රිය
124 'epochs': 32,එක් යුගයකට වරක් පුහුණුව සහ වලංගු කිරීම අතර මාරු වන්න
127 'inner_iterations': 10,ට්රාන්ස්ෆෝමර්වින්යාසයන් (පෙරනිමි ලෙස)
130 'transformer.d_model': 512,
131 'transformer.ffn.d_ff': 2048,
132 'transformer.n_heads': 8,
133 'transformer.n_layers': 6,නෝම් ප්රශස්තකරණය භාවිතා කරන්න
140 'optimizer.optimizer': 'Noam',
141 'optimizer.learning_rate': 1.,
142 })ඉතිරිකිරීම සහ පැටවීම සඳහා ආකෘති සකසන්න
145 experiment.add_pytorch_models({'model': conf.model})අත්හදාබැලීම ආරම්භ කරන්න
148 with experiment.start():පුහුණුධාවනය
150 conf.run()154if __name__ == '__main__':
155 main()