Back to Annotated Deep Learning Paper Implementations

රෙට්රෝපුහුණු දත්ත කට්ටලය

docs/si/transformers/retro/dataset.html

latest6.3 KB
Original Source

hometransformersretro

View code on Github

#

රෙට්රෝපුහුණු දත්ත කට්ටලය

අපිළඟම අසල්වැසියන් ප්රධාන වටිනාකම් දත්ත ගබඩාවෙන් පූර්ව ලබා ගෙන RETRO ආකෘතිය පුහුණු කිරීම සඳහා දත්ත කට්ටලය නිර්මාණය කරමු.

15importjson16frompathlibimportPath1718importnumpyasnp19importtorch20fromtorch.utils.dataimportDatasetasPyTorchDataset2122fromlabmlimportlab,monit23fromlabml\_helpers.datasets.textimportTextFileDataset,TextDataset24fromlabml\_nn.transformers.retro.databaseimportRetroIndex

#

දත්තසමුදාය සාදන්න

  • chunk_len කුටියේ දිග වේ
  • chunks_per_sample පුහුණු නියැදියකට කුට්ටි ගණන
  • skip_range සාම්පල දෙකක් අතර මඟ හැරීමට උපරිම අක්ෂර ගණන වේ. අපි මඟ කිහිපයක් චරිත අතර සාම්පල බවට වග බලා ගන්න සාම්පල පෙලගැසී නොමැත සමග හොඳින් කැබලි දී දත්ත සමුදාය
27defbuild\_dataset(chunk\_len:int=16,chunks\_per\_sample:int=32,skip\_range:int=8):

#

පෙළගොනුව පූරණය කරන්න

39dataset=TextFileDataset(40lab.get\_data\_path()/'tiny\_shakespeare.txt',41list,42url='https://raw.githubusercontent.com/karpathy/char-rnn/master/data/tinyshakespeare/input.txt')

#

එහිපුහුණු කොටස

45text=dataset.train

#

අසල්වැසියන්ලබා ගැනීම සඳහා දර්ශකය පටවන්න

48index=RetroIndex()

#

ආදානනියැදි ඕෆ්සෙට්

51sample\_offsets=[]

#

පෙළසඳහා කර්සරය

53i=054whilei\<len(text):

#

අසල්වැසියන්සමඟ පෙලගැසී නොමැති බවට වග බලා ගැනීම සඳහා චරිත කිහිපයක් මඟ හරින්න

56skip=np.random.randint(skip\_range)57i+=skip

#

අපිපෙළෙහි අවසානයට පැමිණ ඇත්නම් නවත්වන්න

60ifi+chunks\_per\_sample\*chunk\_len\>len(text):61break

#

ඕෆ්සෙට්එකතු කරන්න

64sample\_offsets.append(i)

#

කර්සරයවැඩි කරන්න

67i+=chunks\_per\_sample\*chunk\_len

#

සාම්පලසඳහා

70samples=[]

#

නියැදිඕෆ්සෙට් හරහා නැවත කරන්න

72foriinmonit.iterate('Gather Neighbors',sample\_offsets):

#

අමතරචරිතයක් ඇතුළුව නියැදිය ලබා ගන්න (අනාවැකිය සඳහා)

74sample=text[i:i+chunks\_per\_sample\*chunk\_len+1]

#

ආදානය

76src=sample[:-1]

#

එයකුට්ටි වලට කඩන්න

78chunks=[src[j:j+chunk\_len]forjinrange(0,len(src),chunk\_len)]

#

කුට්ටියඕෆ්සෙට්

80chunk\_offsets=[j+iforjinrange(0,len(src),chunk\_len)]

#

ළඟමඅසල්වැසියන් ලබා ගන්න

83neighbor\_offsets=index(chunks,chunk\_offsets)

#

අසල්වැසියාගේපෙළ ලබා ගන්න. අසල්වැසියාගේ දිග මෙන් දෙගුණයක් වේ chunk_len

86neighbors=[[text[j:j+chunk\_len\*2]forjinn\_off]forn\_offinneighbor\_offsets]

#

සාම්පලලැයිස්තුවට එකතු කරන්න

89samples.append((sample[:-1],sample[1:],neighbors))

#

JSONහි සාම්පල සුරකින්න. අපගේ දත්ත කට්ටලය කුඩා බැවින් අපට සංකීර්ණ දත්ත කට්ටල ගබඩා කිරීමේ යාන්ත්රණ හෝ පූර්ව ටෝකීකරණය භාවිතා කිරීමට අවශ්ය නොවේ.

94withopen(str(lab.get\_data\_path()/'retro\_train\_dataset.json'),'w')asf:95f.write(json.dumps(samples))

#

දත්තකට්ටලය

විසින්නිර්මාණය කරන ලද දත්ත කට්ටලය පටවන PyTorch දත්ත කට්ටලය මෙයයි build_dataset .

98classDataset(PyTorchDataset):

#

  • file_path සුරකින ලද JSON ගොනුවේ මාර්ගයයි

  • tds වේ TextDataset

105def\_\_init\_\_(self,file\_path:Path,tds:TextDataset):

#

111self.tds=tds

#

සාම්පලපූරණය කරන්න

113withopen(str(file\_path),'r')asf:114self.samples=json.loads(f.read())

#

සාම්පලගණන

116def\_\_len\_\_(self):

#

120returnlen(self.samples)

#

නියැදියක්ලබා ගන්න

122def\_\_getitem\_\_(self,idx:int):

#

නියැදියලබා ගන්න

127s=self.samples[idx]

#

ටෝකනයිස්කරන්න

129src=self.tds.text\_to\_i(s[0])130tgt=self.tds.text\_to\_i(s[1])131neighbors=torch.stack([torch.stack([self.tds.text\_to\_i(n)forninchunks])forchunksins[2]])

#

133returnsrc,tgt,neighbors

#

136if\_\_name\_\_=='\_\_main\_\_':137build\_dataset()

Trending Research Paperslabml.ai