FNet අත්හදා බැලීම

මෙය 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 TransformerConfigs

ට්රාන්ස්ෆෝමර්මත පදනම් වූ වර්ගීකරණ ආකෘතිය

26class TransformerClassifier(nn.Module):
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 = generator
42    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, None

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

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

59class Configs(NLPClassificationConfigs):

වර්ගීකරණආකෘතිය

68    model: TransformerClassifier

ට්රාන්ස්ෆෝමර්

70    transformer: TransformerConfigs

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

73@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_tokens

87    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 m
113def 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,

ස්වයං-ඇලවීමවෙනුවට FNet භාවිතා කරන්න

137        'transformer.encoder_attn': 'fnet_mix',

නෝම් ප්රශස්තකරණය භාවිතා කරන්න

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()