Bases: Dataset
ExtendDataset either extends or contracts the length of provided Dataset.
Parameters:
Name |
Type |
Description |
Default |
dataset |
Dataset
|
The Original dataset(s) which need expansion or contraction.
|
required
|
spoof_length |
int
|
Length to which original dataset must be expanded or contracted to. (New desired length)
|
required
|
Source code in fastestimator/fastestimator/dataset/extend_dataset.py
| @traceable()
class ExtendDataset(Dataset):
"""ExtendDataset either extends or contracts the length of provided Dataset.
Args:
dataset: The Original dataset(s) which need expansion or contraction.
spoof_length: Length to which original dataset must be expanded or contracted to. (New desired length)
"""
def __init__(self, dataset: Dataset, spoof_length: int) -> None:
self.dataset = dataset
self.spoof_length = spoof_length
self._check_input()
if hasattr(dataset, "fe_reset_ds"):
self.fe_reset_ds = dataset.fe_reset_ds
if hasattr(dataset, "fe_batch_indices"):
self.fe_batch_indices = dataset.fe_batch_indices
if hasattr(dataset, "fe_batch"):
self.fe_batch = dataset.fe_batch
def __len__(self):
return len(self.dataset)
def _check_input(self) -> None:
"""Verify that the given input values are valid.
Raises:
AssertionError: If any of the parameters are found to by unacceptable for a variety of reasons.
"""
assert isinstance(self.spoof_length, int), "Only accept positive integer type as spoof_length"
assert self.spoof_length > 0, "Invalid spoof_length. Expand Length cannot be less than or equal to 0"
assert not isinstance(self.dataset, ExtendDataset), "Input Dataset cannot be an ExtendDataset object"
assert not isinstance(self.dataset, InterleaveDataset), "Input Dataset cannot be an InterleaveDataset object"
def __getitem__(self, index):
return self.dataset[index]
|