Open in new window / Try shogun cloud
--- Log opened Sun Aug 05 00:00:17 2012
-!- zxtx [] has quit [Remote host closed the connection]00:00
shogun-buildbot_build #44 of nightly_none is complete: Success [build successful]  Build details are at
shogun-buildbot_build #50 of nightly_default is complete: Failure [failed test]  Build details are at
shogun-buildbot_build #40 of nightly_all is complete: Success [build successful]  Build details are at
-!- blackburn [~blackburn@] has quit [Quit: Leaving.]05:54
-!- n4nd0 [] has joined #shogun08:58
-!- n4nd0 [] has quit [Quit: leaving]09:08
-!- pluskid [~pluskid@] has joined #shogun09:35
-!- pluskid [~pluskid@] has quit [Ping timeout: 240 seconds]10:38
-!- n4nd0 [] has joined #shogun10:42
-!- pluskid [~pluskid@] has joined #shogun10:55
@sonney2kpluskid, do you have a bit of time?11:11
@sonney2kpluskid, why do you need to create multiple kernels?11:11
@sonney2k(what for)11:11
-!- pluskid [~pluskid@] has quit [Ping timeout: 246 seconds]11:13
-!- pluskid [~pluskid@] has joined #shogun11:13
pluskidsonney2k: hi11:13
@sonney2kpluskid, hi11:13
pluskidI have to create multiple kernel machines11:13
pluskideach machines has his own kernel11:13
pluskidthose machines form a tree11:14
@sonney2kpluskid, so these are kept in memory for classification - I see11:14
@sonney2kpluskid, then IMHO we should go with a clone() method or sth similar11:14
@sonney2kthe factory has even stronger limitations... btw currently you only work with gaussian kernel right?11:15
pluskidsonney2k: yeah, I think that would be a long-term goal if my estimate of amount of work is correct11:15
pluskidsonney2k: I can work with any kernel11:15
@sonney2kso we could just implement clone() for gaussian (just for parameters) and that should do it11:16
@sonney2kpluskid, but only with default args currently right?11:16
pluskidsonney2k: you mean add a virtual clone() in CKernels with SG_NOTIMPLEMENTED, but implement that in GaussianKernel?11:16
@sonney2kthat is not useful in practice - kernel parameters change results *drastically*11:16
pluskidsonney2k: OK, I see11:17
@sonney2kpluskid, add a clone() methdo to SGObject even with SG_NOTIMPLEMENTED yes11:17
@sonney2kand then just do it for gaussian11:17
pluskidsonney2k: btw, the same problem applies to my construction of CLibSVM11:17
@sonney2kpluskid, would that be ok for your (kernel -> clone) ?11:17
pluskidsonney2k: yes, of course11:18
pluskidI'll do that11:18
@sonney2kpluskid, ok thanks11:18
pluskidur wel~11:18
@sonney2kwhat about your libsvm?11:18
@sonney2kI still dont' understand it11:18
pluskidthe problem is the same11:19
@sonney2kyou again create multiple libsvms?11:19
pluskidI have to create multiple SVMs11:19
pluskidyes, actually, its because I create multiple SVMs that I create multiple kernels11:19
@sonney2kbut underneath you only work with the SVM interface right?11:19
pluskidsonney2k: yes, actually I can work with any binary kernel machine11:19
@sonney2kI mean you call get_support_vectors() train() etc11:19
pluskidsonney2k: yes11:20
pluskidI only need # of SVs IIRC11:20
@sonney2kfor svms clone() is even simpler then - it would just copy the SVM C parameter / epsilon for now11:21
@sonney2kpluskid, I think we should have a clone(bool all) or two different clone functions - one that just copies parameters over and one that really creates a complete copy11:21
pluskidsonney2k: maybe we can use a MACRO to easily define a simple clone which simply calls the copy constructor11:22
pluskidsonney2k: yes, I think you are right, but maybe we don't have to consider that much *for now*?11:22
@sonney2kpluskid, but the copy constructor might also clone more than is needed, e.g. in kernels also the features ...11:22
@sonney2kor we make it a convention that clone() just clones parameters but doesn not create an independent copy...11:23
pluskidsonney2k: hm, yes11:23
pluskidsonney2k: but sometimes we need a deeper clone11:23
pluskidsonney2k: like the bug I mentioned in my email11:23
@sonney2khavent' seen you email yet but sure sometimes one needs this though almost no shogun object does have some deep_copy / clone11:24
@sonney2kpluskid, I think in python this is called copy() / deep_copy() btw11:25
pluskidsonney2k: the bug is that Features's duplicate() function doesn't do a *copy* of subset-stack11:25
pluskidwhich mess x-val in KNN11:26
@sonney2kpluskid, the call it shallow copy (when just references are increased) and deep copy (really everything is cloned)11:26
pluskidsonney2k: then shallow copy in shogun isn't merely SG_REF ?11:26
@sonney2kshallow copy would be to create a clone of the object with all the subobject just being SG_REF'd etc yes11:26
@sonney2kdeep would create clones for subobjects too11:27
pluskidhmm, that makes sense11:28
@sonney2kpluskid, and you only need shallow (even less actually but it is close to 0 overhead)11:28
pluskidyes, currently shallow copy only11:28
@sonney2kpluskid, so what do you think should we introduce shallow_copy() and deep_copy() in SGObject? or should we just have a duplicate() or clone() function with a boolean as argument?11:29
@sonney2kwhere bool ==   true denotes deep copy11:30
pluskidsonney2k: I'm OK with either11:30
@sonney2kme too11:31
pluskidthe captain has to make a decision11:31
pluskidlautmalerei, f?r den biss in den eigenen hintern?11:33
pluskidI googled that, no idea of what it is...11:33
@sonney2kgoogle translate will use offensive wording I am afraid11:34
pluskidgoogle translate gives: onomatopoeia, posterior to the bit in their own11:35
@sonney2kpluskid, I would like to involve blackburn / heiko in the discussion so just do it one way renaming things later is not the problem11:35
pluskidsonney2k: OK11:35
@sonney2kpluskid, but I tend to make things *explicit*, i.e. shallow_copy() / deep_copy()11:36
@sonney2kexplicit is usually much easier to read11:36
@sonney2kno need to lookup for a boolean etc11:36
pluskidsonney2k: OK, I'll go with that before blackburn and heiko show their opinion11:36
@sonney2kthanks for your patience11:37
@sonney2kpluskid, btw about the documetnation and including examples - I meant you should include examples in the examples/ directory directly11:43
pluskidsonney2k: examples/what ?11:44
@sonney2kpluskid, and I don't mind if you also add  the example to the .tex with your nice syntax highlighting11:44
@sonney2kpluskid, examples/undocumented/<interface your describe>11:44
@sonney2kpluskid, then add the documentation to examples/descriptions11:45
@sonney2k(for that example)11:45
@sonney2kit will be prepended to the example11:45
pluskidsonney2k: examples for tutorials tends to more real world datasets, I think the buildbot will not be happy to run them so frequently11:45
@sonney2ki.e. we generate documented examples from the undocumented ones11:45
@sonney2kpluskid, it can work if you use very few training examples in the examples dir11:46
pluskidcheng suggested that we use a separate buildbot which runs only once several days specific for shogun-tutor codes11:46
@sonney2ke.g. some parameter telling it to just take 10 examples or so11:47
pluskidsonney2k: I'll talk to you later, leave for supper11:47
CIA-18shogun: Soeren Sonnenburg master * r3462abe / (tests/regression/data tests/regression/tests): adjust symlinks for regression tests -
@sonney2kpluskid, I just now read your email... you basically suggest the same - very good :D12:14
shogun-buildbot_build #263 of deb3 - modular_interfaces is complete: Failure [failed test python_modular]  Build details are at  blamelist: Soeren Sonnenburg <>12:18
pluskidsonney2k: maybe we'd better get blackburn and heiko involved in the discussion of how to organize the tutor example code, since they are also currently writing the tutor12:21
-!- blackburn [~blackburn@] has joined #shogun12:44
-!- n4nd0 [] has quit [Read error: Connection reset by peer]12:44
-!- n4nd0 [] has joined #shogun12:49
-!- pluskid [~pluskid@] has quit [Ping timeout: 244 seconds]13:10
-!- n4nd0 [] has quit [Quit: leaving]13:22
-!- pluskid [~pluskid@] has joined #shogun13:32
blackburnpluskid: hey15:46
blackburnpluskid: ah nevermind, I got a little wrong :)15:47
pluskidblackburn: hi15:51
blackburnpluskid: I was confused with gaussian naive bayes and multivariate gaussian15:52
blackburnof course it is multivariate :)15:52
pluskidblackburn: am I mis-describing something about GNB? I didn't look at your algorithm very carefully15:52
blackburnpluskid: no, everything is correct15:53
pluskidblackburn: OK, cool15:53
pluskidblackburn: btw, do you think we should add at least one example for *every* algorithm described in the tutorial?15:53
blackburnexample like real data usage?15:54
blackburnI don't really know15:54
blackburnpluskid: I am now playing around with freak descriptor on road sign data16:07
blackburninteresting I managed to achieve 0.9% accuracy with 512 bit(!!!) features16:08
pluskid64 byte, that's impressive16:08
pluskidit is a global feature?16:08
blackburnwell I just use keypoint at center16:09
blackburnpluskid: actually I am learning a boolean function here :D16:09
pluskidboolean function? for what?16:10
blackburnpluskid: features are binary so actually it is a boolean function16:10
blackburnI have seen some DNF kernel around, will try it too16:10
pluskidoh, I see16:11
-!- pluskid [~pluskid@] has quit [Quit: Leaving]17:03
-!- puffin444 [62e3926e@gateway/web/freenode/ip.] has joined #shogun17:52
-!- n4nd0 [] has joined #shogun18:25
-!- gsomix [~gsomix@] has joined #shogun18:45
gsomixgood evening18:45
gsomixI'm at home, woohoo :)18:45
-!- n4nd0 [] has quit [Ping timeout: 250 seconds]18:51
blackburngsomix: phew19:08
@sonney2kgsomix, so finally you can work again :)19:13
@sonney2kblackburn, pluskid needs some kind of clone or shallow_copy or so for kernels / kernel machines19:14
gsomixsonney2k, work, work, work! Waaagh!19:14
@sonney2kblackburn, so what do you think shall we introduce a shallow_copy / deep_copy function like there is in python?19:14
blackburnsonney2k: I do not really understand what deep stands for here19:15
blackburnwith features?19:15
blackburnwith all related objects?19:15
@sonney2kblackburn, same meaning as in python: shallow means the compound object is created from scratch copying over scalars etc but only increase references for 'fat' objects19:16
@sonney2kblackburn, deep would create copies for 'fat' objects too19:16
@sonney2kIMHO these functions should go to SGObject with SG_NOTIMPLEMENTED as default19:17
@sonney2kblackburn, then we have to consolidate a bit what we currently have - clone() / duplicate() :D19:18
blackburnshould be all clone I mean19:18
@sonney2kblackburn, you just want one clone function instead of deep/shallow copy?19:18
blackburnyes why not?19:18
blackburnahh stop19:19
@sonney2khow can you distinguish deep from shallow?19:19
blackburndo we really need deep?19:19
@sonney2kthere are cases where we do (but rare)19:21
@sonney2kpluskid had one IIRC for KNN19:21
blackburnI can't really get the case19:22
blackburnin multiclass machines shallow is enough19:22
@sonney2kblackburn, well there will be cases for sure19:23
@sonney2ke.g. when you want to have a clone of the features etc19:23
blackburnthis can be done manually19:23
@sonney2kit is better to not do it manually19:23
blackburnit is pretty rare19:24
@sonney2kbut have it inplace19:24
@sonney2kyes true19:24
@sonney2kbut will appear19:24
@sonney2kI don't mind having copy() (like in python) do shallow copy only19:24
@sonney2kand then add some deep_copy() later19:24
blackburnyeah clone for shallow and something deep for deep19:24
@sonney2kdeep_clone then19:25
@sonney2kblackburn, btw I prefer copy to be closer to python syntax but not s strong preference19:26
blackburnsonney2k: clone is java way :)19:26
blackburnbut actually we are mainly python19:26
blackburnso yes, may be copy is bettter19:26
@sonney2kfork, duplicate, clone, copy ...19:27
blackburnsonney2k: are these names of methods we have?19:28
@sonney2kany will do19:29
@sonney2khowever I would really like to make it explicit that this is a shallow operation19:29
@sonney2kbut I don't know19:29
@sonney2kI guess deep copy will be tough (infinite recursion...)19:30
blackburnsonney2k: have you seen performance on road signs I obtained with freak?19:30
@sonney2kactually shallow can lead to that too :D19:30
blackburnyeah but that's for grayscale yet19:31
blackburnI expect it to be better anyway19:31
blackburnI find it impressive for 512 bits19:31
blackburnearlier I've been using ~2100 floats19:32
@sonney2kbut you didn't tune for #bits19:33
blackburnsonney2k: it is somewhat not really important19:33
blackburnsonney2k: more bits won't do that better19:34
blackburnauthors state it and actually it is already too dense with 512 pairs19:34
blackburnsonney2k: did you get the idea?19:34
@sonney2kwhat idea?19:35
blackburnsonney2k: of FREAKs19:35
-!- n4nd0 [] has joined #shogun19:40
@sonney2kblackburn, no idea about it19:41
blackburnsonney2k: well it just a set of 1/0 according to pairs
-!- gsomix [~gsomix@] has quit [Quit: Ex-Chat]19:42
-!- gsomix [~gsomix@] has joined #shogun19:42
blackburneach pair can be 1 if mean intensity of first point is more that mean intensity of second point19:42
blackburn0 otherwise19:43
blackburnso no reason to make more pairs actually19:43
@sonney2kblackburn, isnt' that a bit similar to HOG?19:43
blackburnsonney2k: no, HOG is gradient based decriptor19:44
@sonney2kat least it will be scale invarient again19:44
@sonney2kbrightness etc19:44
@sonney2kblackburn, but in HOG they compute differences right?19:44
@sonney2kblackburn, how are the points for the pairs chosen? seems crucial...19:44
blackburnsonney2k: well it is pretty general view, in hog you use gradient of image19:45
blackburnsonney2k: they are coarse-to-fine19:45
blackburnsonney2k: in freak you don't compute gradient, just differences of mean intensities19:45
blackburnsonney2k: pairs are selected in a data dependent fashion, general pattern is (page 4 figure 4)19:46
-!- n4nd0 [] has quit [Ping timeout: 272 seconds]19:51
blackburnsonney2k: do you have some camera in your car? :D19:54
@sonney2kblackburn, I can install one :D19:55
blackburnroad signs are a little different here so GTSRB training set is a different too19:55
blackburnhowever speed signs are mostly the same19:56
blackburnsonney2k: did you use LBP for these coffin paper examples?19:57
@sonney2kblackburn, yes - vojtech did that experiment though19:58
@sonney2kblackburn, FREAK really looks cool (damn fast...)19:58
blackburnsonney2k: I did not manage to optimize to use bools yet19:59
blackburnno idea how to that actually19:59
@sonney2kblackburn, why bools? just use bytes19:59
@sonney2kor even bit ops19:59
blackburnsonney2k: well actually FREAK implementation outputs in unsigned chars20:00
blackburnwhat I do now is20:00
blackburnextract bits and consturct 512 dimensional uint8_t dense features20:00
blackburnbut that's really suboptimal20:00
blackburnsonney2k: would be cool to use SSE here but no idea how - it should be totally different solver20:01
blackburnactually SSE based kernel could be pretty fast20:02
blackburnwill check20:02
CIA-18shogun: Soeren Sonnenburg master * rcd1f70c / tests/regression/python_modular/ : adjust paths to tests in generator -
@sonney2kblackburn, if you compute things on the fly it is probably more expensive than the dot etc stuff20:03
blackburnsonney2k: compute what?20:03
blackburnyou mean extracting bits? yes, for linear machines it will be slower20:04
blackburnI am curious whether kernel thing would be fast enough here20:05
@sonney2kblackburn, what for?20:05
@sonney2kthe dot features way is the fastest one ...20:05
blackburnsonney2k: I have seen DNF based kernel20:05
blackburnespecially for binary features20:06
blackburnoops why i use uint8_t :D20:08
blackburnsonney2k: is uint8_t and bool equal perfomance-wise?20:12
@sonney2kdepends on cpu and bool impl. why do you even need a bool /uint?20:17
@sonney2kI mean if you do x <y  ? 1 : 0 ?20:17
blackburnsonney2k: but I put precomputed features to densefeatures20:19
shogun-buildbot_build #264 of deb3 - modular_interfaces is complete: Success [build successful]  Build details are at
@sonney2kblackburn, if you precompute things then it is probably best to bit encode things23:57
blackburnencode like?23:57
@sonney2k0110010001 :D23:57
blackburnwell it is already encoded23:58
@sonney2kI mean instead of using 1 byte for 1 bit you use 1 byte for 823:59
blackburnand redefine add and dot?23:59
--- Log closed Mon Aug 06 00:00:17 2012