Hi Nacho,

this seems like a bug. Could you put the snippet on github issues? I will
try to look at it there.

H



2015-12-01 19:51 GMT+00:00 nacho arroyo <[email protected]>:

> Hi all,
>
> Some days ago I was trying to train a MKL object by using sparse features.
> Different issues have occurred. This time, I saved and loaded a sparse
> matrix containing dummy data for training a MKLRegression object.
>
> I could create Sparse feature objects successfully. However, when I call
> train() method of the MKLRegression object an error is given. See the
> code snippet below for the CauchyKernel():
>
> In [2]: from modshogun import *
> In [3]: from scipy.io import mmread
> In [4]: from tools.load import LoadMatrix
> In [5]: sci_train_data_x =
> mmread('sparse_train.mtx').asformat('csr').astype('float64')
> In [6]: feats_train = SparseRealFeatures(sci_train_data_x)
> In [8]: lm = LoadMatrix()
> In [9]: labels_tr =
> RegressionLabels(lm.load_labels('labelSparse_train.mtx'))
> In [10]: k0 = PolyKernel(10,3)
> In [11]: dist = SparseEuclideanDistance(feats_train,feats_train)
> In [12]: k1 = CauchyKernel(0, 10, dist)
> In [13]: k0.init(feats_train,feats_train)
> Out[13]: True
> In [14]: k1.init(feats_train,feats_train)
> Out[14]: True
> In [15]: k = CombinedKernel()
> In [16]: k.append_kernel(k0)
> Out[16]: True
> In [17]: k.append_kernel(k1)
> Out[17]: True
> In [18]: k.init(feats_train,feats_train)
> Out[18]: True
> In [19]: mkl = MKLRegression()
> In [20]: mkl.set_C(1,1)
> In [21]: mkl.set_mkl_norm(2)
> In [22]: mkl.set_kernel(k)
> In [23]: mkl.set_labels(labels_tr)
> In [24]: mkl.train()
> ---------------------------------------------------------------------------
> SystemError                               Traceback (most recent call last)
> <ipython-input-24-ba4aba7733e3> in <module>()
> ----> 1 mkl.train()
>
> SystemError: [ERROR] In file
> /home/iarroyof/shogun/src/shogun/features/SparseFeatures.cpp line 408:
> assertion bvec.features failed in float64_t
> shogun::CSparseFeatures<ST>::compute_squared_norm(shogun::CSparseFeatures<double>*,
> float64_t*, int32_t, shogun::CSparseFeatures<double>*, float64_t*, int32_t)
> [with ST = double; float64_t = double; int32_t = int] file
> /home/iarroyof/shogun/src/shogun/features/SparseFeatures.cpp line 408
>
> Up to I can observe by going in the code where ASSERTion is placed, it
> seems to be there is a type disagreement or probably the ASSERT method does
> not find data for computing distance. Any way, I don't know how to fix this
> error. Furthermore, a warning is given for other kernels like Gaussian or
> Wave. In these cases, no any distance is explicitly computed:
>
> /usr/lib/python2.7/dist-packages/numpy/core/_methods.py:55:
> RuntimeWarning: Mean of empty slice.
>   warnings.warn("Mean of empty slice.", RuntimeWarning)
> /usr/lib/python2.7/dist-packages/numpy/core/_methods.py:67:
> RuntimeWarning: invalid value encountered in double_scalars
>   ret = ret.dtype.type(ret / rcount)
>
> In some part of the Shogun class reference I saw SparseRealKernel and I'm
> wondering if using common kernels (maybe exclusively dense kernels) is not
> compatible with sparse features.
>
> Thank you very much in advance for your help.
>
> --
> *Ignacio Arroyo-Fernández*
>

Reply via email to