සමානාත්මතාකාර්යය

මෙයකඩදාසි වලින් 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