Hi Heiko, I posted a code example for reproducing the issue:
https://github.com/shogun-toolbox/shogun/issues/2945 Thank you for helping. 2015-12-13 22:01 GMT-06:00 Heiko Strathmann <[email protected]>: > Hi Nacho, > > thanks for the update. > As said, I think this is a bug. Could you > > Post the exact description as a github isse. > Put in a gist with the python snippet? Executable, minimal reproducing the > error if possible. > > Thanks! > H > > 2015-12-13 22:54 GMT+00:00 nacho arroyo <[email protected]>: > >> Hi Heiko, thanks for reply. >> >> The mentioned warning disappeared. I had time for analyzing a bit more >> the issue, which persists. The problem takes place when I try to use any >> kernel which uses a precomputed distance object ('dst' in the attached code >> snippet). I tested the both, the sparse and dense versions of the >> 'EulideanDistance' object. For the Gaussian, Linear and Polynomial kernels >> (uniquely for these kernels) it is not needed a precomputed distance >> matrix, so all works fine with them. >> >> I attached my Python code in the mail before. Do you have it? >> El 13/12/2015 16:23, "Heiko Strathmann" <[email protected]> >> escribió: >> >>> 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* >>>> >>> >>> > -- *Ignacio Arroyo-Fernández*
