如何在 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 中的数据对其进行测试?