LibSVM在大型特征向量上失败(SEGFAULT)

问题描述 投票:0回答:2

我正在为使用LibSVM的Android开发NDK应用。我已经在XCode(都是C ++)中为我的Mac构建了一个等效项。

[我发现Mac可以处理我为它提供的用于训练和分类的超大特征向量,并且具有很高的速度和准确性(〜16800个特征]

在Android上(非常相似的代码),我可以成功地训练/学习150种功能,但是当我尝试全部16800种功能时,我会得到以下问题(即使在Mac上效果很好)。仅适用于分类(不过[svm_predict。训练始终有效。

您可以看到它在LibSVM使用的“点”功能上失败

0-16 23:28:41.084 30997-31028/? A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0xaf000000 in tid 31028 (GLThread 17147)
10-16 23:28:41.190 27393-27393/? I/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
10-16 23:28:41.191 27393-27393/? I/DEBUG: Build fingerprint: 'google/hammerhead/hammerhead:5.1.1/LMY48M/2167285:user/release-keys'
10-16 23:28:41.191 27393-27393/? I/DEBUG: Revision: '11'
10-16 23:28:41.191 27393-27393/? I/DEBUG: ABI: 'arm'
10-16 23:28:41.191 27393-27393/? I/DEBUG: pid: 30997, tid: 31028, name: GLThread 17147  >>> cc.openframeworks.androidEmptyExample <<<
10-16 23:28:41.191 27393-27393/? I/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xaf000000
10-16 23:28:41.202 27393-27393/? I/DEBUG:     r0 aef3e000  r1 aef5ed10  r2 00000001  r3 af000000
10-16 23:28:41.202 27393-27393/? I/DEBUG:     r4 aec29eb8  r5 00000001  r6 b4b2c608  r7 12d090c0
10-16 23:28:41.202 27393-27393/? I/DEBUG:     r8 12d15660  r9 b4a39400  sl 00000000  fp af37d824
10-16 23:28:41.202 27393-27393/? I/DEBUG:     ip b6e417dc  sp af37d810  lr a301ff78  pc a301ff04  cpsr 000f0010
10-16 23:28:41.202 27393-27393/? I/DEBUG:     #00 pc 00167f04  /data/app/cc.openframeworks.androidEmptyExample-1/lib/arm/libOFAndroidApp.so (Kernel::dot(svm_node const*, svm_node const*)+192)

关于这里发生的事情有什么想法吗?

我正在使用以下参数:

  mSvm.setSvmType(C_SVC);
  mSvm.setKernelType(LINEAR);
  mSvm.setCost(1);
  mSvm.setGamma(1/16800);
  mSvm.setCoef0(0);
  mSvm.setCachesize(40);
  mSvm.setEpsilon(0.001);
  mSvm.setShrinking(false);

  mSvm.setDegree(1);
  mSvm.setNu(0.5);
libsvm c++
2个回答
1
投票

10-16 23:28:41.202 27393-27393 /? I / DEBUG:#00 pc 00167f04 /data/app/cc.openframeworks.androidEmptyExample-1/lib/arm/libOFAndroidApp.so(内核:: dot(svm_node const *,svm_node const *)+ 192)

此例程经常被大量用户疯狂地测试,因此我怀疑其中存在错误。

您是否100%确定指针是有效的?您是否有可能在Mac版本上碰巧遇到未定义的行为而感到幸运?我的意思是,您提供的指针是否有可能在所有平台上始终无效,但恰好在Mac版本上仍然有效?当您在多个平台上工作时,这种错误会给人以正常工作的错觉。


0
投票
确定对您来说有点晚,但希望它将对将来的libsvm用户有所帮助:)
© www.soinside.com 2019 - 2024. All rights reserved.