如何在 H2o 中保存/加载经过训练的模型?

Posted

技术标签:

【中文标题】如何在 H2o 中保存/加载经过训练的模型?【英文标题】:how to save/load a trained model in 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 版本非常有用,因为您可以在构建模型时随时保存模型的快照,但仍要留给它进行更多训练。) 【参考方案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 中保存模型:

    转到“列出所有型号”

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

    enter the model name you want to save it as 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...................

【讨论】:

以上是关于如何在 H2o 中保存/加载经过训练的模型?的主要内容,如果未能解决你的问题,请参考以下文章

如何保存经过训练的模型(估计器)并将其加载回来以使用 Tensorflow 中的数据对其进行测试?

R - H2O- 如何获得训练有素的模型预测/概率?

如何在 theano 中保存/序列化经过训练的模型?

在 pytorch 中为聊天机器人加载经过训练的模型保存

如何在 automl h2o python 中找到领导模型的最佳参数

如何将经过 gpu 训练的模型加载到 cpu 中?