--- Log opened Sun Aug 05 00:00:17 2012 | ||
-!- zxtx [~zv@75-59-237-124.lightspeed.sntcca.sbcglobal.net] 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 http://www.shogun-toolbox.org/buildbot/builders/nightly_none/builds/44 | 03:14 |
---|---|---|
shogun-buildbot_ | build #50 of nightly_default is complete: Failure [failed test] Build details are at http://www.shogun-toolbox.org/buildbot/builders/nightly_default/builds/50 | 03:56 |
shogun-buildbot_ | build #40 of nightly_all is complete: Success [build successful] Build details are at http://www.shogun-toolbox.org/buildbot/builders/nightly_all/builds/40 | 04:27 |
-!- blackburn [~blackburn@109.226.80.43] has quit [Quit: Leaving.] | 05:54 | |
-!- n4nd0 [~nando@193.Red-2-137-61.dynamicIP.rima-tde.net] has joined #shogun | 08:58 | |
-!- n4nd0 [~nando@193.Red-2-137-61.dynamicIP.rima-tde.net] has quit [Quit: leaving] | 09:08 | |
-!- pluskid [~pluskid@108.171.196.83] has joined #shogun | 09:35 | |
-!- pluskid [~pluskid@108.171.196.83] has quit [Ping timeout: 240 seconds] | 10:38 | |
-!- n4nd0 [~nando@193.Red-2-137-61.dynamicIP.rima-tde.net] has joined #shogun | 10:42 | |
-!- pluskid [~pluskid@1.204.109.16] has joined #shogun | 10:55 | |
@sonney2k | pluskid, do you have a bit of time? | 11:11 |
@sonney2k | pluskid, why do you need to create multiple kernels? | 11:11 |
@sonney2k | (what for) | 11:11 |
-!- pluskid [~pluskid@1.204.109.16] has quit [Ping timeout: 246 seconds] | 11:13 | |
-!- pluskid [~pluskid@108.171.196.83] has joined #shogun | 11:13 | |
pluskid | sonney2k: hi | 11:13 |
@sonney2k | pluskid, hi | 11:13 |
pluskid | I have to create multiple kernel machines | 11:13 |
pluskid | each machines has his own kernel | 11:13 |
pluskid | those machines form a tree | 11:14 |
@sonney2k | pluskid, so these are kept in memory for classification - I see | 11:14 |
pluskid | yeah | 11:14 |
@sonney2k | pluskid, then IMHO we should go with a clone() method or sth similar | 11:14 |
@sonney2k | the factory has even stronger limitations... btw currently you only work with gaussian kernel right? | 11:15 |
pluskid | sonney2k: yeah, I think that would be a long-term goal if my estimate of amount of work is correct | 11:15 |
pluskid | sonney2k: I can work with any kernel | 11:15 |
@sonney2k | so we could just implement clone() for gaussian (just for parameters) and that should do it | 11:16 |
@sonney2k | pluskid, but only with default args currently right? | 11:16 |
pluskid | yeah | 11:16 |
pluskid | sonney2k: you mean add a virtual clone() in CKernels with SG_NOTIMPLEMENTED, but implement that in GaussianKernel? | 11:16 |
@sonney2k | that is not useful in practice - kernel parameters change results *drastically* | 11:16 |
pluskid | sonney2k: OK, I see | 11:17 |
@sonney2k | pluskid, add a clone() methdo to SGObject even with SG_NOTIMPLEMENTED yes | 11:17 |
@sonney2k | and then just do it for gaussian | 11:17 |
pluskid | sonney2k: btw, the same problem applies to my construction of CLibSVM | 11:17 |
@sonney2k | pluskid, would that be ok for your (kernel -> clone) ? | 11:17 |
pluskid | sonney2k: yes, of course | 11:18 |
pluskid | I'll do that | 11:18 |
@sonney2k | pluskid, ok thanks | 11:18 |
pluskid | ur wel~ | 11:18 |
@sonney2k | what about your libsvm? | 11:18 |
@sonney2k | I still dont' understand it | 11:18 |
pluskid | the problem is the same | 11:19 |
@sonney2k | you again create multiple libsvms? | 11:19 |
pluskid | I have to create multiple SVMs | 11:19 |
@sonney2k | ok | 11:19 |
pluskid | yes, actually, its because I create multiple SVMs that I create multiple kernels | 11:19 |
@sonney2k | but underneath you only work with the SVM interface right? | 11:19 |
pluskid | sonney2k: yes, actually I can work with any binary kernel machine | 11:19 |
@sonney2k | I mean you call get_support_vectors() train() etc | 11:19 |
pluskid | sonney2k: yes | 11:20 |
pluskid | I only need # of SVs IIRC | 11:20 |
@sonney2k | for svms clone() is even simpler then - it would just copy the SVM C parameter / epsilon for now | 11:21 |
@sonney2k | pluskid, 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 copy | 11:21 |
pluskid | sonney2k: maybe we can use a MACRO to easily define a simple clone which simply calls the copy constructor | 11:22 |
pluskid | sonney2k: yes, I think you are right, but maybe we don't have to consider that much *for now*? | 11:22 |
@sonney2k | pluskid, but the copy constructor might also clone more than is needed, e.g. in kernels also the features ... | 11:22 |
@sonney2k | or we make it a convention that clone() just clones parameters but doesn not create an independent copy... | 11:23 |
pluskid | sonney2k: hm, yes | 11:23 |
pluskid | sonney2k: but sometimes we need a deeper clone | 11:23 |
pluskid | sonney2k: like the bug I mentioned in my email | 11:23 |
@sonney2k | havent' seen you email yet but sure sometimes one needs this though almost no shogun object does have some deep_copy / clone | 11:24 |
@sonney2k | pluskid, I think in python this is called copy() / deep_copy() btw | 11:25 |
pluskid | sonney2k: the bug is that Features's duplicate() function doesn't do a *copy* of subset-stack | 11:25 |
pluskid | which mess x-val in KNN | 11:26 |
@sonney2k | pluskid, the call it shallow copy (when just references are increased) and deep copy (really everything is cloned) | 11:26 |
pluskid | sonney2k: then shallow copy in shogun isn't merely SG_REF ? | 11:26 |
@sonney2k | shallow copy would be to create a clone of the object with all the subobject just being SG_REF'd etc yes | 11:26 |
@sonney2k | deep would create clones for subobjects too | 11:27 |
pluskid | hmm, that makes sense | 11:28 |
@sonney2k | pluskid, and you only need shallow (even less actually but it is close to 0 overhead) | 11:28 |
pluskid | yes, currently shallow copy only | 11:28 |
@sonney2k | pluskid, 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 |
@sonney2k | where bool == true denotes deep copy | 11:30 |
pluskid | sonney2k: I'm OK with either | 11:30 |
@sonney2k | me too | 11:31 |
pluskid | haha | 11:31 |
pluskid | the captain has to make a decision | 11:31 |
@sonney2k | grmpf | 11:32 |
pluskid | lautmalerei, f?r den biss in den eigenen hintern? | 11:33 |
@sonney2k | hahaha | 11:33 |
pluskid | I googled that, no idea of what it is... | 11:33 |
@sonney2k | probably | 11:33 |
@sonney2k | google translate will use offensive wording I am afraid | 11:34 |
pluskid | google translate gives: onomatopoeia, posterior to the bit in their own | 11:35 |
@sonney2k | pluskid, I would like to involve blackburn / heiko in the discussion so just do it one way renaming things later is not the problem | 11:35 |
pluskid | sonney2k: OK | 11:35 |
@sonney2k | pluskid, but I tend to make things *explicit*, i.e. shallow_copy() / deep_copy() | 11:36 |
@sonney2k | explicit is usually much easier to read | 11:36 |
@sonney2k | no need to lookup for a boolean etc | 11:36 |
pluskid | sonney2k: OK, I'll go with that before blackburn and heiko show their opinion | 11:36 |
@sonney2k | thanks for your patience | 11:37 |
pluskid | :) | 11:37 |
@sonney2k | pluskid, btw about the documetnation and including examples - I meant you should include examples in the examples/ directory directly | 11:43 |
pluskid | sonney2k: examples/what ? | 11:44 |
pluskid | undocumented? | 11:44 |
@sonney2k | pluskid, and I don't mind if you also add the example to the .tex with your nice syntax highlighting | 11:44 |
@sonney2k | pluskid, examples/undocumented/<interface your describe> | 11:44 |
@sonney2k | pluskid, then add the documentation to examples/descriptions | 11:45 |
@sonney2k | (for that example) | 11:45 |
@sonney2k | it will be prepended to the example | 11:45 |
pluskid | sonney2k: examples for tutorials tends to more real world datasets, I think the buildbot will not be happy to run them so frequently | 11:45 |
@sonney2k | i.e. we generate documented examples from the undocumented ones | 11:45 |
@sonney2k | pluskid, it can work if you use very few training examples in the examples dir | 11:46 |
pluskid | cheng suggested that we use a separate buildbot which runs only once several days specific for shogun-tutor codes | 11:46 |
@sonney2k | e.g. some parameter telling it to just take 10 examples or so | 11:47 |
pluskid | sonney2k: I'll talk to you later, leave for supper | 11:47 |
@sonney2k | cu | 11:47 |
CIA-18 | shogun: Soeren Sonnenburg master * r3462abe / (tests/regression/data tests/regression/tests): adjust symlinks for regression tests - https://github.com/shogun-toolbox/shogun/commit/3462abe6979e27dcf92c4b83f4043cca5763756e | 11:48 |
@sonney2k | pluskid, I just now read your email... you basically suggest the same - very good :D | 12:14 |
shogun-buildbot_ | build #263 of deb3 - modular_interfaces is complete: Failure [failed test python_modular] Build details are at http://www.shogun-toolbox.org/buildbot/builders/deb3%20-%20modular_interfaces/builds/263 blamelist: Soeren Sonnenburg <sonne@debian.org> | 12:18 |
pluskid | sonney2k: 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 tutor | 12:21 |
-!- blackburn [~blackburn@109.226.80.43] has joined #shogun | 12:44 | |
-!- n4nd0 [~nando@193.Red-2-137-61.dynamicIP.rima-tde.net] has quit [Read error: Connection reset by peer] | 12:44 | |
-!- n4nd0 [~nando@5.Red-2-137-19.dynamicIP.rima-tde.net] has joined #shogun | 12:49 | |
-!- pluskid [~pluskid@108.171.196.83] has quit [Ping timeout: 244 seconds] | 13:10 | |
-!- n4nd0 [~nando@5.Red-2-137-19.dynamicIP.rima-tde.net] has quit [Quit: leaving] | 13:22 | |
-!- pluskid [~pluskid@1.204.109.16] has joined #shogun | 13:32 | |
blackburn | pluskid: hey | 15:46 |
blackburn | pluskid: ah nevermind, I got a little wrong :) | 15:47 |
pluskid | blackburn: hi | 15:51 |
blackburn | pluskid: I was confused with gaussian naive bayes and multivariate gaussian | 15:52 |
blackburn | of course it is multivariate :) | 15:52 |
pluskid | blackburn: am I mis-describing something about GNB? I didn't look at your algorithm very carefully | 15:52 |
blackburn | pluskid: no, everything is correct | 15:53 |
pluskid | blackburn: OK, cool | 15:53 |
pluskid | blackburn: btw, do you think we should add at least one example for *every* algorithm described in the tutorial? | 15:53 |
blackburn | example like real data usage? | 15:54 |
pluskid | yes | 15:54 |
blackburn | I don't really know | 15:54 |
pluskid | hmm | 15:54 |
blackburn | pluskid: I am now playing around with freak descriptor on road sign data | 16:07 |
blackburn | interesting I managed to achieve 0.9% accuracy with 512 bit(!!!) features | 16:08 |
pluskid | 0.9%... | 16:08 |
blackburn | argh | 16:08 |
blackburn | :D | 16:08 |
blackburn | 0.9 | 16:08 |
blackburn | ~90% | 16:08 |
pluskid | 64 byte, that's impressive | 16:08 |
pluskid | it is a global feature? | 16:08 |
blackburn | well I just use keypoint at center | 16:09 |
blackburn | pluskid: actually I am learning a boolean function here :D | 16:09 |
pluskid | boolean function? for what? | 16:10 |
blackburn | pluskid: features are binary so actually it is a boolean function | 16:10 |
blackburn | I have seen some DNF kernel around, will try it too | 16:10 |
pluskid | oh, I see | 16:11 |
-!- pluskid [~pluskid@1.204.109.16] has quit [Quit: Leaving] | 17:03 | |
-!- puffin444 [62e3926e@gateway/web/freenode/ip.98.227.146.110] has joined #shogun | 17:52 | |
-!- n4nd0 [~nando@5.Red-2-137-19.dynamicIP.rima-tde.net] has joined #shogun | 18:25 | |
-!- gsomix [~gsomix@109.169.130.0] has joined #shogun | 18:45 | |
gsomix | good evening | 18:45 |
gsomix | I'm at home, woohoo :) | 18:45 |
-!- n4nd0 [~nando@5.Red-2-137-19.dynamicIP.rima-tde.net] has quit [Ping timeout: 250 seconds] | 18:51 | |
blackburn | gsomix: phew | 19:08 |
@sonney2k | gsomix, so finally you can work again :) | 19:13 |
@sonney2k | blackburn, pluskid needs some kind of clone or shallow_copy or so for kernels / kernel machines | 19:14 |
gsomix | sonney2k, work, work, work! Waaagh! | 19:14 |
@sonney2k | blackburn, so what do you think shall we introduce a shallow_copy / deep_copy function like there is in python? | 19:14 |
blackburn | sonney2k: I do not really understand what deep stands for here | 19:15 |
blackburn | with features? | 19:15 |
blackburn | with all related objects? | 19:15 |
@sonney2k | blackburn, same meaning as in python: shallow means the compound object is created from scratch copying over scalars etc but only increase references for 'fat' objects | 19:16 |
@sonney2k | blackburn, deep would create copies for 'fat' objects too | 19:16 |
@sonney2k | IMHO these functions should go to SGObject with SG_NOTIMPLEMENTED as default | 19:17 |
blackburn | yeah | 19:17 |
blackburn | agree | 19:17 |
@sonney2k | blackburn, then we have to consolidate a bit what we currently have - clone() / duplicate() :D | 19:18 |
blackburn | clone | 19:18 |
blackburn | should be all clone I mean | 19:18 |
@sonney2k | blackburn, you just want one clone function instead of deep/shallow copy? | 19:18 |
blackburn | yes why not? | 19:18 |
blackburn | ahh stop | 19:19 |
@sonney2k | how can you distinguish deep from shallow? | 19:19 |
blackburn | do we really need deep? | 19:19 |
@sonney2k | there are cases where we do (but rare) | 19:21 |
@sonney2k | pluskid had one IIRC for KNN | 19:21 |
blackburn | I can't really get the case | 19:22 |
blackburn | in multiclass machines shallow is enough | 19:22 |
@sonney2k | blackburn, well there will be cases for sure | 19:23 |
@sonney2k | e.g. when you want to have a clone of the features etc | 19:23 |
blackburn | this can be done manually | 19:23 |
@sonney2k | it is better to not do it manually | 19:23 |
blackburn | it is pretty rare | 19:24 |
@sonney2k | but have it inplace | 19:24 |
@sonney2k | yes true | 19:24 |
@sonney2k | but will appear | 19:24 |
@sonney2k | I don't mind having copy() (like in python) do shallow copy only | 19:24 |
@sonney2k | and then add some deep_copy() later | 19:24 |
blackburn | yeah clone for shallow and something deep for deep | 19:24 |
@sonney2k | deep_clone then | 19:25 |
@sonney2k | blackburn, btw I prefer copy to be closer to python syntax but not s strong preference | 19:26 |
blackburn | sonney2k: clone is java way :) | 19:26 |
blackburn | but actually we are mainly python | 19:26 |
blackburn | so yes, may be copy is bettter | 19:26 |
@sonney2k | fork, duplicate, clone, copy ... | 19:27 |
blackburn | sonney2k: are these names of methods we have? | 19:28 |
blackburn | :D | 19:29 |
@sonney2k | no | 19:29 |
@sonney2k | any will do | 19:29 |
@sonney2k | however I would really like to make it explicit that this is a shallow operation | 19:29 |
@sonney2k | but I don't know | 19:29 |
@sonney2k | I guess deep copy will be tough (infinite recursion...) | 19:30 |
blackburn | sonney2k: have you seen performance on road signs I obtained with freak? | 19:30 |
@sonney2k | actually shallow can lead to that too :D | 19:30 |
@sonney2k | 90%? | 19:31 |
blackburn | yeah but that's for grayscale yet | 19:31 |
blackburn | I expect it to be better anyway | 19:31 |
blackburn | I find it impressive for 512 bits | 19:31 |
blackburn | earlier I've been using ~2100 floats | 19:32 |
@sonney2k | but you didn't tune for #bits | 19:33 |
blackburn | sonney2k: it is somewhat not really important | 19:33 |
blackburn | sonney2k: more bits won't do that better | 19:34 |
blackburn | authors state it and actually it is already too dense with 512 pairs | 19:34 |
blackburn | sonney2k: did you get the idea? | 19:34 |
@sonney2k | what idea? | 19:35 |
blackburn | sonney2k: of FREAKs | 19:35 |
-!- n4nd0 [~nando@5.Red-2-137-19.dynamicIP.rima-tde.net] has joined #shogun | 19:40 | |
@sonney2k | blackburn, no idea about it | 19:41 |
blackburn | sonney2k: well it just a set of 1/0 according to pairs http://2.bp.blogspot.com/-biicFdgjVCw/T8dysvzxblI/AAAAAAAAF0A/RqxgcvG3ssE/s400/freakdescriptoor.JPG | 19:42 |
-!- gsomix [~gsomix@109.169.130.0] has quit [Quit: Ex-Chat] | 19:42 | |
-!- gsomix [~gsomix@109.169.130.0] has joined #shogun | 19:42 | |
blackburn | each pair can be 1 if mean intensity of first point is more that mean intensity of second point | 19:42 |
blackburn | 0 otherwise | 19:43 |
blackburn | so no reason to make more pairs actually | 19:43 |
@sonney2k | blackburn, isnt' that a bit similar to HOG? | 19:43 |
blackburn | sonney2k: no, HOG is gradient based decriptor | 19:44 |
@sonney2k | at least it will be scale invarient again | 19:44 |
@sonney2k | brightness etc | 19:44 |
@sonney2k | blackburn, but in HOG they compute differences right? | 19:44 |
@sonney2k | blackburn, how are the points for the pairs chosen? seems crucial... | 19:44 |
blackburn | sonney2k: well it is pretty general view, in hog you use gradient of image | 19:45 |
blackburn | sonney2k: they are coarse-to-fine | 19:45 |
blackburn | sonney2k: in freak you don't compute gradient, just differences of mean intensities | 19:45 |
blackburn | sonney2k: pairs are selected in a data dependent fashion, general pattern is http://infoscience.epfl.ch/record/175537/files/2069.pdf (page 4 figure 4) | 19:46 |
-!- n4nd0 [~nando@5.Red-2-137-19.dynamicIP.rima-tde.net] has quit [Ping timeout: 272 seconds] | 19:51 | |
blackburn | sonney2k: do you have some camera in your car? :D | 19:54 |
@sonney2k | blackburn, I can install one :D | 19:55 |
blackburn | road signs are a little different here so GTSRB training set is a different too | 19:55 |
blackburn | however speed signs are mostly the same | 19:56 |
blackburn | sonney2k: did you use LBP for these coffin paper examples? | 19:57 |
@sonney2k | blackburn, yes - vojtech did that experiment though | 19:58 |
@sonney2k | blackburn, FREAK really looks cool (damn fast...) | 19:58 |
blackburn | sonney2k: I did not manage to optimize to use bools yet | 19:59 |
blackburn | no idea how to that actually | 19:59 |
@sonney2k | blackburn, why bools? just use bytes | 19:59 |
@sonney2k | or even bit ops | 19:59 |
blackburn | sonney2k: well actually FREAK implementation outputs in unsigned chars | 20:00 |
blackburn | what I do now is | 20:00 |
blackburn | extract bits and consturct 512 dimensional uint8_t dense features | 20:00 |
blackburn | but that's really suboptimal | 20:00 |
blackburn | sonney2k: would be cool to use SSE here but no idea how - it should be totally different solver | 20:01 |
blackburn | actually SSE based kernel could be pretty fast | 20:02 |
blackburn | will check | 20:02 |
CIA-18 | shogun: Soeren Sonnenburg master * rcd1f70c / tests/regression/python_modular/generator.py : adjust paths to tests in generator - https://github.com/shogun-toolbox/shogun/commit/cd1f70cfecd073f91010642884f6fa2ca111f824 | 20:02 |
@sonney2k | blackburn, if you compute things on the fly it is probably more expensive than the dot etc stuff | 20:03 |
blackburn | sonney2k: compute what? | 20:03 |
blackburn | you mean extracting bits? yes, for linear machines it will be slower | 20:04 |
blackburn | I am curious whether kernel thing would be fast enough here | 20:05 |
@sonney2k | blackburn, what for? | 20:05 |
@sonney2k | the dot features way is the fastest one ... | 20:05 |
blackburn | sonney2k: I have seen DNF based kernel | 20:05 |
blackburn | especially for binary features | 20:06 |
blackburn | oops why i use uint8_t :D | 20:08 |
blackburn | sonney2k: is uint8_t and bool equal perfomance-wise? | 20:12 |
@sonney2k | depends on cpu and bool impl. why do you even need a bool /uint? | 20:17 |
@sonney2k | I mean if you do x <y ? 1 : 0 ? | 20:17 |
blackburn | sonney2k: but I put precomputed features to densefeatures | 20:19 |
shogun-buildbot_ | build #264 of deb3 - modular_interfaces is complete: Success [build successful] Build details are at http://www.shogun-toolbox.org/buildbot/builders/deb3%20-%20modular_interfaces/builds/264 | 20:42 |
@sonney2k | blackburn, if you precompute things then it is probably best to bit encode things | 23:57 |
blackburn | encode like? | 23:57 |
@sonney2k | 0110010001 :D | 23:57 |
blackburn | well it is already encoded | 23:58 |
@sonney2k | I mean instead of using 1 byte for 1 bit you use 1 byte for 8 | 23:59 |
blackburn | and redefine add and dot? | 23:59 |
--- Log closed Mon Aug 06 00:00:17 2012 |
Generated by irclog2html.py 2.10.0 by Marius Gedminas - find it at mg.pov.lt!