Main functions used to transform time series into TSImage tensors.
dsid = 'NATOPS'
X, y, splits = get_UCR_data(dsid, return_split=False)
out = TSToPlot()(TSTensor(X[:2]), split_idx=0)
print(out.shape)
out[0].show()
out = TSToMat()(TSTensor(X[:2]), split_idx=0)
print(out.shape)
out[0].show()
out = TSToMat(cmap='spring')(TSTensor(X[:2]), split_idx=0)
print(out.shape)
out[0].show()
out = TSToRP()(TSTensor(X[:2]), split_idx=0)
print(out.shape)
out[0].show()
o = TSTensor(X[0][1][None])
encoder = RecurrencePlot()
a = encoder.fit_transform(o.cpu().numpy())[0]
o = TSTensor(X[0])
encoder = RecurrencePlot()
b = encoder.fit_transform(o.cpu().numpy())[1]
test_eq(a,b) # channels can all be processed in parallel
test_eq(TSToRP()(TSTensor(X[0]), split_idx=False)[0], TSToRP()(TSTensor(X[0][0][None]), split_idx=False)[0])
test_eq(TSToRP()(TSTensor(X[0]), split_idx=False)[1], TSToRP()(TSTensor(X[0][1][None]), split_idx=False)[0])
test_eq(TSToRP()(TSTensor(X[0]), split_idx=False)[2], TSToRP()(TSTensor(X[0][2][None]), split_idx=False)[0])
dsid = 'NATOPS'
X, y, splits = get_UCR_data(dsid, return_split=False)
tfms = [None, Categorize()]
bts = [[TSNormalize(), TSToPlot(100)],
[TSNormalize(), TSToMat(100)],
[TSNormalize(), TSToGADF(100)],
[TSNormalize(), TSToGASF(100)],
[TSNormalize(), TSToMTF(100)],
[TSNormalize(), TSToRP(100)]]
btns = ['Plot', 'Mat', 'GADF', 'GASF', 'MTF', 'RP']
dsets = TSDatasets(X, y, tfms=tfms, splits=splits)
for i, (bt, btn) in enumerate(zip(bts, btns)):
dls = TSDataLoaders.from_dsets(dsets.train, dsets.valid, bs=8, batch_tfms=bt)
test_eq(dls.vars, 3 if i <2 else X.shape[1])
test_eq(dls.len, (100,100))
xb, yb = dls.train.one_batch()
print(i, btn, xb, xb.dtype, xb.min(), xb.max())
xb[0].show()
plt.show()
The simplest way to train a model using time series to image transforms is this:
dsid = 'NATOPS'
X, y, splits = get_UCR_data(dsid, return_split=False)
tfms = [None, Categorize()]
batch_tfms = [TSNormalize(), TSToGADF(224)]
dls = get_ts_dls(X, y, splits=splits, tfms=tfms, batch_tfms=batch_tfms)
learn = tsimage_learner(dls, xresnet34)
learn.fit_one_cycle(10)