在 svm-predict 命令中使用字符串流而不是文件流
Posted
技术标签:
【中文标题】在 svm-predict 命令中使用字符串流而不是文件流【英文标题】:Use string streams instead of file streams in svm-predict command 【发布时间】:2012-02-28 16:14:53 【问题描述】:出于性能目的,我想使用内存中的字符串流而不是文件流从磁盘中读取文件。 svm-predict 的参数是:./svm-predict test_file model_file output_file。这是我的代码(使用 libsvm):
其中,poseData 是包含与工作平面文件版本相同的输入 svm 值的字符串流。
char temp[5120000];
char temp2[512];
sprintf(temp2, "./svm-predict %s %s %s", (FILE *)poseData, "tmp_train.model", (FILE*)temp );
// sprintf(temp2, "./svm-predict %s%i%s %s %s%i%s", "./Test_Files/", pos,".jpg.txt","tmp_train.model", "./Output/",pos,".jpg.output");
注释掉的 sprintf 版本可以工作,但由于硬盘访问而运行缓慢。 sprintf 的poseData 看起来也和平面文件一模一样,但我无法将其转换为一个...
【问题讨论】:
【参考方案1】:svm-predict 为数据和模型获取文件系统位置(这就是您第一次尝试有效的原因)。您不能将内存指针传递给外部程序。
您需要使用libsvm
库,或者OpenCV 有CvSVM,您可以尝试在内部使用它来提高性能。 Here 是一些关于在 OpenCV 中使用 SVM 的教程。 OpenCV 的 SVM 实现基于 LibSVM,所以这可能是我会使用的,因为无论如何您已经在使用 OpenCV。
【讨论】:
哦,我忘了说.. 我需要比较 svm 使用 cuda 和 cpu 的性能。我打算使用 libsvm vs cusvm以上是关于在 svm-predict 命令中使用字符串流而不是文件流的主要内容,如果未能解决你的问题,请参考以下文章
为 AWS C# S3 SDK 使用内存流而不是文件流而不将完整文件写入 S3
云运行是不是支持 http/2 流而不支持 http1.1 流?