【问题标题】:how to save/load a trained model in H2o?如何在 H2o 中保存/加载经过训练的模型?
【发布时间】:2015-10-09 22:05:47
【问题描述】:

用户教程说

Navigate to Data > View All
Choose to filter by the model key
Hit Save Model
Input for path: /data/h2o-training/...
Hit Submit

问题是我没有这个菜单(H2o,3.0.0.26,网络界面)

【问题讨论】:

  • 该选项至少从 3.8 开始就存在(即 10 个月前)。 (保存模型的 Flow 版本非常有用,因为您可以在构建模型时随时保存模型的快照,但仍要留给它进行更多训练。)

标签: h2o


【解决方案1】:

不幸的是,我不熟悉 Web 界面,但我可以提供一个涉及 R 中 H2O 的解决方法。功能

h2o.saveModel(object, dir = "", name = "", filename = "", force = FALSE)

h2o.loadModel(path, conn = h2o.getConnection())

应该提供你需要的东西。我会尝试看看 H2O Flow。

更新

我也找不到显式保存模型的可能性。您可以做的是保存“流程”。你可以上传/导入文件,构建模型,然后保存/加载状态:-)

【讨论】:

  • 我之前对 R 接口有一些问题。我当然可以再试一次......我可以保存一个流程,这不是问题。但我希望能够保存一个模型。否则,如果应用程序、Java 或计算机发生任何事情,已经适合一个小时的东西会丢失.... 最糟糕的是,手册有说明如何做到这一点,但我找不到这些选项。可能文档是针对先前版本的,而新版本中发生了一些事情……我希望 H2O 的人可能会发表评论……
【解决方案2】:

我最近在 h2o 的 2.8.6 版本中构建深度学习模型时使用的一个工作示例。该模型保存在 hdfs 中。对于最新版本,您可能必须删除分类 = T 开关并且必须替换带有 training_frame 的数据

library(h2o)
h = h2o.init(ip="xx.xxx.xxx.xxx", port=54321, startH2O = F)

cTrain.h2o <- as.h2o(h,cTrain,key="c1")
cTest.h2o <- as.h2o(h,cTest,key="c2")

nh2oD<-h2o.deeplearning(x =c(1:12),y="tgt",data=cTrain.h2o,classification=F,activation="Tanh",
                        rate=0.001,rho=0.99,momentum_start=0.5,momentum_stable=0.99,input_dropout_ratio=0.2,                        
                        hidden=c(12,25,11,11),hidden_dropout_ratios=c(0.4,0.4,0.4,0.4),
                        epochs=150,variable_importances=T,seed=1234,reproducible = T,l1=1e-5,
                        key="dn")

hdfsdir<-"hdfs://xxxxxxxxxx/user/xxxxxx/xxxxx/models"

h2o.saveModel(nh2oD,hdfsdir,name="DLModel1",save_cv=T,force=T)

test=h2o.loadModel(h,path=paste0(hdfsdir,"/","DLModel1"))

【讨论】:

    【解决方案3】:

    在 H2O Flow 中查看模型时,您会看到一个“导出”按钮,这是可以对模型执行的操作

    从那里,系统将提示您在“导出模型”对话框中指定路径。指定路径并点击“导出”按钮。这会将您的模型保存到磁盘。

    我指的是 H2O 版本 3.2.0.3

    【讨论】:

    • 在流中加载怎么样?
    • 您的意思是加载保存的“.flow”文件吗?
    【解决方案4】:

    应该是你需要的:

    library(h2o)
    h2o.init()
    path = system.file("extdata", "prostate.csv", package = "h2o")
    h2o_df = h2o.importFile(path)
    h2o_df$CAPSULE = as.factor(h2o_df$CAPSULE)
    model = h2o.glm(y = "CAPSULE",
                  x = c("AGE", "RACE", "PSA", "GLEASON"),
                  training_frame = h2o_df,
                  family = "binomial")
    h2o.download_pojo(model)
    

    http://h2o-release.s3.amazonaws.com/h2o/rel-slater/5/docs-website/h2o-docs/index.html#POJO%20Quick%20Start

    【讨论】:

    • 模型的 pojo 不足以稍后重新导入到 H2O。
    • 在这种情况下,您必须以二进制格式保存模型。以便将来您可以再次加载它。但二进制格式的缺点是它依赖于版本。
    【解决方案5】:

    如何在 H2O Flow 中保存模型:

    1. 转到“列出所有型号”

    2. 在模型详情中,您会发现“导出”选项

    3. enter the model name you want to save it as
    4. import it back again

    如何保存在 h2o-py 中训练的模型:

    # say "rf" is your H2ORandomForestEstimator object. To export it
    >>> path = h2o.save_model(rf, force=True) # save_model() returns the path
    >>> path
    u'/home/user/rf'
    
    #to import it back again(as a new object)
    >>> rafo = h2o.load_model(path)
    >>> rafo   # prints model details
    Model Details
    =============
    H2ORandomForestEstimator :  Distributed Random Forest
    Model Key:  drf1
    Model Summary:
    ######Prints model details...................
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-21
      • 1970-01-01
      • 1970-01-01
      • 2020-08-06
      • 2017-07-28
      • 2018-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多