首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在多个时间序列上训练deepAR?

如何在多个时间序列上训练deepAR?
EN

Stack Overflow用户
提问于 2021-10-23 13:30:53
回答 1查看 188关注 0票数 0

我正在尝试使用deepAR的GluonTS实现在多个时间序列上训练deepAR (使用m5数据集)。然而,当我在数据集中的单个时间序列上训练deepAR时,训练所需的时间与在100个(或更多)时间序列上训练模型所需的时间一样少。我花了几个小时试图了解哪里可能出了问题,但我还没有找到任何可能的解决方案。下面是复制该问题的代码,假设您已经下载了m5数据集:

代码语言:javascript
复制
from gluonts.mx import Trainer
from gluonts.evaluation import make_evaluation_predictions
from gluonts.model import deepar
from gluonts.mx.distribution.neg_binomial import NegativeBinomialOutput

import numpy as np
import pandas as pd

########################
##### PREPARING THE DATA
########################
prediction_length = 28
freq = "D"
start = pd.Timestamp("29-01-2011")

# load data
ste = pd.read_csv("sales_train_evaluation.csv")

# pandas Series of item 2
eva = ste.iloc[1,6:]

# 1-dimensional array containing time series data of item 2
item = np.array(ste.iloc[1,6:])

# Convert item to GluonTS-compatible ListDataset object
train_1 = ListDataset(
    [{'target': item[:-prediction_length], 'start':start}],
    freq=freq
)

# 2-dimensional array, containing time series data of 100 items
items = np.array(ste.iloc[1:101,6:])

# Convert to GluonTS-compatible ListDataset object
# train_100 contains 100 dictionaries, each corresponding to a given time series
train_100 = ListDataset(
    [{'target': ts, 'start':start} for ts in items[:, :-prediction_length]],
    freq=freq
)

########################
##### TRAINING THE MODEL
########################
nbo = NegativeBinomialOutput()
trainer = Trainer(epochs=5)

# train deepAR on 1 time series
estimator1 = deepar.DeepAREstimator(
    freq="D", prediction_length=28, trainer=trainer, distr_output=nbo
)
estimator1.train(training_data=train_1)

# train deepAR on 100 time series
estimator100 = deepar.DeepAREstimator(
    freq="D", prediction_length=28, trainer=trainer, distr_output=nbo
)
estimator100.train(training_data=train_100)
EN

回答 1

Stack Overflow用户

发布于 2021-10-25 09:26:29

是的,对于100个时间序列,这需要时间,您使用的是gpu还是cpu?在我的电脑中,我使用的是GPU,所以它对我来说很好

代码语言:javascript
复制
estimator = SimpleFeedForwardEstimator(
                    num_hidden_dimensions=[10],
                    prediction_length=custom_ds_metadata['prediction_length'],
                    context_length=2*custom_ds_metadata['prediction_length'],
                    freq=custom_ds_metadata['freq'],
                    trainer=Trainer(
                        ctx="gpu",
                        epochs=5,
                        learning_rate=1e-3,
                        hybridize=False,
                        num_batches_per_epoch=100
                    )
                )`enter code here`
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69688631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档