ඉහළ-Kනියැදීම්

මෙන්නඅපි පළමුව පිවිසුම් බෙදා හැරීමෙන් ඉහළම කේ ටෝකන තෝරාගෙන ඒවායින් සාම්පල ලබා ගනිමු.

මෙන්නමෙම නියැදි ශිල්පීය ක්රම භාවිතා කරන අත්හදා බැලීමක් .

15import torch
16
17from labml_nn.sampling import Sampler

ඉහළ-Kනියැදි

20class TopKSampler(Sampler):
  • k තෝරා ගැනීමට ටෝකන ගණන වේ
  • sampler ඉහළ-k ටෝකන සඳහා භාවිතා කිරීමට නියැදිකරු වේ
  • sampler පිවිසුම් ටෙන්සරයක් ආදාන ලෙස ගෙන ටෝකන් ටෙන්සරයක් නැවත ලබා දෙන ඕනෑම නියැදියක විය හැකිය; උදා: `උෂ්ණත්ව සාම්පලයක්'.

    24    def __init__(self, k: int, sampler: Sampler):
    32        self.k = k
    33        self.sampler = sampler

    පිවිසුම්වලින් නියැදිය

    35    def __call__(self, logits: torch.Tensor):

    නවපිවිසුම් පිරී ඇත ; i.e. ශුන්ය සම්භාවිතාව

    40        zeros = logits.new_ones(logits.shape) * float('-inf')

    විශාලතම පිවිසුම් සහ ඒවායේ දර්ශක තෝරන්න

    42        values, indices = torch.topk(logits, self.k, dim=-1)

    Top-kතෝරාගත් දර්ශකවල අගයන් සැබෑ පිවිසුම් වලට සකසන්න. වෙනත් ටෝකන වල පිවිසුම් ඉතිරිව පවතී

    45        zeros.scatter_(-1, indices, values)

    නිශ්චිතනියැදිය සමඟ ඉහළ-k පිවිසුම් වලින් නියැදිය.

    48        return self.sampler(zeros)