forecast_it, ts_it = make_evaluation_predictions(
dataset=test_ds, # test dataset
predictor=predictor, # predictor
num_eval_samples=100, # number of sample paths we want for evaluation
)
forecasts = list(forecast_it)
tss = list(ts_it)`
Where I had the following error
0%| | 0/100 [00:00<?, ?it/s]
Traceback (most recent call last):
File "C:\XXXX\Tutorial\MyTest2.py", line 66, in
predictor = estimator.train(train_ds)
File "C:\Users\NPU.conda\envs\GPU_gluon\lib\site-packages\gluonts\mx\model\estimator.py", line 237, in train
return self.train_model(
File "C:\Users\NPU.conda\envs\GPU_gluon\lib\site-packages\gluonts\mx\model\estimator.py", line 214, in train_model
self.trainer(
File "C:\Users\NPU.conda\envs\GPU_gluon\lib\site-packages\gluonts\mx\trainer_base.py", line 420, in call
epoch_loss = loop(
File "C:\Users\NPU.conda\envs\GPUgluon\lib\site-packages\gluonts\mx\trainer_base.py", line 286, in loop
= net(batch.values())
File "C:\Users\NPU.conda\envs\GPU_gluon\lib\site-packages\mxnet\gluon\block.py", line 682, in call
out = self.forward(args)
File "C:\Users\NPU.conda\envs\GPU_gluon\lib\site-packages\mxnet\gluon\block.py", line 1254, in forward
return self.hybrid_forward(ndarray, x, *args, *params)
File "C:\Users\NPU.conda\envs\GPU_gluon\lib\site-packages\gluonts\mx\model\deepar_network.py", line 915, in hybrid_forward
outputs = self.distribution(
File "C:\Users\NPU.conda\envs\GPU_gluon\lib\site-packages\gluonts\mx\model\deepar_network.py", line 854, in distribution
rnnoutputs, , scale, , = self.unroll_encoder(
File "C:\Users\NPU.conda\envs\GPU_gluon\lib\site-packages\gluonts\mx\model\deepar_network.py", line 691, in unroll_encoder_default
is_padded_indicator = F.concat(
File "", line 70, in concat
File "C:\Users\NPU.conda\envs\GPU_gluon\lib\site-packages\mxnet_ctypes\ndarray.py", line 82, in _imperative_invoke
check_call(_LIB.MXImperativeInvokeEx(
File "C:\Users\NPU.conda\envs\GPU_gluon\lib\site-packages\mxnet\base.py", line 246, in check_call
raise get_last_ffi_error()
mxnet.base.MXNetError: Traceback (most recent call last):
File "C:\Jenkins\workspace\mxnet-tag\mxnet\src\operator\nn\concat.cc", line 67
MXNetError: Check failed: shape_assign(&(in_shape)[i], dshape): Incompatible input shape: expected [3,-1], got [3,25,2]
it turns out to be the problem of here:
Line 691
is_padded_indicator = F.concat( past_is_pad.slice_axis( axis=1, begin=self.history_length - self.context_length, end=None, ), F.zeros_like(future_observed_values), dim=1, )
the dimension of past_is_pad.slice_axis(
axis=1,
begin=self.history_length - self.context_length,
end=None,
)
and F.zeros_like(future_observed_values)
don't match
so I printed out their shape as
print(past_is_pad.slice_axis( axis=1, begin=self.history_length - self.context_length, end=None, ).shape) print(F.zeros_like(future_observed_values).shape)
and get
(3, 25)
(3, 25, 2)
I am currently testing on `import pandas as pd import numpy as np
from gluonts.dataset.common import ListDataset from gluonts.mx.model.deepar import DeepAREstimator from gluonts.mx.trainer import Trainer
from gluonts.mx.distribution.multivariate_gaussian import MultivariateGaussianOutput
from gluonts.evaluation.backtest import make_evaluation_predictions
N = 20 # number of time series T = 1000 # number of timesteps dim = 2 # dimension of the observations prediction_length = 25 freq = '1H'
custom_datasetx = np.random.normal(size=(N, dim, T)) custom_datasetx[:, 1, :] = 5 * custom_datasetx[:, 1, :] start = pd.Timestamp("01-01-2019", freq=freq)
train_ds = ListDataset( [ {'target': x, 'start': start} for x in custom_datasetx[:, :, :-prediction_length] ], freq=freq, one_dim_target=False, )
test_ds = ListDataset( [ {'target': x, 'start': start} for x in custom_datasetx[:, :, :] ], freq=freq, one_dim_target=False, )
epochs = 10 learning_rate = 1E-3 batch_size = 3 num_batches_per_epoch = 100
estimator = DeepAREstimator( prediction_length=prediction_length, context_length=prediction_length, freq=freq, trainer=Trainer( ctx="cpu", epochs=epochs, learning_rate=learning_rate, hybridize=False, num_batches_per_epoch=num_batches_per_epoch, ), batch_size=batch_size, distr_output=MultivariateGaussianOutput(dim=dim) )
predictor = estimator.train(train_ds)
forecast_it, ts_it = make_evaluation_predictions( dataset=test_ds, # test dataset predictor=predictor, # predictor num_eval_samples=100, # number of sample paths we want for evaluation )
forecasts = list(forecast_it) tss = list(ts_it)`
Where I had the following error
0%| | 0/100 [00:00<?, ?it/s] Traceback (most recent call last): File "C:\XXXX\Tutorial\MyTest2.py", line 66, in
predictor = estimator.train(train_ds)
File "C:\Users\NPU.conda\envs\GPU_gluon\lib\site-packages\gluonts\mx\model\estimator.py", line 237, in train
return self.train_model(
File "C:\Users\NPU.conda\envs\GPU_gluon\lib\site-packages\gluonts\mx\model\estimator.py", line 214, in train_model
self.trainer(
File "C:\Users\NPU.conda\envs\GPU_gluon\lib\site-packages\gluonts\mx\trainer_base.py", line 420, in call
epoch_loss = loop(
File "C:\Users\NPU.conda\envs\GPUgluon\lib\site-packages\gluonts\mx\trainer_base.py", line 286, in loop
= net(batch.values())
File "C:\Users\NPU.conda\envs\GPU_gluon\lib\site-packages\mxnet\gluon\block.py", line 682, in call
out = self.forward(args)
File "C:\Users\NPU.conda\envs\GPU_gluon\lib\site-packages\mxnet\gluon\block.py", line 1254, in forward
return self.hybrid_forward(ndarray, x, *args, *params)
File "C:\Users\NPU.conda\envs\GPU_gluon\lib\site-packages\gluonts\mx\model\deepar_network.py", line 915, in hybrid_forward
outputs = self.distribution(
File "C:\Users\NPU.conda\envs\GPU_gluon\lib\site-packages\gluonts\mx\model\deepar_network.py", line 854, in distribution
rnnoutputs, , scale, , = self.unroll_encoder(
File "C:\Users\NPU.conda\envs\GPU_gluon\lib\site-packages\gluonts\mx\model\deepar_network.py", line 691, in unroll_encoder_default
is_padded_indicator = F.concat(
File "", line 70, in concat
File "C:\Users\NPU.conda\envs\GPU_gluon\lib\site-packages\mxnet_ctypes\ndarray.py", line 82, in _imperative_invoke
check_call(_LIB.MXImperativeInvokeEx(
File "C:\Users\NPU.conda\envs\GPU_gluon\lib\site-packages\mxnet\base.py", line 246, in check_call
raise get_last_ffi_error()
mxnet.base.MXNetError: Traceback (most recent call last):
File "C:\Jenkins\workspace\mxnet-tag\mxnet\src\operator\nn\concat.cc", line 67
MXNetError: Check failed: shape_assign(&( in_shape)[i], dshape): Incompatible input shape: expected [3,-1], got [3,25,2]
it turns out to be the problem of here: Line 691
is_padded_indicator = F.concat( past_is_pad.slice_axis( axis=1, begin=self.history_length - self.context_length, end=None, ), F.zeros_like(future_observed_values), dim=1, )
the dimension of past_is_pad.slice_axis( axis=1, begin=self.history_length - self.context_length, end=None, ) and F.zeros_like(future_observed_values) don't matchso I printed out their shape as
print(past_is_pad.slice_axis( axis=1, begin=self.history_length - self.context_length, end=None, ).shape) print(F.zeros_like(future_observed_values).shape)
and get (3, 25) (3, 25, 2)please help, great Thanks!!!!!!