使用 h2o.predict 和深度学习作为 R 中的模型时出错

Error while using h2o.predict with deep learning as the model in R

我正在尝试解决我在使用 h2o.predict 时遇到的错误。

问题设置如下:

#If you type class(DL.Model) then output is as follows:
[1] "H2OMultinomialModel"
     attr(,"package")
     [1] "h2o"

xTest   <- as.h2o(xTest) # xTest is data frame in R 
DL.pred <- h2o.predict(DL.Model, xTest)

ERROR: Unexpected HTTP Status code: 404 Not Found (url = http://localhost:54321/3/Predictions/models/DeepLearning_model_R_1449882914034_72/frames/file1ca3d488cb1_csv_61.hex_62)

water.exceptions.H2OKeyNotFoundArgumentException
 [1] "water.api.ModelMetricsHandler.predict(ModelMetricsHandler.java:209)"                  
 [2] "sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)"                          
 [3] "sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)"        
 [4] "sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)"
 [5] "java.lang.reflect.Method.invoke(Method.java:497)"                                     
 [6] "water.api.Handler.handle(Handler.java:64)"                                            
 [7] "water.api.RequestServer.handle(RequestServer.java:644)"                               
 [8] "water.api.RequestServer.serve(RequestServer.java:585)"                                
 [9] "water.JettyHTTPD$H2oDefaultServlet.doGeneric(JettyHTTPD.java:617)"                    
[10] "water.JettyHTTPD$H2oDefaultServlet.doPost(JettyHTTPD.java:565)"                       
[11] "javax.servlet.http.HttpServlet.service(HttpServlet.java:755)"                         
[12] "javax.servlet.http.HttpServlet.service(HttpServlet.java:848)"                         
[13] "org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:684)"               

Error in .h2o.doSafeREST(h2oRestApiVersion = h2oRestApiVersion, urlSuffix = page,  : 
  Object 'DeepLearning_model_R_1449882914034_72' not found in function: predict for argument: model

关于这里可能发生的事情的任何指示?我看到另一个 question 中存在一些相关的错误消息,但建议的解决方案也无济于事。我正在使用 H2O 版本 3.6.0.8。

如果我们按照建议查看日志 here,日志的最后七行如下所示:

065c 4861 a7b3 cea6 7505 00bd fd05 0031
0000 0000 0000 0000 0000 0000 0048 0000
0068 326f 6c6f 6773 5f32 3031 3630 3232
385f 3132 3530 3233 2f6e 6f64 6530 5f31
3237 2e30 2e30 2e31 5f35 3433 3231 2e7a
6970 504b 0506 0000 0000 0200 0200 a500
0000 4d76 0500 0000 

根据您的意见,无法找到您的模型的原因是您没有将它们正确保存到磁盘。所有H2O对象(包括模型)都存在于H2O集群的内存中,如果你想save/serialize它们到磁盘,你必须h2o.saveModel函数,而不是内置的R save函数. Rsave函数只能保存R内存中的对象。

要加载模型,请使用 h2o.loadModel