【问题标题】:h2o.grid in R - Accessing processing time for each iterationR中的h2o.grid - 访问每次迭代的处理时间
【发布时间】:2018-02-17 14:53:02
【问题描述】:

有没有办法提取网格搜索的每次迭代所需的时间/内存?我希望绘制一个结果指标(例如 AUC)与处理要求,以检查增加模型复杂性的成本效益。

【问题讨论】:

  • 1. 没有理由说一次迭代与任何其他迭代具有相同的要求。他们几乎永远不会,因为每次迭代都有一组不同的超参数,比如树的数量、学习率等。2. 不,在做之前你无法知道。你只能记录你做了多长时间。

标签: r h2o grid-search


【解决方案1】:

我假设“网格搜索的每次迭代”是指网格搜索中的每个模型。所以你问如何在网格搜索中找到模型训练时间。如果是这样,这里是如何做到这一点。

H2O 将模型开始时间存储在模型中(自 unix 纪元时间以来的毫秒数)。您可以使用它来确定模型之间的时间——这可以用来推断任何模型的训练时间(最后一个模型除外)。

在 R 中,模型开始时间存储在 my_model@model$start_time。 下面是一个使用 iris 数据集和 GBM 网格的示例:

library(h2o)
h2o.init()

# Load iris dataset 
data("iris")
train <- as.h2o(iris)


# GBM hyperparamters 
gbm_params <- list(learn_rate = seq(0.01, 0.1, 0.01),
                    max_depth = seq(2, 10, 1),
                    sample_rate = seq(0.5, 1.0, 0.1),
                    col_sample_rate = seq(0.1, 1.0, 0.1)) 
search_criteria <- list(strategy = "RandomDiscrete", max_models = 5)

# Train and cross-validate a grid of GBMs 
gbm_grid <- h2o.grid("gbm", x = 1:4, y = 5,
                      training_frame = train,
                      nfolds = 3,
                      ntrees = 100,
                      seed = 1,
                      hyper_params = gbm_params,
                      search_criteria = search_criteria)

# Model Start times (milliseconds since unix epoch) 
start_times <- sort(sapply(gbm_grid@model_ids, function(m) h2o.getModel(m)@model$start_time))

# Model training times (milliseconds) 
train_time_ms <- start_times[2:length(start_times)] - start_times[1:(length(start_times)-1)] 
print(train_time_ms)
# 758 662 532 469

【讨论】:

  • 这正是我要找的,艾琳;我为糟糕的词选择道歉。谢谢!
  • 如果您觉得我的回答有用,可以给它一个赞吗?
  • 我有。但由于我对 StackOverflow 很陌生(rep.
  • 不用担心。欢迎来到堆栈溢出! :-)
猜你喜欢
  • 2016-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-05
  • 1970-01-01
  • 2022-01-10
  • 1970-01-01
  • 2016-12-15
相关资源
最近更新 更多