我正在用Java做一个机器学习项目,它将涉及一个非常大的模型(对于那些熟悉支持向量机的人来说,是支持向量机的输出),需要相当频繁地检索以供最终用户使用。该模型的大部分由相当小的对象组成的大型二维数组组成。
不幸的是,我不知道模型会有多大(到目前为止,我一直在处理基准数据,我实际上要使用的数据还没有准备好),我也不知道它将在其上运行的机器的规格,因为这也是悬而未决的。
我已经有了一个将模型作为字符串写入文件的方法,但是写入过程花费了大量时间,读取过程占用了一分钟的大部分时间。我想减少这方面的时间,所以我有一个聪明的或者令人费解的想法,就是以这样一种方式将模型写入.java文件,以便它可以被编译,然后运行以生成一个完全形成的模型。
我的问题是,假设模型的大小约为1MB,在Java中存储和编译模型会比从文件中读取模型快得多吗?是不是有什么原因我还没有意识到,这可能是一个非常愚蠢的想法,我在任何情况下都不应该去追求?
谢谢你能给我的任何想法。
编辑:显然,试图将几千个值自动写入代码会使一个方法比编译器所能处理的大两个数量级。啊,好吧,生活和学习。
发布于 2012-06-28 22:16:30
在
中存储和编译模型会比从文件中读取模型快得多吗?
这取决于您设计自定义数据结构以包含模型的方式。
发布于 2012-06-28 21:57:20
您可以考虑为数据创建一种紧凑的二进制格式,而不是写入字符串或java文件。
发布于 2012-06-28 22:10:25
问题是读取文件是否因为IO或计算时间(=> CPU)而花费很长时间。如果是后者,那就倒霉吧。如果您的IO (例如硬盘)是原因,那么您可以压缩文件并在读取后/同时解压缩它。在Java中(当然)有ZIP支持(即使是对Streams)。
https://stackoverflow.com/questions/11246219
复制相似问题