නවප්රශස්තකරණය

කඩදාසිතුළ හඳුන්වා දී ඇති ප්රශස්තකරණයේ PyTorch ක්රියාත්මක කිරීම මෙයයි අවධානය ඔබට අවශ්ය සියල්ල .

14from typing import Dict
15
16from labml_nn.optimizers import WeightDecay
17from labml_nn.optimizers.amsgrad import AMSGrad

නවප්රශස්තකරණය

මෙමපන්තිය අර්ථ දක්වා ඇති ආදම් ප්රශස්තකරණයෙන් විහිදේ adam.py .

20class Noam(AMSGrad):

ප්රශස්තකරණයආරම්භ කරන්න

  • params යනු පරාමිතීන් ලැයිස්තුවයි
  • lr යනු ඉගෙනුම් අනුපාතයයි
  • betas (, ) ක tuple වේ
  • eps හෝ මත පදනම් වේ optimized_update
  • weight_decay WeightDecay අර්ථ දක්වා ඇති පන්තියේ අවස්ථාවකි __init__.py
  • 'optimized_update'යනු එකතු කිරීමෙන් පසු එය කිරීමෙන් දෙවන මොහොතේ පක්ෂග්රාහීව නිවැරදි කිරීම ප්රශස්ත කිරීම සඳහා ද යන්න ධජයකි
  • amsgrad ආදම් සරල කිරීම සඳහා AMSGrad හෝ වැටීම භාවිතා කළ යුතුද යන්න දැක්වෙන ධජයකි
  • warmup උනුසුම් පියවර ගණන
  • d_model ආදර්ශ ප්රමාණය; i.e. ට්රාන්ස්ෆෝමරයේ මානයන් ගණන
  • defaults කණ්ඩායම් අගයන් සඳහා පෙරනිමි ශබ්ද කෝෂයකි. ඔබට පන්තිය දීර් extend කිරීමට අවශ්ය විට මෙය ප්රයෝජනවත් AdamWarmup වේ.
27    def __init__(self, params, lr=1e-3, betas=(0.9, 0.999), eps=1e-16,
28                 weight_decay: WeightDecay = WeightDecay(),
29                 optimized_update: bool = True,
30                 amsgrad=False,
31                 warmup=0, d_model=512, defaults=None):
49        defaults = {} if defaults is None else defaults
50        defaults.update(dict(warmup=warmup))
51        super().__init__(params, lr, betas, eps, weight_decay, optimized_update, amsgrad, defaults)
52        self.d_model = d_model

ඉගෙනීම-අනුපාතයලබා ගන්න

උණුසුම් කිරීමේ පියවර ගණන කොහේද?

54    def get_lr(self, state: Dict[str, any], group: Dict[str, any]):

62        factor = min(state['step'] ** (-0.5), state['step'] * group['warmup'] ** (-1.5))

64        return group['lr'] * self.d_model ** (-0.5) * factor

විවිධඋනුසුම් සහ ආකෘති ප්රමාණ සඳහා ප්ලොට් ඉගෙනුම් අනුපාතය

Plot of learning rate

67def _test_noam_lr():
73    import matplotlib.pyplot as plt
74    import numpy as np
75    from torch import nn
76
77    model = nn.Linear(10, 10)
78    opts = [Noam(model.parameters(), d_model=512, warmup=4000, lr=1),
79            Noam(model.parameters(), d_model=512, warmup=8000, lr=1),
80            Noam(model.parameters(), d_model=2048, warmup=2000, lr=1)]
81    plt.plot(np.arange(1, 20000), [[opt.get_lr({'step': i}, opt.defaults) for opt in opts] for i in range(1, 20000)])
82    plt.legend(["512:4000", "512:8000", "2048:2000"])
83    plt.title("Learning Rate")
84    plt.show()
85
86
87if __name__ == '__main__':
88    _test_noam_lr()