gpt4 book ai didi

java - XGBoost with Java - 加载先前保存为字节数组 [] 的助推器时出现问题

转载 作者:行者123 更新时间:2023-12-01 16:38:33 25 4
gpt4 key购买 nike

我正在尝试将助推器对象保存/加载到数据库中,因此我不是将其保存到 HDD 中的文件中,而是将其保存/加载为 byte[]。但现在,忘记数据库,因为我只想将助推器转换为 byte[],然后从 byte[] 检索助推器。

为了保存,我有一个助推器列表:

List<Booster> boosters = <Initialised somewhere else>;

for (Booster booster : model.getBoosters()) {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(bos);
booster.saveModel(out);
out.close();
boostersAsByte.add(bos.toByteArray());
}

return boostersAsbyte;

然后我尝试从保存的字节[]中检索这些助推器:

List<Booster> boosters = new ArrayList<>();

for (byte[] boosterAsByte : boostersAsbyte) {
boosters.add(XGBoost.loadModel(new ByteArrayInputStream(boosterAsByte)));
}

return new boosters;

我遇到了这个恼人的错误:

ml.dmlc.xgboost4j.java.XGBoostError: [10:21:35] /xgboost/src/gbm/gbm.cc:20: Unknown gbm type

我尝试过从硬盘中的文件保存/恢复助推器并且它有效;但对于我的特定解决方案,我需要使用 byte[] 执行操作以将这些字节保存到数据库中。

任何帮助将不胜感激。谢谢!

最佳答案

感谢您的帮助。看来 ObjectInputStream 需要一个 InputStream 而不是 byte[] 来初始化;但你给了我正确的提示:我不需要使用 ObjectOutputStream 并且初始循环是:

for (Booster booster : model.getBoosters()) {
try (ByteArrayOutputStream bos = new ByteArrayOutputStream()) {
booster.saveModel(bos);
boostersAsByte.add(bos.toByteArray());
}
}

这样一切正常:-)

关于java - XGBoost with Java - 加载先前保存为字节数组 [] 的助推器时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61909663/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com