Open in new window / Try shogun cloud
--- Log opened Wed Jul 03 00:00:15 2013
@iglesiasghey hushell, how is it going?00:00
-!- iglesiasg [] has quit [Quit: Leaving]00:40
-!- pickle27 [] has joined #shogun01:21
-!- hushell [] has quit [Ping timeout: 256 seconds]02:32
-!- wiking [~wiking@huwico/staff/wiking] has quit [Read error: Connection reset by peer]03:09
-!- wiking [] has joined #shogun03:10
-!- pickle27 [] has quit [Quit: Leaving]04:24
shogun-buildbotbuild #446 of nightly_default is complete: Failure [failed test]  Build details are at
-!- zxtx [] has quit [Read error: Operation timed out]04:38
-!- nube [~rho@] has quit [Ping timeout: 252 seconds]04:48
-!- nube [~rho@] has joined #shogun05:34
-!- nube [~rho@] has quit [Client Quit]05:35
-!- nube1 [~rho@] has joined #shogun05:35
-!- iglesiasg [] has joined #shogun06:50
-!- mode/#shogun [+o iglesiasg] by ChanServ06:50
-!- gsomix [~gsomix@] has joined #shogun07:03
gsomixgood morning07:04
@iglesiasggood morning07:05
-!- iglesiasg [] has quit [Quit: Leaving]07:24
-!- zxtx [] has joined #shogun07:26
@sonney2kgsomix, awake?07:55
@sonney2kgsomix, we were desperately looking for you yesterday07:55
@sonney2kgsomix, would be nice if you could make use of the delimitertokenizer such that we can finally merge your patch07:56
gsomixsonney2k, doing this thing now.08:03
-!- zxtx [] has quit [Read error: Operation timed out]08:07
gsomixsonney2k, btw, should CircularBuffer be inheritor of the Tokenizer?08:11
gsomixit seems my buffer and tokenizer are doing the same thing, but buffer have additional functionality like data storage.08:12
gsomixhm, it's good idea, I think. doing that.08:22
sonne|workgsomix: hmmhh maybe not inherit but just get the tokenizer as argument08:23
sonne|workgsomix: go go :)08:23
gsomixsonne|work, I really like the Tokenizer interface, I want the same in my class :)08:24
sonne|workgsomix: yeah van51 write nicely readable code :)08:25
-!- nube1 [~rho@] has quit [Ping timeout: 256 seconds]08:36
-!- gsomix [~gsomix@] has quit [Ping timeout: 256 seconds]08:58
-!- gsomix [~gsomix@] has joined #shogun08:59
-!- zxtx [] has joined #shogun09:14
-!- iglesiasg [] has joined #shogun09:22
-!- mode/#shogun [+o iglesiasg] by ChanServ09:22
-!- nube [~rho@] has joined #shogun09:22
-!- gsomix [~gsomix@] has quit [Ping timeout: 246 seconds]09:29
-!- gsomix [~gsomix@] has joined #shogun09:42
-!- lisitsyn [] has joined #shogun09:56
-!- votjakovr [] has joined #shogun09:59
gsomixsonney2k, sonne|work almost things are done, but now I need go to zoo with gf :)10:17
gsomixinterface of CircularBuffer looks very fine10:17
gsomixTokenizer interface + push/pop (now with SGVectors - very fine and laconically) + decorates DelimiterTokenizer + set_tokenizer10:19
sonne|workgsomix: so now what?10:20
gsomixsonne|work, I need little modify my tokenize methods for finding N-char tokens in CircularBuffer. and then PR at evening.10:23
sonne|workn-char tokens?10:23
gsomixerr, just tokens. :) CircularBuffer works fine for single delimiters now. DelimiterTokenizer allows to search tokens, but in CircularBuffer tokens can be situated from end of physical memory to begin.10:25
gsomixbecause of buffer is circular, hm10:26
sonne|workgsomix: it is sufficient that it works with delimitertokenizer10:28
lisitsynsonne|work: is our MKL using ||w||=1 constraint?10:28
sonne|worklisitsyn: we can do any p-norm >=110:28
lisitsynsonne|work: last mail in the mailing list10:29
lisitsynhe asked about norm regularizer10:29
lisitsyninstead of norm constraint10:29
lisitsynor ivanov vs tikhonov as he said10:30
gsomixsonne|work, hm, I don't think so. look, buffer [' ','a','b',' ',' '], delimiter is ' ' (space)10:30
sonne|worklisitsyn: IIRC these formulations are equivalent10:30
lisitsynsonne|work: in terms of math yes but numerically not I guess?10:31
sonne|worklisitsyn: I don't see why not optimum IIRC is always at the ||w||_p = 110:32
sonne|workgsomix: I dont' get what you mean10:32
gsomixsonne|work, for example buffer being is 'a' (buffer[1])10:32
gsomixnow I use DelimiterTokenizer for find tokens in parts buffer[1:5] and buffer[0:1]10:33
gsomixbut token is continuous10:33
gsomixtoken is buffer[3:5]+buffer[0]10:33
gsomixI must take this into account.10:34
sonne|workgsomix: but why do you want to support more than a single char as delimiter?10:34
gsomixsonne|work, hm, interesting question. :) because of DelimiterTokenizer potential, I think.10:35
gsomixsonne|work, but I can support single delimiters, yep.10:36
sonne|workIMHO not essential10:37
gsomixthen I need clean up code and send PR10:37
sonne|workwe should rather speed up and support some file format10:37
gsomixsonne|work, ok, sorry. :(10:37
gsomixso, need to go, sorry twice10:38
gsomixcu at evening10:38
-!- gsomix [~gsomix@] has quit [Quit: Leaving]10:39
-!- nube [~rho@] has quit [Quit: Leaving.]11:20
-!- nube [~rho@] has joined #shogun11:21
-!- HeikoS [] has joined #shogun12:01
-!- mode/#shogun [+o HeikoS] by ChanServ12:01
votjakovrHeikoS: hi! now i'm working again on refactoring: i think that it's better to create a methods like: get_posterior_means(features) and get_posterior_variances(features) in CGaussianProcessMachine class. These two methods will return mu and s2 from N(mu, s2), where N(mu, s2) approximates posterior p(f*|x*,x,y)12:09
@HeikoSvotjakovr: hi!12:10
@HeikoSany problems with the old scheme?12:10
@HeikoSvotjakovr: wait12:11
@HeikoSis this the conditioned GP12:11
votjakovrHeikoS: we will use these methods in classification and regression parts12:11
@HeikoSor the posterior (which is not always Gaussian)12:11
-!- foulwall [~user@2001:da8:215:6100:1cf2:7cef:b86d:5a1b] has joined #shogun12:11
@HeikoSvotjakovr: p(f|y) not not always Gaussian12:12
@HeikoSfor regression, it is12:12
@HeikoSfor laplace approximation, it is12:13
@HeikoSbut not otherwise12:13
@HeikoSnot even for sparse regression with student -t likelihood12:13
@HeikoSvotjakovr:  on the other hand, gpml also does this12:14
@HeikoSvotjakovr: maybe give it a try, we can change it later, it should not be too much work right?12:17
-!- nube [~rho@] has quit [Ping timeout: 246 seconds]12:17
@HeikoSfor EP, it will also work12:17
@HeikoSvotjakovr: the only thing I am concerned about is then the posterior is actually not Gaussian. Then integrating over it for predictions will use different methods (for example sampling) and things wont be nicely unified anymore12:18
@HeikoSfor std cases it should be fine and as said we can change it later12:18
votjakovrHeikoS: i mean mu from the 4th line, s2 from the 6th line of the algorithm 3.2, p. 4412:28
@HeikoSi got a differen edition12:29
@HeikoSis this the prediction algorithm, votjakovr?12:29
votjakovrHeikoS: ohh, i'm sorry, not mu and s2, but f*- and V[f*]12:31
votjakovrHeikoS: yep12:31
votjakovrHeikoS: these two things i'd like to to have in GaussianMachine class12:32
@HeikoSvotjakovr: as I said, this is fine, but only can be used if the posterior is Gaussian12:32
@HeikoSif we try to do exact inference, we cannot call these methods12:32
@HeikoSso it kind of depends on the inference method used, you see what I mean?12:32
votjakovrHeikoS: yep, totally12:33
@HeikoSline 7 of the algorithm, this Gaussian is not always a Gaussian12:33
@HeikoSso if the methods are in the GPmachine12:33
@HeikoSvotjakovr: how do they compute the posterior?12:33
@HeikoSover which interfaces?12:33
@HeikoSvotjakovr: I mean the way to solve this integral is inference method dependent12:38
@HeikoSvotjakovr: however, please go ahead and do your changes, as for this project, all posterior GPs will be approximated by Gaussians :)12:38
@HeikoSwe can do changes later12:38
@HeikoSthis makes things easier12:39
votjakovrHeikoS: sure, it depends on inference method, but we can get cholesky, alpha and sqrt(W) from each inference method class and compute posterior12:41
@HeikoSvotjakovr: again, that is only possible if the posterior is Gaussian, doesnt work for other forms12:42
@HeikoSwe can only handle different Gaussians this way (i.e. Laplace, EP, and exact regression)12:44
@HeikoSbut not posterior distributions which dont have a closed form expression12:44
votjakovrHeikoS: i agree12:44
@HeikoSvotjakovr: but since the current framework is kind of based on only gaussians, lets stick with it for now12:44
@HeikoSvotjakovr: we can later on think about more things, but first we need baseline methods, so do what you suggested :)12:45
votjakovrHeikoS: ok:) honestly, i didn't even think about non Gaussian posteriors12:47
@HeikoSvotjakovr: keep in mind that it is *never* Gaussian if the likelihood is not ;) we are doing approximate inference here12:48
@HeikoSvotjakovr: but one can also do exact things (which are slow usually)12:48
votjakovrHeikoS: yep, i knew that posterior is non Gaussian, when likelihood is not. But i didn't think about posterior distributions which dont have a closed form12:51
votjakovr expression12:51
-!- iglesiasg [] has quit [Quit: Ex-Chat]12:51
@HeikoSvotjakovr: this will be an issue after multiclass is finished, so a long way, how long do you think it will take for the logit one to be working?12:52
votjakovrHeikoS: i think, that i'll finish it today12:53
@HeikoSvotjakovr: nice!12:54
-!- nube [~rho@] has joined #shogun13:19
-!- nube [~rho@] has quit [Ping timeout: 276 seconds]13:29
-!- foulwall [~user@2001:da8:215:6100:1cf2:7cef:b86d:5a1b] has quit [Remote host closed the connection]13:42
-!- nube [~rho@] has joined #shogun13:42
-!- iglesiasg [] has joined #shogun13:50
-!- mode/#shogun [+o iglesiasg] by ChanServ13:50
-!- benibadman [~benibadma@] has joined #shogun14:16
-!- nube [~rho@] has quit [Ping timeout: 260 seconds]14:19
-!- van51 [] has joined #shogun14:28
-!- van51 [] has quit [Read error: Connection reset by peer]14:33
-!- van51 [] has joined #shogun14:34
@iglesiasglisitsyn, more people register to the workshop, right?14:43
lisitsyniglesiasg: yes two more15:01
@iglesiasglisitsyn, cool15:01
@sonney2kwiking, could you please tell me the URL under which we will have the workshop live stream?15:26
-!- iglesiasg [] has quit [Quit: Ex-Chat]15:38
-!- benibadman [~benibadma@] has quit [Remote host closed the connection]15:41
van51sonney2k: if I run liblinear15:52
van51sonney2k: without specifying num_of_threads =1 , I'm getting segfaults sometimes15:52
van51sonney2k: and almost always if the number of examples >= 10015:53
van51sonney2k: should that worry me a little or a lot ? :)15:53
-!- nube [~rho@] has joined #shogun16:16
-!- lambday [67157f4c@gateway/web/freenode/ip.] has joined #shogun16:54
lisitsynvan51: yes that should worry us17:20
lisitsynvan51: please try to reproduce it under valgrind17:20
van51lisitsyn: okie17:21
van51lisitsyn: I am not sure atm but I think it was in a unref method of sgreferenceddata or something17:22
van51lisitsyn: I will try to reproduce it ofc17:23
van51lisitsyn: but could it be bc of the way I initialize my data?17:23
lisitsynvan51: I don't know everything is possible :)17:24
-!- pickle27 [~Kevin@] has joined #shogun17:39
votjakovrHeikoS: i've just sent a PR (with refactoring parts). Please, have a look at it.17:50
@HeikoSvotjakovr: just did, looks fine17:50
-!- shogun-notifier- [] has joined #shogun17:50
shogun-notifier-shogun: Roman Votyakov :develop * 971d4fb / src/shogun/ (8 files):
shogun-notifier-shogun: refactor evaluation of posterior and predictive distributions17:50
shogun-notifier-shogun: Heiko Strathmann :develop * 2c0f087 / src/shogun/ (8 files):
shogun-notifier-shogun: Merge pull request #1206 from votjakovr/feature/gp_refactoring17:50
shogun-notifier-shogun: refactor evaluation of posterior and predictive distributions17:50
van51lisitsyn: here is a valgrind output
votjakovrHeikoS: ok, then, i'll send next one (with logit) tonight17:52
@HeikoSvotjakovr: cool! this will be the first major step taken :)17:52
lisitsynvan51: hashed doc dot features is something you work on, right?17:54
van51lisitsyn: yeah17:54
lisitsynvan51: looks like you are working on a vector that was free'd17:57
pickle27lisitsyn, saw your comment18:00
pickle27will be updating the PR shortly18:01
lisitsynvotjakovr: would you go for implementing the same thing you posted at g+? ;)18:02
-!- lisitsyn [] has quit [Quit: Leaving.]18:07
shogun-buildbotbuild #1181 of bsd1 - libshogun is complete: Failure [failed test_1]  Build details are at  blamelist: Roman Votyakov <>18:08
lambdayHeikoS: hi18:12
lambdayHeikoS: do you think I should rather override the clone method of SGObject for DenseMatrixOperators instead of doing it in the copy constructor18:12
@HeikoSlambday: hi18:12
@HeikoSlambday: nono18:12
@HeikoSclone implements a deep copy for all SGObject subclasses already18:12
@HeikoSso you can use that18:13
lambdayHeikoS: I tried, but gives segfaults :(18:13
@HeikoSlambday: aha!18:13
@HeikoSwiking: where are my unit tests!!!18:13
@HeikoSlambday: I added that recently, its experimental18:13
@HeikoSlambday: can you reproduce and isolate the segfault and send me the program?18:13
lambdayHeikoS: I was testing with logdet itself, I'll create a small one and sending you then18:14
@HeikoSok thanks!18:14
@HeikoSturn on debug then you see where the problem happens18:14
lambdayHeikoS: it prints clone successful...18:14
lambdayit comes back18:14
@HeikoSand then?18:15
lambdayI put a print in the caller, that too prints.. so shouldn18:15
lambdayt' be any problem with that18:15
lambdaythen I get the diagonal and it doesn't move any further18:15
lambdaywait I will send you18:16
lambdayI do have a REQUIRE statement that ensures that the matrix isn't NULL18:16
@HeikoSI dont get it, waiting for the code ;)18:17
lambdayyes I understand.. sounds way too messy :D18:17
lambdaywait.. sending18:17
shogun-buildbotbuild #1182 of bsd1 - libshogun is complete: Failure [failed test_1]  Build details are at  blamelist: Heiko Strathmann <>18:18
shogun-buildbotbuild #1305 of deb3 - modular_interfaces is complete: Failure [failed compile csharp_modular]  Build details are at  blamelist: Roman Votyakov <>18:31
lambdayHeikoS: I have some bug in my program as well.. I should check18:43
lambdayin the code I mistakenly used the pointer!18:43
lambdayArgh! explains the deviation! I'll fix it soon!18:43
-!- gsomix [~gsomix@] has joined #shogun18:45
lambdayHeikoS: oh! It gives segfaults cause I tried to delete it!18:47
gsomixgood evening18:47
@HeikoSlambday: that means?18:47
lambdayHeikoS: no, ummm.. that's not it :-18:48
lambdayHeikoS: sorry I am really confused :(18:48
@HeikoSlambday: dont worry, so whats the current problem then?18:48
lambdaybut I found a bug in my program!18:48
@HeikoSlambday: so clone works?18:48
lambdayHeikoS: nope! because using copy constructor that I used fails on REQUIRE of the get_diagonal, but when I used clone, it gives segfaults, doesn't fail on REQUIRE18:49
lambdaymy program is buggy as well18:49
lambdayplease uncomment that and run...18:50
lambday(I wrote in comments)18:50
@HeikoScould we have a program without the copy constructor business?18:50
@HeikoSthat confuses me a bi18:50
-!- pickle27 [~Kevin@] has quit [Quit: Leaving]18:50
lambdayyes! deep copy of the operator we need.. I could have used same op and set the diagonal different for each jobs but that would only work for sequential computation and not the parallel18:51
-!- travis-ci [] has joined #shogun18:51
travis-ci[travis-ci] it's Heiko Strathmann's turn to pay the next round of drinks for the massacre he caused in shogun-toolbox/shogun:
-!- travis-ci [] has left #shogun []18:51
lambdayso, once clone works, we'll have a deep copy of the operators with each of the jobs18:51
lambdaythat's exactly what we need18:51
@HeikoSyep deep copy is what we want18:52
@HeikoSand what is broken in there?18:52
lambday1. my copy constructor is buggy! 2. clone gives segfaults18:53
@HeikoSok the the clone call fails in the example?18:53
lambdayyes, please try to run it once... uncommenting the get_diagonal() for the cloned one18:54
@HeikoSlets see18:54
shogun-buildbotbuild #1306 of deb3 - modular_interfaces is complete: Failure [failed compile csharp_modular]  Build details are at  blamelist: Heiko Strathmann <>18:55
@HeikoSlambday: example fails to compile here, SGMatrix not found, annoying ....18:56
lambdayerrr! :-/18:57
@HeikoS../shogun-test.cpp:19:2: error: 'SGMatrix' was not declared in this scope18:57
@HeikoSdont know why this is happening18:57
lambdayoh shit!18:57
lambdayusing namespace shogun;18:57
@HeikoSah namespace18:57
lambdayI copied and pasted a part of my code, missed that :(18:58
@HeikoSlambday: now I get linker errors *sigh*18:59
@HeikoSthats something else18:59
@HeikoSlet me find out ...18:59
lambdaylinking errors :'(18:59
@HeikoSgotta recompile shogun,19:00
lambdayoh.. yes!19:00
@HeikoSmessed up source tree here19:00
lambdayits newly added stuff19:00
@HeikoSjust pulled19:00
lambday(good that I kept this week for bugfixing! this explains all the deviations! things should work properly once I do the clone properly)19:02
@HeikoSlambday: yeah, always important to look at the valgrind output :)19:02
@HeikoSclone is also not stable yet19:02
@HeikoSbut just 95%19:02
lambdayshould work, right?19:03
@HeikoSI am still waiting for wiking to write some automated unit test magic :)19:03
@HeikoSstill compiling19:03
lambdayyes I always use valgrind.. I test the class separately, write tests separately, debug, and then add to shogun :D19:03
lambdaybut this is a stupid error.. I set the same pointer instead of calling copy constructor... so it keeps on adding shifts in each iterations.. explains why we got so large deviations for higher number of shifts19:04
lambdayHeikoS: automated unit-test?19:05
@HeikoSlambday: yeah for clone its quite easy19:05
@HeikoSfor all SGObhjects19:05
@HeikoSmakes sure that both equals and clone works19:06
-!- pickle27 [] has joined #shogun19:07
lambdayfeels so relaxing to work on this again after 6 hours of brainstorming at that Intel project I was talking about :D19:07
@HeikoSlambday: haha :)19:08
@HeikoSman :D19:08
lambdayHeikoS: you won't believe I'll be working 12-14 hours a day :D19:08
@HeikoSlambday: I *do* believe you, all this stuff has to be written at some point right? :D19:09
@HeikoSso I got it running now19:09
@HeikoSthere is something wrong with clone I think19:09
@HeikoSdoesnt copy the complex value19:09
lambdayyou implemented that before I added complex I guess19:09
@HeikoSlambday: no afterwards19:10
@HeikoSlambday: the m_operator is not registered19:10
@HeikoSthat definitely causes a problem19:10
@HeikoSof DenseMatrix19:10
@HeikoSso clone does not handle it19:10
@HeikoSwiking: exactly this is why we need the unit tests asap! ^19:11
@HeikoSsince when one forgets to register parameters, the unit test will fail19:11
lambdayHeikoS: I faced a problem when I was registering it19:11
@HeikoSlambday: which is?19:11
lambdaywait.. let me check19:12
@HeikoSonly registered parameters are handled by clone19:12
lambdayyes... so once I solve that, it solves it all...19:12
@HeikoShopefully :)19:12
lambdayI remember I kept it like that for some reason... for all other classes I registered params..19:12
@HeikoSwhat happens if you register it?19:14
lambdayHeikoS: wait I'm testing again... I also can't use SG_GCDEBUG but rather I had to use SG_SGCDEBUG for this19:16
lambdaysays "io" not defined19:16
@HeikoSthats no problem19:16
@HeikoSyou can only use the non-static one when you have SGobjects19:16
@HeikoSnot from static context19:16
lambdayumm but its a subclass of SGObject and the methods I used are not static19:23
lambdayI did include shogun/base/Parameter.h19:24
@HeikoSmaybe you forgot to include SGIO?19:25
@HeikoSlambday: so, does registering it work?19:29
lambdayHeikoS: that shouldn't be the case, SGObject.h includes SGIO.h itself19:29
lambdayHeikoS: no :(19:29
@HeikoSwhats the problem?19:29
lambdaycheck the gist I pasted.. this is the error msg I get when I add init and use SG_ADD19:29
@HeikoSah so same problem19:31
@HeikoSso base class seems like19:31
@HeikoSthats so weird19:33
lambdayyes :( :(19:33
lambdayits not getting anything from its base19:33
lambdaysome mistake is there!19:33
-!- gsomix [~gsomix@] has quit [Remote host closed the connection]19:34
@HeikoSlambday: yeah must be some subtle thing19:34
lambdayI checked it twice today.. must be missing something... I'll check it again19:35
@sonney2kvan51, that segfault is probably due to some bug in your dotfeatures /converter then19:39
van51sonney2k: yea probably, I'm trying to locate it19:39
@sonney2kvan51, but post your example / code19:39
@sonney2kon some gist.github.com19:39
@sonney2kvan51, btw one test would be to run your converter / dotfeatures under valgrind (e.g. just the test)19:41
van51sonney2k: I have ran the unit tests in valgrind and they were ok19:41
@sonney2kvan51, you can use init_shogun_with_defaults() btw19:41
@HeikoSlambday: its weird, base constructor is called19:44
@HeikoSso the things *are* there19:44
@HeikoSbut I am already tired, probably will find it with fresh eyes ;)19:45
@sonney2kvan51, and yes you only need to unref lib_linear19:45
van51sonney2k: hehe ok19:46
van51sonney2k: I will find it or I won't sleep -.-19:46
van51sonney2k: is the plain dot function called at all from liblinear?19:48
@sonney2kvan51, btw you can load the label vector much more easy - just use a SGVector and then do load with CAsciiFile19:48
@sonney2kvan51, not sure - I *think* not19:49
@sonney2kvan51, but it depends on the liblinear solver that is used19:49
van51sonney2k: yea I saw that in an example, but I wanted to only load the first K labels19:49
@sonney2kvan51, well you can just head -n K file or shrink the vector (resize...)19:50
-!- lisitsyn [~lisitsyn@] has joined #shogun19:52
@HeikoSlambday: I gotta go now, see you tomorrow! dont forget to sleep ;)19:53
@HeikoSvotjakovr: going gome, see you tomorrow!19:55
-!- HeikoS [] has quit [Quit: Leaving.]19:55
@sonney2klisitsyn, wiking @c-base now20:37
lisitsynsonney2k: nice20:37
lisitsynsonney2k: equipment?20:38
-!- zxtx [] has quit [Read error: Operation timed out]20:45
-!- shogun-notifier- [] has quit [Quit: transmission timeout]20:50
naywhayarehello there, I think I've found a problem with the ./configure script20:53
naywhayareI haven't looked into it too deeply but I think the problem is still present in trunk20:53
naywhayareif I have lua5.2 installed, ./configure will detect that and try to build the lua interface; however, (I did not check with trunk, but I did with 2.1.0) shogun does not compile with lua5.220:53
@sonney2klisitsyn, yes we can use the c-base cam \o/20:56
lisitsynsonney2k: heh nice finally20:57
lisitsynnaywhayare: hey20:57
naywhayarelisitsyn: it should be an easy fix around line 1008 or 1010 of the configure script (somewhere in there)20:57
lisitsynnaywhayare: thanks20:57
@sonney2knaywhayare, shogun develop should do lua5.220:58
naywhayareI should also note -- I know nothing about lua and have no use for it.  but I wanted to compile shogun with all features available :)20:58
naywhayaresonney2k: okay, then nevermind :)20:58
@sonney2klisitsyn, any idea where gsomix is?20:59
@sonney2kwiking, awake?20:59
lisitsynsonney2k: no20:59
@sonney2klambday, hmmhh :/20:59
lisitsynnaywhayare: okay let me try to compile it here with lua21:00
@sonney2kvan51, any insights from valgrind?21:00
van51sonney2k: I have some fixes to send21:00
van51sonney2k: but nothing final yet21:00
@sonney2kvan51, fixes for what?21:01
van51sonney2k: some simple stuff, like a SG_REF in the converter21:01
van51sonney2k: and a minor change in the copy constructos of the tokenizers21:01
@sonney2kvan51, found by valgrind?21:01
van51sonney2k: no :P21:02
van51sonney2k: the SG_REF I had it in my mind from when you told me that it's a "rule" to sg-ref objects you save for later21:02
van51sonney2k: the others I found an abnormality in some debugging messages and thought that maybe it was that the cause21:02
van51sonney2k: when a copy constructor was called on a Tokenizer it didn't also copy the position of the last_idx21:03
van51sonney2k: actually I think it wasn't even setting it to 021:03
van51it could be trash21:04
van51sonney2k: anyway, I was planning to make a PR now about those, you can see the changes there21:04
@sonney2kvan51, well the copy constructor is not really used21:06
van51sonney2k: yea it didn't fix the issue, but since it's something that I noticed, I guess it can be changed21:09
-!- gsomix [~gsomix@] has joined #shogun21:13
gsomixgood evening again21:13
@sonney2khey gsomix!21:14
@sonney2kgsomix, all happy animals?21:14
gsomixsonney2k, yep. and Moscow's zoo is free for students.21:16
lambdaysonney2k: hi.. sorry I was away21:16
lisitsynsonney2k: btw is it worth to visit berlin one?21:17
gsomixsonney2k, preparing PR.21:18
@sonney2klambday, whats up?21:19
@sonney2klisitsyn, berline one?21:20
lisitsynsonney2k: yes zoo21:20
lambdaysonney2k: going good so far.. been assigned with a lot of stuff at the insti.. gotta manage time :(21:20
lisitsynyou were talking about zoo21:20
@sonney2klisitsyn, well animals are animals :)21:21
lisitsynsonney2k: that's true and people are animals too but still may be it is not cool21:21
lisitsynsonney2k: so what made c-base guys get convinced?21:24
@sonney2klisitsyn, from when is the viola jones paper?21:28
lisitsynsonney2k: year?21:29
lisitsyn2001 or so21:29
@sonney2kwow old21:29
@sonney2klisitsyn, and local binary patterns21:29
lisitsynyes 200121:29
lisitsynlbp is around 2004 I guess21:29
lisitsynsonney2k: LBP is 199421:30
-!- iglesiasg [] has joined #shogun21:30
-!- mode/#shogun [+o iglesiasg] by ChanServ21:30
@sonney2klisitsyn, you are around on thursday too right?21:53
lisitsynsonney2k: yes21:53
@sonney2klisitsyn, I will be in c-base in the evening for cam setup stuff so we might meet aswell21:53
lisitsynsonney2k: oh why not!21:53
@sonney2kI will likely not have my talk ready though and be dead but hey why not :D21:54
lisitsynsonney2k: btw how do we present things? with own notebooks?21:54
lambdaysonney2k: lisitsyn CGSObject::clone won't work if the params registered are not CGSObject type as of now, right?21:57
lisitsynlambday: that's what heiko knows but I don't think it skips matrices and such stuff21:58
lisitsynI see it clones all parameters21:58
lisitsynlambday: why?21:59
@sonney2klambday, no it should work for all registered params21:59
@sonney2klisitsyn, own notebook yeah21:59
lambdaysonney2k: lisitsyn its giving segfault at the line base/SGObject.cpp:134122:00
lambdaywhich is22:00
@sonney2klisitsyn, in worst case my notebook with .pdf or so22:00
lambdayif (!m_parameters->get_parameter(i)->copy(copy->m_parameters->get_parameter(i)))22:00
@sonney2klambday, cloning what?22:00
lambdaySGReferencedData has copy?22:00
lisitsynsonney2k: I have bad battery hope to have AC available directly from the place22:00
@sonney2klisitsyn, sure22:00
lambdaycloning a CSGObject type obj which has a SGMatrix param22:01
lisitsynlambday: lets see valgrind!22:01
lambdaywait I'm pasting you the debug msgs (gdb)22:01
@sonney2klambday, no it doesn't need to - it gets the values of the matrix and then sets it again22:01
lambdayI'm checking.. but it does give segfault for this line22:03
lisitsynlambday: can you check what is uninitialized?22:03
@sonney2klambday, then we still have a bug there22:06
@sonney2klambday, it would help a lot to produce a minimal test case then HeikoS can easily fix this22:06
lambdaysonney2k: lisitsyn please have a look at this -
lambdaysonney2k: yes I was thinking the same22:06
lisitsynlambday: we need to know what is NULL/uninitialized22:07
lambdaylisitsyn: checking..22:07
lisitsynlambday: I guess it is either copy22:08
lisitsynor copy->m_parameters22:08
lambdaylisitsyn: how do I test that with gdb? :(22:12
lisitsynlambday: I'd suggest to put some prints22:12
lisitsynof copy and copy->m_parameters22:12
lisitsynand copy->m_parameters->get_parameter(i)22:13
lisitsynyou will see what failed22:13
lisitsynotherwise put a breakpoint22:13
lisitsynand use 'print copy'22:13
lisitsynand so on22:13
lisitsynlambday: cgdb can appear quite useful to manipulate breakpoints22:13
lambdaylisitsyn: alright... checking22:14
lambdaylisitsyn: seems like it doesn't entered TParameter::copy at all... otherwise that would have been printed22:17
lisitsynlambday: yes22:18
lisitsynthat's why I think that's something with the expression inside ()22:18
lisitsynhmm something is wrong with lua indeed22:20
lambdaylisitsyn: aha!22:22
lambdaycopy is nil22:22
lisitsynlambday: put an assert here please22:23
lambdaylisitsyn: okay22:24
lisitsynbut anyway we've got to do something with it :)22:24
lambdaywhy would new_sgserializable(get_name(), this->m_generic) return nil22:26
lisitsynlambday: what is name?22:34
lambdaylisitsyn: CDenseMatrixOperator (its a bit modified than what I've pushed, I hadn't added the register_params stuff for that due to c++ template issues, now I did, and testing)22:35
lisitsynlambday: is it template class?22:35
lambdayits like CSGObject <-- CLinearOperator<T> <---- CMatrixOperator<T> <---- CDenseMatrixOperator<T>22:36
lambdaySG_ADD didn't work (said m_parameters and m_model_selection_parameters not declared), so used CSGObject::m_pamareters->add() directly22:37
-!- zxtx [] has joined #shogun22:37
lambdayparams are registered (clone shows the index and all)22:37
lisitsynlambday: what is template type you use?22:39
lisitsynlambday: shogun/base/
lambdaylisitsyn: that's for the make, right?22:42
lambdaylisitsyn: I tested with float64_t also and it fails there too22:43
lisitsynlambday: no that's why it does return null22:43
lisitsynhmm no idea but it is wrong22:43
lambdaylisitsyn: okay.. trying removing that..22:44
lisitsynlambday: just check generated class_list.cpp22:44
lisitsynand find CDenseMatrixOperator22:44
lisitsynyou will see it won't be created for complex22:44
lisitsynjust NULL22:44
lambdaylisitsyn: yes.. but clone depends on that?22:45
lisitsynlambday: yes that's what new_sgserializable does22:45
lambdaylisitsyn: okayss22:46
lambdaylisitsyn: but then why it fails for float64_t22:46
lisitsynlambday: I don't know but I am absolutely sure it should not return null22:47
lisitsynso lets solve one problem :)22:47
lambdaysame for intxx_t22:47
lambdayhmm... okay22:47
lambdaylisitsyn: now I remember why I put it there..22:49
lisitsynlambday: why?22:49
lambdaylisitsyn: commented that line and it fails at many places (complex doesn't overload +=, -= etc I guess)22:50
lambdaylike other ptypes22:50
lisitsynlambday: then you've got to put some magic here22:50
lambdaylisitsyn: I don't think I can use clone for complex at all then!! :(22:50
lambdaylisitsyn: there is other way22:51
lisitsynlambday: you can add it by your selection22:51
lisitsynjust need some code in class_list.cpp.py22:51
lisitsynwhich excludes complex for anything but your classes22:51
lambdaylisitsyn: for a selected few classes you mean22:51
lambdaythat we'll actually be using complex with??22:52
lambdaylisitsyn: that's an awesome idea!!22:52
lambdayalright... trying!22:52
lisitsynlambday: just add a list and some thing that handles it22:52
-!- kevin_ [] has joined #shogun23:11
-!- kevin_ [] has quit [Client Quit]23:11
-!- kevin_ [] has joined #shogun23:12
-!- kevin_ [] has quit [Client Quit]23:12
-!- votjakovr [] has left #shogun ["Fallen asleep!"]23:13
van51so I have a suspicion it happens when apply() is called on liblinear and num_threads > 123:14
lisitsynvan51: then we have a race condition ;)23:17
lisitsynvan51: helgrind may be?23:17
van51lisitsyn: I can try it23:17
van51lisitsyn: I'm guessing it's similar to valgrind23:17
van51lisitsyn: very imaginative names btw23:17
lisitsynvan51: it is a module of valgrind23:17
lisitsynvan51: yes very nordic and GRIND23:18
van51lisitsyn: baah can't believe it's taking this long23:18
lisitsynvan51: it is run in a kind of sandbox where everything is counted and checked so no surprise23:19
van51hopefully next time I'll narrow it down sooner23:19
van51or more hopefully there won't be a similar next time :)23:19
van51lisitsyn: ok sounds nice23:19
lisitsynvan51: does it happen with other type of features?23:19
van51lisitsyn: I'll try it soon23:19
van51lisitsyn: didn't check23:19
van51lisitsyn: I'll see that first once valgrind finishes its run23:20
lisitsynthat may help to get suspect in custody23:20
van51lisitsyn: I can't seem to reproduce it with DenseFeatures23:26
lisitsynthen it is more likely that we have bug somewhere else ;)23:26
van51lisitsyn: but it's leaking memory when apply() is called23:26
van51no it's not :p23:27
van51anyway, it's time for helgrind23:27
@sonney2kvan51, ohh makes sense23:29
@sonney2kvan51, I think your code is not thread safe23:29
@sonney2kvan51, but it needs to be23:29
@sonney2kvan51, liblinear trains on a single cpu23:29
lambdaylisitsyn: okay that got solved23:29
lambdaylisitsyn:  but it still fails assert23:30
@sonney2kvan51, however when calling apply() we will use all available cpu's23:30
lisitsynlambday: the class_list thing/23:30
lambdaylisitsyn: yep23:30
van51sonney2k: I see23:30
@sonney2kvan51, so the dotfeatures you wrote need to be reentrant23:30
lisitsynlambday: alright23:30
van51sonney2k: so how do I start to make it thread-safe?23:30
lisitsynlambday: copy is still null right?23:30
van51sonney2k: is there a similar situation-class I can have a look at?23:30
@sonney2kvan51, no member variables for status23:30
@sonney2kvan51, let me check23:30
lambdaymanually added a separate list of classes for which we need complex to work and added a condition23:30
lambdaylisitsyn: yep23:30
lisitsynlambday: and they are in class_list.cpp?23:31
lambdaylisitsyn: yep23:31
@sonney2klambday, it is the tokenizer23:31
@sonney2klambday, sry23:31
@sonney2kvan51, it is the tokenizer23:32
lisitsynlambday: is m_generic set correclty?23:32
lambdaysonney2k: no problem23:32
@sonney2kvan51, you need a separate one in dense_dot etc23:32
van51sonney2k: it's shared through the threads?23:32
lambdaylisitsyn: checking23:32
van51sonney2k: bc it's a pointer?23:32
@sonney2kvan51, or the tokenizer is not allowed to keep local variables / or you need to pass it some status variable23:32
@sonney2kvan51, just think of you call next() from several threads23:33
lisitsynlambday: just check if it is PT_COMPLEX64 as required23:33
van51sonney2k: I mean all the threads use the same object,right?23:33
van51sonney2k: atm23:33
@sonney2kvan51, yes23:33
lambdaylisitsyn: alright23:33
van51sonney2k: ok23:33
@sonney2kvan51, and when they all call next() you have a race condition23:33
van51sonney2k: that's why I was noticing a weird output23:34
@sonney2kvan51, yes23:34
@sonney2kvan51, copy constructor with shallow copies might help already23:34
@sonney2kvan51, so you only have different next pointers etc23:34
@sonney2kvan51, but share all the delimiter array etc23:35
van51sonney2k: ok! I'll take a look :)23:36
@sonney2kvan51, or the other solution would be to do tokenizer->has_next(last_end_index)23:36
@sonney2kvan51, to keep it status free23:36
@sonney2kvan51, that is probable even easier/better23:36
van51sonney2k: btw plain dot() is called23:38
@sonney2kvan51, for what?23:38
van51sonney2k: in the beggining it's called for every single example23:39
van51to compute a dot with the same example23:39
@sonney2kvan51, ahh ok diagonal of kernel matrix or sth23:40
@sonney2kvan51, anyway my favourite solution is the has_next(last_index) one23:41
lambdaylisitsyn: its coming out to be PT_SGOBJECT every time23:42
van51sonney2k: the thing is that the tokenizer also has the text as a status23:42
lambdayso, its not set!23:42
van51sonney2k: so each call to dense_dot also changes the text23:42
lisitsynlambday: you should call set_generic<T>();23:44
lisitsynin init may be23:44
lambdaylisitsyn: okay.. I should do it for all template classes then23:45
lisitsynlambday: exactly23:46
@sonney2kvan51, yeah you have to return it in some function, e.g. you do t->has_next(last_index) and SGVector<char> next = t->next(last_index) will return it23:46
lisitsynsleep time see you23:46
lambdaylisitsyn: okies... good night :)23:46
-!- lisitsyn [~lisitsyn@] has quit [Quit: Leaving.]23:46
van51sonney2k: that would return a token?23:48
van51sonney2k: but the text to be tokenized is stored inside the tokenizer object23:49
van51sonney2k: and it's replaced on each call to dense_dot23:49
@sonney2kvan51, anyway either copy constructor or some way of returning the status will work23:49
@sonney2kvan51, jsut do whatever you find easier.23:49
van51sonney2k: I think copy constructor would be better23:49
van51sonney2k: I have one question though23:49
van51sonney2k: do I have to find the class first to call the appropriate constructor?23:50
@sonney2kvan51, btw if you do copy constructor please change the bool[256] array to SGVector<byte> so you can get refcounts for the array23:50
van51constructors are not virtual, right?23:50
@sonney2kvan51, just don't store an array23:50
@sonney2kvan51, true they are not23:51
van51sonney2k: clone() could work here, though23:51
van51if I register the delimiters23:51
van51now that it will be a sgvector23:51
@sonney2kvan51, no don't do clone23:52
@sonney2kvan51, you will need a copy constructor for each tokenizer23:52
@sonney2kthen all good23:52
van51sonney2k: won't that need multiple cases for the tokenizers, to call the appropriate one?23:54
@sonney2kvan51, I don't understand the question23:55
@sonney2kIMHO you should just use CTokenizer tokenizer as member23:55
@sonney2kand then do a CTokenizer thread_local_tokenizer = tokenizer; in the dense_dot etc23:56
van51sonney2k: ok, that's what I had in my mind as an idea23:58
van51it seems easier to do this way23:58
--- Log closed Thu Jul 04 00:00:16 2013