Frequently Asked Questions

  • I am puzzled, Shogun interfaces to so many languages. But, which language and Shogun interface should I use? 

That depends a lot on your taste. I personally consider the modular interfaces (python_modular, octave_modular) to be "best". Here best means very flexible and easily extensible. However, in case you just want to train a single SVM with a single or multiple kernels all of the static interfaces are sufficient. And well, of course you should be using python :-)

  • I've found a bug, where should I report it? 

Either report it in our bug tracker or ask on the mailinglist.

  • Do I need CPLEX to use multiple kernel learning?

No, as of version 0.7.0 you won't need CPLEX if you want to learn the weights in front of the kernels. However, to enable Multiple Kernel Learning with CPLEX(TM) just make sure CPLEX can be found in the PATH. Note that for standard 1-norm multiple kernel learning (MKL) the GNU Linear Programming Kit (GLPK) version at least 4.29 or CPLEX is required. For general p-norm MKL with p>1 it will work nonetheless.

  • Is it multiple kernel learning when I use many kernels?

No, a plain combination of features/kernels will remain a plain concatenation. Only in case you learn the kernel weights you really do MKL. In the static interfaces you can issue:


and check whether all weights W are still 1.0.

  • Does shogun compile under windows?

Yes! With cygwin 1.7.1 the cmdline, python, python_modular and octave compile cleanly. However, octave_modular won't work since the swig version in cygwin is outdated - if you want that interface you need to compile swig manually. In addition neither R and Matlab interfaces do currently compile: cygwin does not yet include up-to-date mingw packages. As none one of us use windows, and things (in external dependencies) break frequently, feel free to submit patches to cygwin. Ohh, and one hint! To choose the installation directory use:

make DESTDIR= install
  • How does shogun do its memory management?

As does python, we use reference counting internally, i.e. objects holding a reference to another object should increase the reference count of the object they are referencing and decrease the counter when they finished using the object. It should be noted that loops (e.g., object A holding a reference to object B and vice versa) are not detecting and may thus create memory leaks. However, this scenario can so far be easily avoided - just don't create a combined kernel that contains itself as a subkernel ;-)

  • It is driving me nuts to use Shogun from Matlab, how do I get rid of the error
    Invalid MEX-file '<path to shogun directory>/src/interfaces/matlab_static/sg.mexa64':
    $MATLAB_DIR/r2012a/bin/glnxa64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /usr/local/lib/libshogun.so.14)

The reason for this error is a mismatch between the libstdc++ Matlab ships and the one in your system. Please note that the version of Matlab shown above (r2012a), as well as the system where it is installed (glnxa64, which means linux 64 bits) might differ for you; however this workaround may still help you. We will refer to the version of Matlab and the OS and architecture with MATLAB_VERSION and ARCH below.

Make a backup of the files libstdc++* in MATLAB_DIR/MATLAB_VERSION/bin/ARCH and in MATLAB_DIR/MATLAB_VERSION/sys/os/ARCH. Then, copy or symbolic link the libstdc++ files in /usr/lib/libstdc++* to the two Matlab directories above. You need to restart Matlab after this. Also, it might be necessary to re-compile Shogun against matlab_static and to fix other library dependencies in a similar way in case Matlab keeps on complaining with a similar error.

What's New

Feb. 9, 2016 -> SHOGUN 4.1.0
Jan. 26, 2015 -> SHOGUN 4.0.0
Feb. 17, 2014 -> SHOGUN 3.2.0
Jan. 6, 2014 -> SHOGUN 3.1.1
Jan. 5, 2014 -> SHOGUN 3.1.0
Oct. 28, 2013 -> SHOGUN 3.0.0
March 17, 2013 -> SHOGUN 2.1.0