【问题标题】:Error while using h2o.predict with deep learning as the model in R使用带有深度学习的 h2o.predict 作为 R 中的模型时出错
【发布时间】:2023-03-10 23:23:02
【问题描述】:

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

【问题讨论】:

  • 你在当前的 R 会话中训练了这个模型吗?还是使用h2o.saveModelh2o.loadModel 保存并重新加载?看起来 H2O 找不到 DL 模型。
  • 这是一个 MWE:我有多个 h2o 深度学习模型(例如 DL.Model1、DL.Model2、DL.Model3 以供争论),它们在“allModels”列表中可用,如下所示: allModels[[1]]

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


【解决方案1】:

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

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

【讨论】:

  • 在我执行 h2o.saveModel 和 h2o.loadModel 之后,我遇到了另一个问题,我已经报告了 here
猜你喜欢
  • 2020-11-10
  • 1970-01-01
  • 1970-01-01
  • 2021-02-13
  • 1970-01-01
  • 2023-03-29
  • 2019-12-10
  • 2021-07-02
  • 2018-10-27
相关资源
最近更新 更多