--- title: TimeSeriesLoader keywords: fastai sidebar: home_sidebar summary: "Data Loader for Time Series data" description: "Data Loader for Time Series data" nb_path: "nbs/data__tsloader.ipynb" ---
from nixtlats.data.utils import create_synthetic_tsdata
def test_eq_batch_size(dataset, batch_size, loader_class):
# Check returns batch_size tensors
loader = loader_class(dataset=dataset, batch_size=batch_size, eq_batch_size=True)
sizes = [batch['Y'].size(0) == batch_size for batch in loader]
assert all(sizes), 'Unexpected batch sizes.'
def test_eq_batch_size_order(dataset, batch_size, loader_class):
#This test only works for TimeSeriesDataset class
loader = loader_class(dataset=dataset, batch_size=batch_size, eq_batch_size=True)
for batch in loader:
idxs = batch['idxs']
dataset_batch = dataset[idxs.numpy().tolist()]
for key in batch.keys():
assert t.equal(batch[key], dataset_batch[key]), (
f'Batch and dataset batch differ, key {key}'
)
Y_df, X_df, S_df = create_synthetic_tsdata(sort=True)
dataset = TimeSeriesDataset(S_df=S_df, Y_df=Y_df, X_df=X_df,
input_size=5,
output_size=2)
dataloader = TimeSeriesLoader(dataset=dataset, batch_size=12,
eq_batch_size=False, shuffle=True)
for batch in dataloader:
batch
test_eq_batch_size(dataset, 32, TimeSeriesLoader)
test_eq_batch_size_order(dataset, 32, TimeSeriesLoader)
Y_df, X_df, S_df = create_synthetic_tsdata(sort=True)
dataset = WindowsDataset(S_df=S_df, Y_df=Y_df, X_df=X_df,
input_size=5,
output_size=2,
sample_freq=1)
dataloader = TimeSeriesLoader(dataset=dataset, batch_size=12,
eq_batch_size=False, shuffle=True)
for batch in dataloader:
batch
test_eq_batch_size(dataset, 32, TimeSeriesLoader)
Y_df, X_df, S_df = create_synthetic_tsdata(sort=True)
dataset = TimeSeriesDataset(S_df=S_df, Y_df=Y_df, X_df=X_df,
input_size=5,
output_size=2)
dataloader = FastTimeSeriesLoader(dataset=dataset, batch_size=12,
eq_batch_size=False, shuffle=True)
for batch in dataloader:
batch
test_eq_batch_size(dataset, 32, FastTimeSeriesLoader)
test_eq_batch_size_order(dataset, 32, FastTimeSeriesLoader)
Y_df, X_df, S_df = create_synthetic_tsdata(sort=True)
dataset = WindowsDataset(S_df=S_df, Y_df=Y_df, X_df=X_df,
input_size=5,
output_size=2,
sample_freq=1)
dataloader = FastTimeSeriesLoader(dataset=dataset, batch_size=12,
eq_batch_size=False, shuffle=True)
for batch in dataloader:
batch
test_eq_batch_size(dataset, 32, FastTimeSeriesLoader)
dataloader = TimeSeriesLoader(dataset=dataset, batch_size=12, shuffle=True)
fast_dataloader = FastTimeSeriesLoader(dataset=dataset, batch_size=12, shuffle=True)
%timeit -n 50 -r 3 [batch for batch in dataloader]
%timeit -n 50 -r 3 [batch for batch in fast_dataloader]