timeseriesAI / tsai

Time series Timeseries Deep Learning Machine Learning Python Pytorch fastai | State-of-the-art Deep Learning library for Time Series and Sequences in Pytorch / fastai
https://timeseriesai.github.io/tsai/
Apache License 2.0
5.16k stars 644 forks source link

Different behaviors with different datasets in regression tasks #244

Closed yingriyanlong closed 2 years ago

yingriyanlong commented 2 years ago

Thanks for your wonderful work.

I'm new in time series regression and Pytorch, and am trying to learn the example "04_Intro_to_Time_Series_Regression.ipynb".

When the dataset is 'AppliancesEnergy' or 'AustraliaRainfall', the standardization and training are normal.

But when the dataset is 'BeijingPM10Quality' or 'BeijingPM25Quality', the mean, std value, train_loss, and valid_loss are nan.

The data import and mean value are as follows:

X, y, splits = get_regression_data(dsid, split_data=False)
X.shape, y.shape, y[:10]

tfms  = [None, [TSRegression()]]
batch_tfms = TSStandardize(by_sample=True, by_var=True)
dls = get_ts_dls(X, y, splits=splits, tfms=tfms, batch_tfms=batch_tfms, bs=128)
dls.one_batch()

xb, yb = dls.train.one_batch()
xb.mean(), xb.std()

And the output is:

(TSTensor([nan], device=cuda:0), TSTensor([nan], device=cuda:0))

And the model is trained as:

learn = ts_learner(dls, InceptionTime, metrics=[mae, rmse], cbs=ShowGraph())
learn.fit_one_cycle(50, 4e-3)

The training process is:

epoch | train_loss | valid_loss | mae | _rmse | time
-- | -- | -- | -- | -- | --
0 | nan | nan | nan | nan | 00:01
1 | nan | nan | nan | nan | 00:01
2 | nan | nan | nan | nan | 00:01
3 | nan | nan | nan | nan | 00:01
4 | nan | nan | nan | nan | 00:01
5 | nan | nan | nan | nan | 00:01
6 | nan | nan | nan | nan | 00:01
7 | nan | nan | nan | nan | 00:01
8 | nan | nan | nan | nan | 00:01
9 | nan | nan | nan | nan | 00:01
10 | nan | nan | nan | nan | 00:01
11 | nan | nan | nan | nan | 00:01
12 | nan | nan | nan | nan | 00:01
13 | nan | nan | nan | nan | 00:01
14 | nan | nan | nan | nan | 00:01
15 | nan | nan | nan | nan | 00:01
16 | nan | nan | nan | nan | 00:01
17 | nan | nan | nan | nan | 00:01
18 | nan | nan | nan | nan | 00:01
19 | nan | nan | nan | nan | 00:01
20 | nan | nan | nan | nan | 00:01
21 | nan | nan | nan | nan | 00:01
22 | nan | nan | nan | nan | 00:01
23 | nan | nan | nan | nan | 00:01
24 | nan | nan | nan | nan | 00:01
25 | nan | nan | nan | nan | 00:01
26 | nan | nan | nan | nan | 00:01
27 | nan | nan | nan | nan | 00:01
28 | nan | nan | nan | nan | 00:01
29 | nan | nan | nan | nan | 00:01
30 | nan | nan | nan | nan | 00:01
31 | nan | nan | nan | nan | 00:01
32 | nan | nan | nan | nan | 00:01
33 | nan | nan | nan | nan | 00:01
34 | nan | nan | nan | nan | 00:01
35 | nan | nan | nan | nan | 00:01
36 | nan | nan | nan | nan | 00:01
37 | nan | nan | nan | nan | 00:01
38 | nan | nan | nan | nan | 00:01
39 | nan | nan | nan | nan | 00:01
40 | nan | nan | nan | nan | 00:01
41 | nan | nan | nan | nan | 00:01
42 | nan | nan | nan | nan | 00:01
43 | nan | nan | nan | nan | 00:01
44 | nan | nan | nan | nan | 00:01
45 | nan | nan | nan | nan | 00:01
46 | nan | nan | nan | nan | 00:01
47 | nan | nan | nan | nan | 00:01
48 | nan | nan | nan | nan | 00:01
49 | nan | nan | nan | nan | 00:01

The output of computer_setup is:

os             : Linux-5.11.0-38-generic-x86_64-with-debian-bullseye-sid
python         : 3.6.13
tsai           : 0.2.23
fastai         : 2.5.2
fastcore       : 1.3.26
numba          : 0.53.1
torch          : 1.9.1
n_cpus         : 20
device         : cuda (NVIDIA GeForce RTX 3090)

I can't find the cause of the problem, please try if you can reproduce the problem. Thanks a lot.

yingriyanlong commented 2 years ago

I think it has to do with whether there is missing data in the dataset.

yingriyanlong commented 2 years ago

I think it has to do with whether there is missing data in the dataset.

Yes, it is.