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

时间:2016-02-28 08:35:31

标签: r runtime-error prediction deep-learning h2o

我正在尝试使用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 

1 个答案:

答案 0 :(得分:3)

根据您的评论,无法找到您的模型的原因是您没有正确地将它们保存到磁盘。所有H2O对象(包括模型)都存在于H2O集群的内存中,如果要将它们保存/序列化为磁盘,则必须使用h2o.saveModel函数,而不是内置的R save函数。 R save函数只能保存R内存中的对象。

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