aboutsummaryrefslogtreecommitdiffstats
path: root/.agents/skills/architecture-design/examples/custom_dataset.py
diff options
context:
space:
mode:
Diffstat (limited to '.agents/skills/architecture-design/examples/custom_dataset.py')
-rw-r--r--.agents/skills/architecture-design/examples/custom_dataset.py50
1 files changed, 50 insertions, 0 deletions
diff --git a/.agents/skills/architecture-design/examples/custom_dataset.py b/.agents/skills/architecture-design/examples/custom_dataset.py
new file mode 100644
index 0000000..c9fe002
--- /dev/null
+++ b/.agents/skills/architecture-design/examples/custom_dataset.py
@@ -0,0 +1,50 @@
+"""
+Example: Creating a Custom Dataset
+
+This example shows how to add a new dataset following the project architecture.
+"""
+
+from torch.utils.data import Dataset
+from typing import Dict
+import torch
+from src.data_module.dataset import register_dataset
+
+
+@register_dataset("time_series")
+class TimeSeriesDataset(Dataset):
+ """
+ Time series dataset for sequence modeling.
+
+ Args:
+ sequences: List of time series sequences
+ seq_length: Fixed sequence length (pad or truncate if needed)
+ """
+
+ def __init__(self, sequences: list, seq_length: int = 100):
+ self.sequences = sequences
+ self.seq_length = seq_length
+
+ def __len__(self) -> int:
+ return len(self.sequences)
+
+ def __getitem__(self, i: int) -> Dict[str, torch.Tensor]:
+ sequence = self.sequences[i]
+
+ # Pad or truncate to fixed length
+ if len(sequence) < self.seq_length:
+ padding = torch.zeros(self.seq_length - len(sequence))
+ sequence = torch.cat([sequence, padding])
+ else:
+ sequence = sequence[:self.seq_length]
+
+ return {
+ "input": sequence,
+ "label": sequence, # For autoencoder, etc.
+ "length": torch.tensor(min(len(self.sequences[i]), self.seq_length))
+ }
+
+
+# Usage in training:
+# from src.data_module.dataset import DatasetFactory
+# dataset = DatasetFactory("time_series")(sequences=training_data, seq_length=128)
+# dataloader = DataLoader(dataset, batch_size=32, shuffle=True)