--- Log opened Fri Nov 23 00:00:15 2012 | ||
-!- blackburn [~blackburn@188.168.2.62] has quit [Quit: Leaving.] | 08:33 | |
-!- n4nd0 [~nando@s83-179-44-135.cust.tele2.se] has joined #shogun | 09:19 | |
-!- ptizoom [~christian@79-71-89-182.dynamic.dsl.as9105.com] has joined #shogun | 09:21 | |
-shogungit:#shogun- [shogun] sonney2k pushed 1 new commit to master: https://github.com/shogun-toolbox/shogun/commit/73f922810bc07524be102def2d90022992fa4ea9 | 09:55 | |
-shogungit:#shogun- shogun/master 73f9228 Soeren Sonnenburg: use DynArray instead of std::vector in interface | 09:55 | |
@sonney2k | wiking, please check if it works with dynarray | 10:00 |
---|---|---|
wiking | ok i'll do | 10:00 |
@sonney2k | wiking, I am going put all the load* functions from features into SG* datatypes | 10:00 |
@sonney2k | and then refactor *features to use it and even worse refactor sparse/string features to use the SGStructures | 10:01 |
@sonney2k | SG datatypes that is | 10:01 |
@sonney2k | Math is now mostly cleaned up now (stuff that belongs to vector in SGVector) | 10:02 |
@sonney2k | wiking, btw http://shogun-toolbox.org/buildbot/builders/deb3%20-%20modular_interfaces/builds/666/steps/compile%20python_modular/logs/warnings%20%2839%29 | 10:02 |
@sonney2k | /home/buildbot/slaves/shogun-slave3/deb3_-_modular_interfaces/build/src/shogun/structure/CCSOSVM.h:35: warning: Compound shogun::CCCSOSVM is not documented. | 10:02 |
@sonney2k | could you write a bit what this is? | 10:03 |
wiking | yeah as soon as i can finish some other patches :) | 10:03 |
wiking | woah | 10:17 |
wiking | i've created a MONSTER!: | 10:17 |
wiking | latent svm | 10:17 |
wiking | without CCP | 10:17 |
wiking | CCCP | 10:17 |
wiking | and it's like twice faster than the CCCP version | 10:17 |
wiking | and more accurate | 10:17 |
wiking | yeeey | 10:17 |
wiking | :>> | 10:17 |
wiking | sonney2k: here? | 10:18 |
sonne|work | wiking: sounds cool :) | 11:00 |
wiking | sonne|work: so the question i was about to ask is | 11:04 |
wiking | that we have now libmrm libp3bm etc etc and now this other one i've created | 11:05 |
wiking | but these are not strictly solvers for structure output | 11:05 |
wiking | they are general solvers that can solve an unconstrained optimization in the form of: 1/2\lambda ||w||^2 + R(w) | 11:06 |
wiking | where R(w) is a risk function | 11:06 |
sonne|work | wiking: so you suggest to write some optimization package / classes? | 11:06 |
wiking | sonne|work: well to move it out from structure/ directory | 11:07 |
sonne|work | we wanted to wrap libqp / etc etc anyways so would make sense | 11:07 |
sonne|work | yeah sure | 11:07 |
wiking | maybe to optimization/ ? | 11:07 |
sonne|work | feel free to create it | 11:07 |
wiking | would that be agood place for it? | 11:07 |
sonne|work | wiking: only issue is that external libs should stay in some external dir | 11:10 |
sonne|work | n4nd0: hey - long time no see here in #shogun | 11:11 |
wiking | mmm | 11:11 |
wiking | well the thing is | 11:11 |
wiking | that now we have in optimization | 11:11 |
wiking | lbfgs | 11:11 |
wiking | that is completely external | 11:11 |
wiking | so that and liblinear | 11:11 |
sonne|work | wiking: otherwise all the libsvm etc stuff from external should be in svm's again | 11:11 |
wiking | should rather move under | 11:11 |
wiking | lib/external | 11:11 |
wiking | as libocas and libqp is already there | 11:12 |
wiking | or? | 11:12 |
wiking | or create an ./external | 11:12 |
wiking | and that should contain all our external lib imports | 11:12 |
sonne|work | if this is a lib we just use + modified then yes | 11:12 |
sonne|work | what would fit in optimization/ are some c++ objects wrapping these libs | 11:13 |
wiking | well both liblinear and lbfgs are just external libs | 11:13 |
wiking | or just simply have optimization/external | 11:13 |
wiking | and then we put there the imported files | 11:13 |
wiking | and in optimization we have the files created by ourselves | 11:13 |
wiking | and there could be as well that wrapper class | 11:13 |
sonne|work | I don't like having multiple external/ directories | 11:22 |
sonne|work | its also messy IMHO | 11:22 |
sonne|work | one external is just fine | 11:22 |
n4nd0 | sonne|work: hi! not so long time I think :) | 12:05 |
n4nd0 | I had an exam two days ago | 12:06 |
n4nd0 | gtg now, tty later | 12:10 |
-!- n4nd0 [~nando@s83-179-44-135.cust.tele2.se] has quit [Quit: leaving] | 12:10 | |
-!- zxtx [~zv@ool-45750cfe.dyn.optonline.net] has quit [Ping timeout: 240 seconds] | 13:12 | |
-!- n4nd0 [~nando@n182-p206.kthopen.kth.se] has joined #shogun | 16:35 | |
-!- n4nd0 [~nando@n182-p206.kthopen.kth.se] has quit [Client Quit] | 16:39 | |
-!- n4nd0 [~nando@n182-p206.kthopen.kth.se] has joined #shogun | 16:39 | |
-!- sonne|work [~sonnenbu@194.78.35.195] has left #shogun [] | 17:05 | |
-shogungit:#shogun- [shogun] sonney2k pushed 1 new commit to master: https://github.com/shogun-toolbox/shogun/commit/2fcfa0d4d3b8f7d90452f29dc6795ff29a7a511c | 17:36 | |
-shogungit:#shogun- shogun/master 2fcfa0d Soeren Sonnenburg: fix a number of doxygen errors | 17:36 | |
-!- n4nd0 [~nando@n182-p206.kthopen.kth.se] has quit [Ping timeout: 252 seconds] | 17:41 | |
-!- n4nd0 [~nando@s83-179-44-135.cust.tele2.se] has joined #shogun | 18:30 | |
-!- n4nd0 [~nando@s83-179-44-135.cust.tele2.se] has quit [Ping timeout: 240 seconds] | 19:32 | |
-!- blackburn [~blackburn@109.226.125.245] has joined #shogun | 19:32 | |
@sonney2k | wiking, what does the w=0 in CCCSOSVM(CStructuredModel* model, SGVector<float64_t> w = 0); stand for? | 19:42 |
@sonney2k | I don't really understand what it does | 19:43 |
@sonney2k | wiking, I assume it is supposed to alloc an empty vector? let me rather write CCCSOSVM(CStructuredModel* model, SGVector<float64_t> w = SGVector<float64_t>()); | 19:46 |
-!- zxtx [~zv@ool-45750cfe.dyn.optonline.net] has joined #shogun | 19:48 | |
@sonney2k | wiking, ohh and I can not make any sense out of the sparse_dot stuff in SGSparseVector... it doesn't say that sth has to be sorted nor do I understand the need for floor_log symmetric dot etc... | 19:51 |
wiking | sonney2k: yes | 19:52 |
wiking | it says | 19:52 |
wiking | sonney2k: | 19:53 |
wiking | ** @brief template class SGSparseVector * The assumtion is that the stored SGSparseVectorEntry<T>* vector is ordered * by SGSparseVectorEntry.feat_index in non-decreasing order. * This has to be assured by the user of the class. | 19:53 |
wiking | from the SGSparseVector.h | 19:53 |
@sonney2k | wiking, ohh and ::dot_prod_symmetric will crash if one vector has no elements | 19:53 |
@sonney2k | ok I see the comment | 19:54 |
@sonney2k | but I still don't understand how you compute the dot prod | 19:54 |
wiking | this u ask 1 month after | 19:55 |
wiking | you have applied the patch? :) | 19:55 |
wiking | which part u dont understand? | 19:56 |
@sonney2k | wiking, better now than never | 19:56 |
@sonney2k | first of all what if one vector has zero length | 19:56 |
@sonney2k | it will crash | 19:57 |
wiking | if (a.num_feat_entries == 0 || b.num_feat_entries == 0) | 19:57 |
wiking | return 0; | 19:57 |
wiking | static T sparse_dot(const SGSparseVector<T>& a, const SGSparseVector<T>& b) | 19:57 |
wiking | right after the function | 19:57 |
wiking | so that's the first thing it checks | 19:57 |
wiking | so it will not crash | 19:58 |
@sonney2k | sorry this one is my bad | 19:58 |
wiking | ok next..? :) | 19:58 |
wiking | trust me this code is solid | 19:58 |
@sonney2k | but then what does the cmp_dot_prod_symmetry_fast do? | 19:58 |
wiking | has been used in another sys for years | 19:59 |
@sonney2k | I totally don't understand it... | 19:59 |
@sonney2k | maybe I am too tired or sth but this it doesnt' get better | 19:59 |
wiking | :D | 20:00 |
@sonney2k | wiking, why are there 3 functions for this dot prod? | 20:01 |
wiking | well to be fast | 20:02 |
wiking | as if u dont do this checks | 20:02 |
wiking | you end up doing way too much work | 20:02 |
@sonney2k | the only thing I understand is that it makes sense to iterate over vector with the least number of elements as often as possible | 20:02 |
@sonney2k | but I still don't understand what cmp_dot_prod_symmetry_fast does | 20:03 |
@sonney2k | and what is floor_log for? | 20:03 |
wiking | have u checked these func? | 20:04 |
@sonney2k | wiking, I totally understand dot_prod_symmetric | 20:04 |
@sonney2k | so at least sth | 20:05 |
@sonney2k | wiking, but the ::dot_prod_asymmetric one?? | 20:12 |
wiking | https://www.everlane.com/black-friday | 20:13 |
wiking | this should be our motto as well :D | 20:14 |
blackburn | yeah lets close until 2014 | 20:16 |
@sonney2k | 2013 | 20:16 |
blackburn | why 2013? | 20:16 |
wiking | sonney2k: gdb it | 20:16 |
blackburn | have some specific reason? :) | 20:16 |
wiking | if u dont trust | 20:16 |
blackburn | let me explain | 20:16 |
blackburn | what is going on here? | 20:20 |
blackburn | :D | 20:20 |
wiking | really? | 20:20 |
wiking | comeooon | 20:20 |
blackburn | wiking: why it multiplies each of a with each of b? | 20:21 |
blackburn | ah | 20:22 |
blackburn | sorry | 20:22 |
blackburn | okay it works | 20:22 |
blackburn | but we should use eigen and http://www.roflcat.com/images/cats/I_Should_Buy_A_Boat.jpg | 20:22 |
wiking | :DDDD | 20:23 |
wiking | yeah i've thought about using eigen | 20:23 |
wiking | but interfacing is a problem | 20:23 |
wiking | so we should rightout use eigen for sparse vector representation | 20:23 |
blackburn | is there anything cool I should buy this black friday? | 20:24 |
wiking | as i couldn't find a way to do a simple wrapping like in case of densevector | 20:24 |
blackburn | not taking a boat into account | 20:24 |
blackburn | wiking: yeah it is a problem | 20:25 |
wiking | and if we start copying data | 20:25 |
wiking | then it's already too much time/resource to waste | 20:25 |
-shogungit:#shogun- [shogun] sonney2k pushed 1 new commit to master: https://github.com/shogun-toolbox/shogun/commit/49682e5e5390f77f4cd15dc6420845f58fdd004a | 21:59 | |
-shogungit:#shogun- shogun/master 49682e5 Soeren Sonnenburg: add some more documentation | 21:59 | |
blackburn | sonney2k: actually I prefer macroses that require ; in the end | 22:00 |
blackburn | don't you think it is better? | 22:00 |
@sonney2k | blackburn, doxygen will then complain about this one - I would prefer not to have macros in .h ... | 22:06 |
@sonney2k | but yes I prefer ; at macro ends too | 22:06 |
blackburn | sonney2k: btw I managed to use macroses to generate code | 22:06 |
blackburn | take a look | 22:06 |
blackburn | https://github.com/lisitsyn/tapkee/blob/master/tapkee/utils/logging.hpp | 22:07 |
blackburn | sonney2k: I have got a feeling we had some problems with that before | 22:07 |
@sonney2k | blackburn, we use similar stuff in shogun... | 22:09 |
blackburn | sonney2k: where? | 22:09 |
@sonney2k | blackburn, everywhere in interfaces and load/save | 22:09 |
blackburn | ah right | 22:09 |
blackburn | sonney2k: no wait | 22:09 |
blackburn | sonney2k: I form name of function with macro parameter | 22:09 |
blackburn | message_##LEVEL | 22:10 |
@sonney2k | yeah I've seen | 22:10 |
@sonney2k | blackburn, do you know how eigen3's sparse vector is organized? | 22:11 |
blackburn | sonney2k: a vector of pairs in a nutshell I'd say | 22:11 |
blackburn | just like we do | 22:11 |
@sonney2k | hmmhh I think it is two separate arrays? http://eigen3.sourcearchive.com/documentation/3.0.0-2/CompressedStorage_8h_source.html | 22:13 |
@sonney2k | http://eigen3.sourcearchive.com/documentation/3.0.0-2/SparseVector_8h_source.html | 22:13 |
blackburn | right | 22:13 |
@sonney2k | at least it has CompressedStorage<Scalar,Index> m_data; | 22:13 |
blackburn | yeah sure | 22:13 |
blackburn | my answer was just guess | 22:13 |
blackburn | but it makes sense | 22:14 |
@sonney2k | hmmhh thats not really efficient :/ | 22:14 |
blackburn | why so? | 22:14 |
@sonney2k | iterating over arrays means iterating over different memory locations | 22:14 |
@sonney2k | so no linear memory reads are possible | 22:15 |
@sonney2k | I guess that is the price one has to pay when using the standard row/column compressed storage | 22:15 |
blackburn | okay I got your point | 22:16 |
blackburn | but I am not sure about losses | 22:16 |
blackburn | it would be consistent to get some loss here but how much? | 22:16 |
blackburn | it can be kinda microoptimization | 22:17 |
@sonney2k | I designed this in 2000 with this in mind and it is certainly not any different other than storage wise | 22:19 |
blackburn | so well | 22:20 |
blackburn | you feel linear memory read is better | 22:20 |
blackburn | because it allows to cache right? | 22:20 |
@sonney2k | yes linear memory read is fast, random access is not | 22:21 |
@sonney2k | eigen3's dynamicsparsematrix is like ours | 22:22 |
blackburn | well actually access to two arrays with the same offset should be efficient | 22:22 |
blackburn | my understanding of assembly makes me think it is exactly 2 ops | 22:23 |
blackburn | so it is not really random access | 22:23 |
blackburn | one should rather measure :D | 22:24 |
blackburn | but I should rather sleep :D | 22:25 |
shogun-buildbot | build #669 of deb3 - modular_interfaces is complete: Failure [failed test ruby_modular] Build details are at http://www.shogun-toolbox.org/buildbot/builders/deb3%20-%20modular_interfaces/builds/669 blamelist: Soeren Sonnenburg <sonne@debian.org> | 22:42 |
-!- n4nd0 [~nando@s83-179-44-135.cust.tele2.se] has joined #shogun | 23:45 | |
--- Log closed Sat Nov 24 00:00:15 2012 |
Generated by irclog2html.py 2.10.0 by Marius Gedminas - find it at mg.pov.lt!