h2o deeplearning检查点

时间:2015-12-31 15:34:22

标签: machine-learning neural-network deep-learning h2o checkpointing

我尝试使用checkpoint参数运行两次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

谢谢, 利。

2 个答案:

答案 0 :(得分:2)

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

有关此修复程序的详细信息,请参阅the JIRA ticket。您可以通过从源安装H2O来获取更新,也可以等到下一个每晚发布,here

答案 1 :(得分:1)

这可能是一个过于冗长的检查,也检查相同的列是非常量的。尝试停用var currentAuthData = this.ref.getAuth();以解决此问题。

我提交了一份JIRA here