libsvm的版本引出的问题

最近在matlab下运行关于svm的一些程序,而选用的libsvm包来使用。


1. 错误一 mexa64与mexw64

刚开始运行时,没怎么注意文件夹下的svm的mex文件,运行则报错。根据错误提示位置,点击进入了一个svmtrain文件,发现居然是matlab自带svm程序,居然没有调用文件夹下的mex文件。


跑去看mex文件,发现其后缀是mexa64,

svmtrain.mexa64

svmpredict.mexa64

后缀mexa64的mex文件是供64位Linux下的matlab调用的,而64位window应该是使用后缀mexw64的mex文件。

因为我是在64位window服务器上运行,故在工作文件夹下找不到对应的mex文件,而跑去找matlab的相应函数,结果参数又对不上,故提示错误位置为matlab下的相应文件。


2. 错误二 历史版本与最新版本

因为工作目录下没有mexw64的文件,我便从自己电脑上copy了两个文件到工作目录下,而自己电脑上的libsvm是刚装不久,下载的最新版本。

svmtrain.mexw64

svmpredict.mexw64

用最新版本成功运行程序成功,但最后的结果与原来的结果有很小差别,突然想到有可能是libsvm版本差异,因而又在其他服器上找到了当时使用的libsvm(2009年的。。。),训练预测也成功运行。

后来,为了验证一个修改后的程序,便直接使用训练好的模型进行预测,但提示

Error: can't read model: number of return field is not correct

单步调试跟踪,发现svmpredict函数参数都是正确的,但总是没有返回值,很是纳闷。怀疑可能是修改后的程序存在bug,换原来的程序结果还是提示同样错误。。。

跑去看训练好的model,突然反应过来,这模型是先使用最新版本的svm训练的,而预测时换成了2009年的svm,老版本不能兼容新版本的model格式,故不能读取model。


主要还是粗心,以后得注意程序包的版本兼容问题。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值