python - Amazon DeepAR 超参数调整错误
问题描述
这是我运行代码后得到的:
_prepare_estimator_for_tuning estimator._prepare_for_training(job_name) 中的文件“C:\Users\admin\anaconda3\envs\tensorflow_env\lib\site-packages\sagemaker\tuner.py”,第 484 行
AttributeError:“DeepAREstimator”对象没有属性“_prepare_for_training”
互联网上似乎很少有关于 Amazon sagemaker deepar 算法的超参数调整示例。有人可以帮我解决这个问题吗?
import mxnet as mx
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from gluonts.model.deepar import DeepAREstimator
from gluonts.mx.trainer import Trainer
from gluonts.dataset.common import ListDataset
from itertools import islice
from gluonts.evaluation.backtest import make_evaluation_predictions
from sagemaker.tuner import HyperparameterTuner, IntegerParameter, CategoricalParameter, ContinuousParameter
df = pd.read_csv('final.csv', index_col=0,parse_dates=True)
training_data = ListDataset(
[{"start": df.index[0], "target": df.outbound_qty[:pd.to_datetime('2021-01-01')],
"feat_dynamic_real": [df.is_holiday[:pd.to_datetime('2021-01-01')],
df.is_salary[:pd.to_datetime('2021-01-01')],
df.count_qty[:pd.to_datetime('2021-01-01')],
df.shelf_qty[:pd.to_datetime('2021-01-01')]]
}],
freq="D"
)
estimator = DeepAREstimator(freq="D",prediction_length=7,trainer=Trainer(ctx=mx.context.cpu()))
hyperparams = {'learning_rate': ContinuousParameter(0.001, 0.1),
'epochs': IntegerParameter(10, 100),
'context_length': IntegerParameter(7, 90),
'mini_batch_size': IntegerParameter(32, 128)
}
tuner = HyperparameterTuner(estimator=estimator, objective_metric_name="test:RMSE",
objective_type='Minimize',hyperparameter_ranges=hyperparams)
tuner.fit(inputs = training_data)
解决方案
你混合了两个不同版本的 DeepAR,这就是你有错误的原因。DeepAR(Salinas 等人)实际上在 3 个地方实现:
- 在Amazon Forecast中:DeepAR+ 是 DeepAR 的托管实施,其中所有的科学代码都是为您编写的,您只需使用 Forecast SDK 即可在您的 S3 数据上启动服务。(示例)。如果您不想编写任何科学代码并希望获得托管体验,请使用 Amazon Forecast。
- 在Amazon SageMaker 中:SageMaker 有一个内置的 DeepAR 容器,您可以使用它来训练 S3 数据。请参阅此处的可用超参数和此处的示例。如果您想要更多控制,请使用 SageMaker DeepAR,同时仍然不必编写模型代码(更多超参数、硬件选择)
- 在开源 GluonTS 中:AWS 创建的 GluonTS 开源神经预测库带有 DeepAR 的实现(示例)。因为它是开源的,您可以免费使用它,您可以浏览代码并将其安装在任何兼容的地方。例如,您可以在 SageMaker 容器中使用 GluonTS DeepAR(博客文章)。此博客文章显示了 SageMaker 容器中的 GluonTS LSTNet 模型。如果您想要更多自由,请使用 GluonTS。但请记住,更多的自由伴随着更多的责任:您将不得不选择训练和推理硬件并编写科学和编排代码。
没有证据表明这 3 个 DeepAR 实现有任何共同点(除了来自 AWS),它们的代码库可能不同。
为了使用 DeepAR 运行超参数调整,您有几个选项:
- 在 Amazon Forecast 中:使用HyperparameterTuningJobConfig
- 在 Amazon SageMaker DeepAR 中:使用 SageMaker 模型调整,如此处所述
- 在 Amazon SageMaker 中使用 GluonTS:将 SageMaker 模型调整与自定义指标结合使用。
- 使用 SageMaker 之外的 GluonTS:在您选择的基础架构上使用您选择的超参数调整库(RayTune、Optuna ...)
推荐阅读
- jquery - 您如何指定 $('a').click 事件以仅选择特定标签,而不是所有标签?
- android - 如何从 BroadcastReceiver API 取消服务 26+
- c# - 访问 Any() 中的前一个元素?LINQ C#
- python - 如何在python中沿着二维网格移动?
- ios - 如何在 Ionic iOS 中显示来自画廊的视频
- c# - 如何使用单独的授权服务器、web api、ui 在 asp.net web 应用程序中组织通信?
- python-3.x - 如果数据至少每 6 小时存在一次数据,如何过滤时间序列?
- python - 为什么这段代码没有运行无限时间?
- python - 这段代码如何从一串整数中提取最大值和最小值?
- spam-prevention - Export Thunderbird adaptive junkmail filter data