如何将 libsvm 模型加载到 Android
How to load libsvm model into Android
我已经从在 MATLAB 中训练的模型生成了一个模型文件,我想将其从移动设备加载到 Android。
前三个 SV 和参数(应该是正确的)的模型文件如下所示:
svm_type 0
kernel_type 2
gamma 3.3636
coef0 0
nr_class 2
total_sv 1106
rho -0.7401
label 0 1
nr_sv 754 352
SV
0 1:8.02710 2:8.90538 3:9.56450 4:10.15383
0 1:7.87334 2:8.71629 3:9.41049 4:9.45693
0 1:8.52795 2:9.19652 3:10.17247 4:10.30913 ...
但是,当我使用 svm.svm_load_model() 加载它时,生成的模型为空:
FileReader fIn = new FileReader("mymodel.txt");
BufferedReader bufferedReader = new BufferedReader(fIn);
svm_model model = svm.svm_load_model(bufferedReader);
我好像找不到问题,有人得到答案了吗?
感谢
编辑: 我知道错误是什么了。 MATLAB 输出的模型文件显然与 Android load_model 函数不完全兼容,因为键 svm_type 和 kernel_type 的值必须指定为字符串而不是数字(c_svc 而不是 0,rbf 而不是 2)。
你可以做到,因为 libsvm 是用 C/C++ 编写的。因此,您可以使用包装器(由 JNI 或其他接口)访问 "C-based libsvm library" in Android
例如,您可以使用这个包装器:https://github.com/yctung/AndroidLibSvm
加载程序后。去编辑 "AndroidLibSvm/app/src/main/jni/jnilibsvm.cpp" 文件。
在此文件中,您可以通过
加载模型文件
model=svm_load_model(modelFile);
您还可以根据需要访问其他 libsvm 函数
编辑:我知道错误是什么了。 MATLAB 的模型文件输出显然与 Android load_model 函数不完全兼容,因为键 svm_type 和 kernel_type 的值必须指定为字符串而不是数字(c_svc 而不是 0,rbf 而不是 2)。
我已经从在 MATLAB 中训练的模型生成了一个模型文件,我想将其从移动设备加载到 Android。
前三个 SV 和参数(应该是正确的)的模型文件如下所示:
svm_type 0
kernel_type 2
gamma 3.3636
coef0 0
nr_class 2
total_sv 1106
rho -0.7401
label 0 1
nr_sv 754 352
SV
0 1:8.02710 2:8.90538 3:9.56450 4:10.15383
0 1:7.87334 2:8.71629 3:9.41049 4:9.45693
0 1:8.52795 2:9.19652 3:10.17247 4:10.30913 ...
但是,当我使用 svm.svm_load_model() 加载它时,生成的模型为空:
FileReader fIn = new FileReader("mymodel.txt");
BufferedReader bufferedReader = new BufferedReader(fIn);
svm_model model = svm.svm_load_model(bufferedReader);
我好像找不到问题,有人得到答案了吗?
感谢
编辑: 我知道错误是什么了。 MATLAB 输出的模型文件显然与 Android load_model 函数不完全兼容,因为键 svm_type 和 kernel_type 的值必须指定为字符串而不是数字(c_svc 而不是 0,rbf 而不是 2)。
你可以做到,因为 libsvm 是用 C/C++ 编写的。因此,您可以使用包装器(由 JNI 或其他接口)访问 "C-based libsvm library" in Android
例如,您可以使用这个包装器:https://github.com/yctung/AndroidLibSvm
加载程序后。去编辑 "AndroidLibSvm/app/src/main/jni/jnilibsvm.cpp" 文件。 在此文件中,您可以通过
加载模型文件model=svm_load_model(modelFile);
您还可以根据需要访问其他 libsvm 函数
编辑:我知道错误是什么了。 MATLAB 的模型文件输出显然与 Android load_model 函数不完全兼容,因为键 svm_type 和 kernel_type 的值必须指定为字符串而不是数字(c_svc 而不是 0,rbf 而不是 2)。