docs/si/sampling/top_k.html
මෙන්නඅපි පළමුව පිවිසුම් බෙදා හැරීමෙන් ඉහළම කේ ටෝකන තෝරාගෙන ඒවායින් සාම්පල ලබා ගනිමු.
මෙන්නමෙම නියැදි ශිල්පීය ක්රම භාවිතා කරන අත්හදා බැලීමක් .
15importtorch1617fromlabml\_nn.samplingimportSampler
20classTopKSampler(Sampler):
k තෝරා ගැනීමට ටෝකන ගණන වේ
sampler ඉහළ-k ටෝකන සඳහා භාවිතා කිරීමට නියැදිකරු වේ
sampler පිවිසුම් ටෙන්සරයක් ආදාන ලෙස ගෙන ටෝකන් ටෙන්සරයක් නැවත ලබා දෙන ඕනෑම නියැදියක විය හැකිය; උදා: `උෂ්ණත්ව සාම්පලයක්'.
24def\_\_init\_\_(self,k:int,sampler:Sampler):
32self.k=k33self.sampler=sampler
පිවිසුම්වලින් නියැදිය
35def\_\_call\_\_(self,logits:torch.Tensor):
නවපිවිසුම් පිරී ඇත −∞; i.e. ශුන්ය සම්භාවිතාව
40zeros=logits.new\_ones(logits.shape)\*float('-inf')
විශාලතම k පිවිසුම් සහ ඒවායේ දර්ශක තෝරන්න
42values,indices=torch.topk(logits,self.k,dim=-1)
Top-kතෝරාගත් දර්ශකවල අගයන් සැබෑ පිවිසුම් වලට සකසන්න. වෙනත් ටෝකන වල පිවිසුම් ඉතිරිව පවතී −∞
45zeros.scatter\_(-1,indices,values)
නිශ්චිතනියැදිය සමඟ ඉහළ-k පිවිසුම් වලින් නියැදිය.
48returnself.sampler(zeros)