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* >>> >> >>
