Matlab 在 RegressionTree mex 文件中崩溃

标签 matlab debugging machine-learning regression mex

我正在尝试在 matlab 上实现一个分类器,该分类器使用回归树作为其过程的一部分。 现在我在回归树的 mex 文件中遇到异常。

这是故障转储的一部分

------------------------------------------------------------------------
       Segmentation violation detected at Tue Jun  4 11:49:48 2013
------------------------------------------------------------------------

Configuration:
  Crash Decoding     : Disabled
  Current Visual     : 0x21 (class 4, depth 24)
  Default Encoding   : UTF-8
  GNU C Library      : 2.13 stable
  MATLAB Architecture: glnxa64
  MATLAB Root        : /usr/local/MATLAB/R2013a
  MATLAB Version     : 8.1.0.604 (R2013a)
  Operating System   : Linux 3.0.0-31-generic #49-Ubuntu SMP Tue Feb 19 20:02:57 UTC 2013 x86_64
  Processor ID       : x86 Family 6 Model 42 Stepping 7, GenuineIntel
  Virtual Machine    : Java 1.6.0_17-b04 with Sun Microsystems Inc. Java HotSpot(TM) 64-Bit Server VM mixed mode
  Window System      : The X.Org Foundation (11004000), display :0

Fault Count: 1


Abnormal termination:
Segmentation violation

Register State (from fault):
  RAX = 000000000a673ad8  RBX = 0000000008c85de8
  RCX = 0000000000000000  RDX = 00000000000002a5
  RSP = 00007f5fa88ba8e0  RBP = 00007f5fa88ba910
  RSI = 0000000008c85de8  RDI = 0000000008c825a0

   R8 = 0000000008c825a0   R9 = 0000000000003870
  R10 = 0000000000003001  R11 = ffefffffffffffff
  R12 = 0000000008c83ac0  R13 = 0000000008c83ac8
  R14 = 00007f5fa88ba930  R15 = 0000000000000119

  RIP = 00007f5f7a06e9fd  EFL = 0000000000010246

   CS = 0033   FS = 0000   GS = 0000

Stack Trace (from fault):
[  0] 0x00007f5f7a06e9fd /usr/local/MATLAB/R2013a/toolbox/stats/classreg/+classreg/+learning/+treeutils/growTree.mexa64+00088573 _ZSt9__find_ifIN9__gnu_cxx17__normal_iteratorIPmSt6vectorImSaImEEEEN12classregtree12IndexedIsNaNIdEEET_SA_SA_T0_St26random_access_iterator_tag+00000077
[  1] 0x00007f5f7a06eb29 /usr/local/MATLAB/R2013a/toolbox/stats/classreg/+classreg/+learning/+treeutils/growTree.mexa64+00088873 _ZSt9remove_ifIN9__gnu_cxx17__normal_iteratorIPmSt6vectorImSaImEEEEN12classregtree12IndexedIsNaNIdEEET_SA_SA_T0_+00000041
[  2] 0x00007f5f7a085f20 /usr/local/MATLAB/R2013a/toolbox/stats/classreg/+classreg/+learning/+treeutils/growTree.mexa64+00184096
[  3] 0x00007f5f7a0cf25b /usr/local/MATLAB/R2013a/toolbox/stats/classreg/+classreg/+learning/+treeutils/growTree.mexa64+00483931
[  4] 0x00007f5f7a0d0580 /usr/local/MATLAB/R2013a/toolbox/stats/classreg/+classreg/+learning/+treeutils/growTree.mexa64+00488832
[  5] 0x00007f5f7a0eb2c6 /usr/local/MATLAB/R2013a/toolbox/stats/classreg/+classreg/+learning/+treeutils/growTree.mexa64+00598726
[  6] 0x00007f5f7a0698a3 /usr/local/MATLAB/R2013a/toolbox/stats/classreg/+classreg/+learning/+treeutils/growTree.mexa64+00067747 mexFunction+00001939
[  7] 0x00007f5fb2a1bf8a     /usr/local/MATLAB/R2013a/bin/glnxa64/libmex.so+00110474 mexRunMexFile+00000090
[  8] 0x00007f5fb2a180f9     /usr/local/MATLAB/R2013a/bin/glnxa64/libmex.so+00094457
[  9] 0x00007f5fb2a18f1c     /usr/local/MATLAB/R2013a/bin/glnxa64/libmex.so+00098076
[ 10] 0x00007f5fbc2ac6b2 /usr/local/MATLAB/R2013a/bin/glnxa64/libmwm_dispatcher.so+00562866 _ZN8Mfh_file11dispatch_fhEiPP11mxArray_tagiS2_+00000594
[ 11] 0x00007f5fb2ff453a  /usr/local/MATLAB/R2013a/bin/glnxa64/libmwmcos.so+01672506
[ 12] 0x00007f5fb2f9513a  /usr/local/MATLAB/R2013a/bin/glnxa64/libmwmcos.so+01282362
[ 13] 0x00007f5fb2f953be  /usr/local/MATLAB/R2013a/bin/glnxa64/libmwmcos.so+01283006
[ 14] 0x00007f5fb2f9712c  /usr/local/MATLAB/R2013a/bin/glnxa64/libmwmcos.so+01290540
[ 15] 0x00007f5fb3002246  /usr/local/MATLAB/R2013a/bin/glnxa64/libmwmcos.so+01729094
[ 16] 0x00007f5fb3081cd8  /usr/local/MATLAB/R2013a/bin/glnxa64/libmwmcos.so+02251992
[ 17] 0x00007f5fbc25eaf8 /usr/local/MATLAB/R2013a/bin/glnxa64/libmwm_dispatcher.so+00244472 _ZN13Mfh_MATLAB_fn11dispatch_fhEiPP11mxArray_tagiS2_+00000488
[ 18] 0x00007f5fbbb4a256 /usr/local/MATLAB/R2013a/bin/glnxa64/libmwm_interpreter.so+02245206
[ 19] 0x00007f5fbbafaa86 /usr/local/MATLAB/R2013a/bin/glnxa64/libmwm_interpreter.so+01919622
...
...

完整的故障转储 http://snipt.org/AlK6

现在我如何知道我对回归树的输入是否导致了错误或者与我的硬件有关? 有没有办法知道错误的原因?

<小时/>

更新

这里是导致异常的行(回归树行是主要原因)

for j = 1:J
    save('data');
    gj = RegressionTree.fit(trainData, Y_CODE(:, j), 'Weights', wts);
    g{j} = gj;
end

此代码片段是循环的一部分(实际上我正在尝试实现 GAMBLE 算法,如果您知道现有的实现那就太好了),并且 matlab 每次在不同的迭代中都会崩溃..

我尝试保存工作区save('data')并在重新启动matlab后重新执行回归树线,但它没有崩溃..这很奇怪。 我已向 MathWorks 发送了一份崩溃报告。

同时是否有支持权重的回归树的 matlab 实现?或者更好的 GAMBLE 的实现提升算法?

谢谢

最佳答案

只要您运行的系统符合已发布的 MATLAB system requirements ,任何 MathWorks 代码都不应该真正给您带来这样的分段违规 - 无论您传递给它的输入是什么。即使您传递的是完全无意义的内容,它也应该因 MATLAB 错误而优雅地停止,而不是像这样的硬错误。

如果您可以重现该行为(在新启动的 MATLAB 中,没有任何其他运行,每次都使用相同的输入),请联系 MathWorks 支持人员以了解您的系统的某个方面是否不受支持,或者报告错误。

关于Matlab 在 RegressionTree mex 文件中崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16915017/

相关文章:

R相当于MATLAB的过滤函数

algorithm - 切割信号(相互关联)并计算这些部分

java - 在 IntelliJ 中调试 Java 程序时,如何显示正在执行的字节码?

c# - 无法理解ID3算法

matlab - 在 matlab 中创建较小的标题大小

matlab - 如何使用Matlab的bsxfun求解累加和

python - 升级到 PyCharm 2016.2 后调试器中出现 BlockingSwitchOutError

c++ - 使用 LLDB 检查 VSCode 中的 C++ std::set

matlab - 通过PCA降维后无法生成原始数据

command-line - 在命令行上导出 weka 结果