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*

Reply via email to