docs/si/sampling/nucleus.html
මෙයන්යෂ්ටික නියැදීම් ක්රියාත්මක කිරීමක් වන අතර එය කඩදාසි වලින් හඳුන්වා දී ඇත ස්නායු පෙළ පරිහානිය පිළිබඳ කුතුහලය.
කදම්බසෙවීම, පිරිසිදු නියැදීම, උෂ්ණත්ව නියැදීම සහඉහළ කේනියැදීමවැනි වෙනත් නියැදික්රමවල ඇති ගැටළු පිළිබඳව කඩදාසි සාකච්ඡා කරයි. මෙම පත්රිකාව න්යෂ්ටික නියැදීම් පිළිබඳ අදහස හඳුන්වා දෙයි, එය පෙළ උත්පාදනය සඳහා වෙනත් නියැදි ක්රමවලට වඩා ප්රායෝගිකව ක්රියා කරයි.
න්යෂ්ටිකනියැදීම පළමුව වචන මාලාවේ උප කුලකයක් තෝරා ගනී V(p)⊂V, එහිදී V(p) කුඩාම ටෝකන කට්ටලයක්
xi∈V(p)∑P(xi∣x1:i−1)≥p
එනම්, ඒවායේ සම්භාවිතාවන්ගේ එකතුව අඩු වන තෙක් අපි ඉහළම සම්භාවිතාව සහිත ටෝකන තෝරා ගනිමු p.
ඉන්පසුඅපි තෝරාගත් ටෝකන වලින් සාම්පල ලබා ගනිමු.
මෙන්නමෙම නියැදි ශිල්පීය ක්රම භාවිතා කරන අත්හදා බැලීමක් .
29importtorch30fromtorchimportnn3132fromlabml\_nn.samplingimportSampler
35classNucleusSampler(Sampler):
p යනු තෝරා ගැනීමට ටෝකන වල සම්භාවිතාවන්ගේ එකතුවයි p
sampler තෝරාගත් ටෝකන සඳහා භාවිතා කළ යුතු නියැදිකරු වේ
39def\_\_init\_\_(self,p:float,sampler:Sampler):
44self.p=p45self.sampler=sampler
පිවිසුම් P(xi∣x1:i−1) වලින් ගණනය කිරීමට සොෆ්ට්මැක්ස්
47self.softmax=nn.Softmax(dim=-1)
න්යෂ්ටිකනියැදීම සමඟ පිවිසුම් වලින් නියැදිය
49def\_\_call\_\_(self,logits:torch.Tensor):
සම්භාවිතාවලබා ගන්න P(xi∣x1:i−1)
55probs=self.softmax(logits)
බැසීමේඅනුපිළිවෙලෙහි සම්භාවිතාවන් වර්ග කරන්න
58sorted\_probs,indices=torch.sort(probs,dim=-1,descending=True)
වර්ගකළ අනුපිළිවෙලෙහි සමුච්චිත සම්භාවිතාවන්ගේ එකතුව ලබා ගන්න
60cum\_sum\_probs=torch.cumsum(sorted\_probs,dim=-1)
වඩාඅඩු සමුච්චිත මුදලක් සොයා ගන්න p.
62nucleus=cum\_sum\_probs\<self.p
සමුච්චිතසම්භාවිතාව අඩු අවම ටෝකන සංඛ්යාවෙන් පසුව අපි එක් ටෝකනයක් එකතු කරන පරිදි ඒවා සකස් කරන්න p.
65nucleus=torch.cat([nucleus.new\_ones(nucleus.shape[:-1]+(1,)),nucleus[...,:-1]],dim=-1)
ලොග්සම්භාවිතාව ලබා ගන්න සහ න්යෂ්ටිය නොවන වසං කරන්න
68sorted\_log\_probs=torch.log(sorted\_probs)69sorted\_log\_probs[~nucleus]=float('-inf')
නියැදියෙන්නියැදිය
72sampled\_sorted\_indexes=self.sampler(sorted\_log\_probs)
සත්යදර්ශක ලබා ගන්න
75res=indices.gather(-1,sampled\_sorted\_indexes.unsqueeze(-1))
78returnres.squeeze(-1)