Ошибка при использовании h2o.predict с глубоким обучением в качестве модели в 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

Любые указатели на то, что может происходить здесь? Я вижу, что существует несколько связанное сообщение об ошибке в другом вопросе, но предложенный решение тоже не помогает. Я использую H2O версии 3.6.0.8.

Если мы посмотрим на журналы, как предложено здесь, последние семь строк Лог показан ниже:

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 

person skaur    schedule 28.02.2016    source источник
comment
Обучали ли вы эту модель в текущем сеансе R? Или он был сохранен и перезагружен с помощью h2o.saveModel и h2o.loadModel? Похоже, H2O не может найти модель DL.   -  person Erin LeDell    schedule 29.02.2016
comment
Вот MWE: у меня есть несколько моделей глубокого обучения h2o (скажем, DL.Model1, DL.Model2, DL.Model3 ради аргумента), и они доступны в списке allModels следующим образом: allModels[[1]] ‹- DL .Model1, allModels[[2]] ‹- DL.Model2, allModels[[3]] ‹- DL.Model3. Поскольку allModels — это список, я сохраняю его как объект R с помощью команды save. Чтобы получить доступ к моделям позже, я загружаю файл allModels.RData в сеансе R: в качестве проверки работоспособности после загрузки allModels.RData я проверяю class(allModels[[1]]), вывод которого — H2OMultinomialModel, attr( ,пакет), h2o   -  person skaur    schedule 01.03.2016


Ответы (1)


Судя по вашим комментариям, причина того, что ваши модели не могут быть найдены, заключается в том, что вы неправильно сохранили их на диск. Все объекты H2O (включая модели) существуют в памяти в кластере H2O, и если вы хотите сохранить/сериализовать их на диск, вы должны использовать функцию h2o.saveModel, а не встроенную функцию R save. Функция R save может сохранять объекты только в памяти R.

Чтобы загрузить модели, используйте h2o.loadModel.

person Erin LeDell    schedule 01.03.2016
comment
После выполнения h2o.saveModel и h2o.loadModel я столкнулся с другой проблемой, о которой я сообщил здесь - person skaur; 02.03.2016