3

我正在尝试运行 h2o.deeplearning 两次,在 2 个火车组上使用检查点参数(使用相同的参数,除了不同的时期)。我收到以下错误:

错误:'训练数据的列必须与检查点模型的列相同

即使两个集合都有相同的列。下面附上相关代码:

model <- h2o.deeplearning(x = 2:785, y = 1, training_frame = train1, 
                      activation = "RectifierWithDropout", 
                      hidden = c(1024,1024,2048),
                      epochs = 10, 
                      l1 = 1e-5, 
                      input_dropout_ratio = 0.2,
                      train_samples_per_iteration = -1, 
                      classification_stop = -1)

model2 <- h2o.deeplearning(x = 2:785, y = 1, training_frame = train2, 
                      checkpoint = model@model_id,
                      activation = "RectifierWithDropout", 
                      hidden = c(1024,1024,2048),
                      epochs = 1000, 
                      l1 = 1e-5, 
                      input_dropout_ratio = 0.2,
                      train_samples_per_iteration = -1, 
                      classification_stop = -1)


> all(colnames(train1)==colnames(train2))
[1] TRUE

> dim(train1)
[1] 54447   785
> dim(train2)
[1] 5553  785

谢谢,伊莱。

4

2 回答 2

2

这已在H2O 的 master 分支上修复。问题的根源是在train1train2数据框中有不同的列集是恒定的(全为零),因此不同的列集被自动删除。这导致算法认为在训练集和检查点模型中使用的后续训练集使用了不同的预测变量集。

有关修复的更多信息,请参阅JIRA 票证。您可以通过从源代码安装 H2O 来获取更新,或者您可以等到下一个夜间版本,在此处可用。

于 2016-01-15T04:39:11.510 回答
1

这可能是一个过于冗长的检查,它还会检查相同的列是否为非常数。尝试禁用ignore_const_cols以解决此问题。

我在这里提交了 JIRA 。

于 2016-01-03T23:57:22.670 回答