我有训练、验证和测试数据框。由于这些数据框很大,我不能在这里分享。
我想从包 h2o 中调整深度学习程序的参数。
代码主体如下:
train<-df2_input
valid<-df3_input
test<-df4_input
response<-"realized1"
features<-setdiff(colnames(train),"realized1")
h2o.init()
train.h2o <- as.h2o(train)
valid.h2o <- as.h2o(valid)
test.h2o <- as.h2o(test)
activation_opt <- c("Rectifier","RectifierWithDropout", "Maxout","MaxoutWithDropout")
hidden_opt <- list(c(10,10),c(20,15),c(50,50,50))
l1_opt <- c(0,1e-3,1e-5)
l2_opt <- c(0,1e-3,1e-5)
hyper_params <- list( activation=activation_opt,
hidden=hidden_opt,
l1=l1_opt,
l2=l2_opt )
#set search criteria
search_criteria <- list(strategy = "RandomDiscrete", max_models=10)
#train model
dl_grid <- h2o.grid("deeplearning"
,grid_id = "deep_learn"
,hyper_params = hyper_params
,search_criteria = search_criteria
,training_frame = train.h2o
,validation_frame = valid.h2o
,x=features
,y=response
,epochs = 100)
但是,我收到以下错误:
ERROR: Unexpected HTTP Status code: 412 Precondition Failed (url = http://localhost:54321/99/Grid/deeplearning)
water.exceptions.H2OIllegalArgumentException
[1] "water.exceptions.H2OIllegalArgumentException: Illegal argument: training_frame of function: grid: Cannot append new models to a grid with different training input"
[2] " hex.grid.GridSearch.loadFromDKV(GridSearch.java:171)"
[3] " hex.grid.GridSearch.getOrCreateGrid(GridSearch.java:153)"
[4] " hex.grid.GridSearch.start(GridSearch.java:104)"
[5] " hex.grid.GridSearch.startGridSearch(GridSearch.java:769)"
[6] " hex.grid.GridSearch.startGridSearch(GridSearch.java:648)"
[7] " water.api.GridSearchHandler.trainGrid(GridSearchHandler.java:137)"
[8] " water.api.GridSearchHandler.handle(GridSearchHandler.java:53)"
[9] " water.api.GridSearchHandler.handle(GridSearchHandler.java:39)"
[10] " water.api.RequestServer.serve(RequestServer.java:470)"
[11] " water.api.RequestServer.doGeneric(RequestServer.java:301)"
[12] " water.api.RequestServer.doPost(RequestServer.java:227)"
[13] " javax.servlet.http.HttpServlet.service(HttpServlet.java:707)"
[14] " javax.servlet.http.HttpServlet.service(HttpServlet.java:790)"
[15] " org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:865)"
[16] " org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:535)"
[17] " org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)"
[18] " org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1317)"
[19] " org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)"
[20] " org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:473)"
[21] " org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)"
[22] " org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1219)"
[23] " org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)"
[24] " org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)"
[25] " org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)"
[26] " water.webserver.jetty9.Jetty9ServerAdapter$LoginHandler.handle(Jetty9ServerAdapter.java:130)"
[27] " org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:126)"
[28] " org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)"
[29] " org.eclipse.jetty.server.Server.handle(Server.java:531)"
[30] " org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:352)"
[31] " org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260)"
[32] " org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281)"
[33] " org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102)"
[34] " org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118)"
[35] " org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)"
[36] " org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)"
[37] " org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)"
[38] " org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)"
[39] " org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)"
[40] " org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:762)"
[41] " org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:680)"
[42] " java.lang.Thread.run(Unknown Source)"
Error in .h2o.doSafeREST(h2oRestApiVersion = h2oRestApiVersion, urlSuffix = page, :
ERROR MESSAGE:
Illegal argument: training_frame of function: grid: Cannot append new models to a grid with different training input
我发现了类似错误的以下主题probaby解决方案:
但是,我无法解决该主题的问题。