මෙයකඩදාසි වලින් Parity Task සඳහා දත්ත නිර්මාණය කරයි අනුවර්තී ගණනය කිරීමේ කාලය පුනරාවර්තන ස්නායුක ජාල සඳහා.
සමානාත්මතාකර්තව්යයේ ආදානය යනු ගේ හා සමඟ දෛශිකයකි. ප්රතිදානය යනු සමානාත්මතාවයයි - එහි නම් එක් යනු ඔත්තේ සංඛ්යාවක් වන අතර වෙනත් ආකාරයකින් ශුන්ය වේ. ආදානය ජනනය කරනු ලබන්නේ දෛශිකයේ අහඹු මූලද්රව්ය සංඛ්යාවක් හෝ ය.
19from typing import Tuple
20
21import torch
22from torch.utils.data import Dataset
25class ParityDataset(Dataset):
n_samples
සාම්පල සංඛ්යාව වේ n_elems
ආදාන දෛශිකයේ මූලද්රව්ය ගණන30 def __init__(self, n_samples: int, n_elems: int = 64):
35 self.n_samples = n_samples
36 self.n_elems = n_elems
දත්තසමුදාය ප්රමාණය
38 def __len__(self):
42 return self.n_samples
නියැදියක්ජනනය කරන්න
44 def __getitem__(self, idx: int) -> Tuple[torch.Tensor, torch.Tensor]:
හිස්දෛශික
50 x = torch.zeros((self.n_elems,))
ශුන්යනොවන මූලද්රව්ය සංඛ්යාව - අතර අහඹු සංඛ්යාවක් සහ සම්පූර්ණ මූලද්රව්ය සංඛ්යාව
52 n_non_zero = torch.randint(1, self.n_elems + 1, (1,)).item()
ගේ සහ ගේ සමග ශුන්ය නොවන අංග පුරවන්න
54 x[:n_non_zero] = torch.randint(0, 2, (n_non_zero,)) * 2 - 1
අහඹුලෙස මූලද්රව්ය විකෘති කරන්න
56 x = x[torch.randperm(self.n_elems)]
සමානාත්මතාවය
59 y = (x == 1.).sum() % 2
62 return x, y