AtmoRep / model /fake_data.py
yzt15806542928's picture
Upload folder using huggingface_hub
f1d3656 verified
Raw
History Blame Contribute Delete
1.04 kB
"""Deterministic fake dataset for the tiny AtmoRep training pipeline."""
import torch
from torch.utils.data import Dataset
from .tiny_atmorep import TinyAtmoRepConfig
class FakeAtmoRepDataset(Dataset):
def __init__(self, config: TinyAtmoRepConfig, samples: int, seed: int, mask_fraction: float) -> None:
self.config, self.samples, self.seed = config, samples, seed
self.num_tokens = (config.input_shape[0] // config.patch_shape[0]) * (config.input_shape[2] // config.patch_shape[1]) * (config.input_shape[3] // config.patch_shape[2])
self.mask_count = max(1, round(self.num_tokens * mask_fraction))
def __len__(self):
return self.samples
def __getitem__(self, index):
generator = torch.Generator().manual_seed(self.seed + index)
fields = torch.randn(self.config.input_shape, generator=generator)
mask = torch.zeros(self.num_tokens, dtype=torch.bool)
mask[torch.randperm(self.num_tokens, generator=generator)[:self.mask_count]] = True
return fields, mask