IRC logs of #shogun for Friday, 2012-11-23

--- 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 #shogun09:19
-!- ptizoom [~christian@79-71-89-182.dynamic.dsl.as9105.com] has joined #shogun09:21
-shogungit:#shogun- [shogun] sonney2k pushed 1 new commit to master: https://github.com/shogun-toolbox/shogun/commit/73f922810bc07524be102def2d90022992fa4ea909:55
-shogungit:#shogun- shogun/master 73f9228 Soeren Sonnenburg: use DynArray instead of std::vector in interface09:55
@sonney2kwiking, please check if it works with dynarray10:00
wikingok i'll do10:00
@sonney2kwiking, I am going put all the load* functions from features into SG* datatypes10:00
@sonney2kand then refactor *features to use it and even worse refactor sparse/string features to use the SGStructures10:01
@sonney2kSG datatypes that is10:01
@sonney2kMath is now mostly cleaned up now (stuff that belongs to vector in SGVector)10:02
@sonney2kwiking, btw http://shogun-toolbox.org/buildbot/builders/deb3%20-%20modular_interfaces/builds/666/steps/compile%20python_modular/logs/warnings%20%2839%2910: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
@sonney2kcould you write a bit what this is?10:03
wikingyeah as soon as i can finish some other patches :)10:03
wikingwoah10:17
wikingi've created a MONSTER!:10:17
wikinglatent svm10:17
wikingwithout CCP10:17
wikingCCCP10:17
wikingand it's like twice faster than the CCCP version10:17
wikingand more accurate10:17
wikingyeeey10:17
wiking:>>10:17
wikingsonney2k: here?10:18
sonne|workwiking: sounds cool :)11:00
wikingsonne|work: so the question i was about to ask is11:04
wikingthat we have now libmrm libp3bm etc etc and now this other one i've created11:05
wikingbut these are not strictly solvers for structure output11:05
wikingthey are general solvers that can solve an unconstrained optimization in the form of: 1/2\lambda ||w||^2 + R(w)11:06
wikingwhere R(w) is a risk function11:06
sonne|workwiking: so you suggest to write some optimization package / classes?11:06
wikingsonne|work: well to move it out from structure/ directory11:07
sonne|workwe wanted to wrap libqp / etc etc anyways so would make sense11:07
sonne|workyeah sure11:07
wikingmaybe to optimization/ ?11:07
sonne|workfeel free to create it11:07
wikingwould that be  agood place for it?11:07
sonne|workwiking: only issue is that external libs should stay in some external dir11:10
sonne|workn4nd0: hey - long time no see here in #shogun11:11
wikingmmm11:11
wikingwell the thing is11:11
wikingthat now we have in optimization11:11
wikinglbfgs11:11
wikingthat is completely external11:11
wikingso that and liblinear11:11
sonne|workwiking: otherwise all the libsvm etc stuff from external should be in svm's again11:11
wikingshould rather move under11:11
wikinglib/external11:11
wikingas libocas and libqp is already there11:12
wikingor?11:12
wikingor create an ./external11:12
wikingand that should contain all our external lib imports11:12
sonne|workif this is a lib we just use + modified then yes11:12
sonne|workwhat would fit in optimization/ are some c++ objects wrapping these libs11:13
wikingwell both liblinear and lbfgs are just external libs11:13
wikingor just simply have optimization/external11:13
wikingand then we put there the imported files11:13
wikingand in optimization we have the files created by ourselves11:13
wikingand there could be as well that wrapper class11:13
sonne|workI don't like having multiple external/ directories11:22
sonne|workits also messy IMHO11:22
sonne|workone external is just fine11:22
n4nd0sonne|work: hi! not so long time I think :)12:05
n4nd0I had an exam two days ago12:06
n4nd0gtg now, tty later12: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 #shogun16:35
-!- n4nd0 [~nando@n182-p206.kthopen.kth.se] has quit [Client Quit]16:39
-!- n4nd0 [~nando@n182-p206.kthopen.kth.se] has joined #shogun16: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/2fcfa0d4d3b8f7d90452f29dc6795ff29a7a511c17:36
-shogungit:#shogun- shogun/master 2fcfa0d Soeren Sonnenburg: fix a number of doxygen errors17: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 #shogun18: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 #shogun19:32
@sonney2kwiking, what does the w=0 in CCCSOSVM(CStructuredModel* model, SGVector<float64_t> w = 0); stand for?19:42
@sonney2kI don't really understand what it does19:43
@sonney2kwiking, 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 #shogun19:48
@sonney2kwiking, 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
wikingsonney2k: yes19:52
wikingit says19:52
wikingsonney2k: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
wikingfrom the SGSparseVector.h19:53
@sonney2kwiking, ohh and ::dot_prod_symmetric will crash if one vector has no elements19:53
@sonney2kok I see the comment19:54
@sonney2kbut I still don't understand how you compute the dot prod19:54
wikingthis u ask 1 month after19:55
wikingyou have applied the patch? :)19:55
wikingwhich part u dont understand?19:56
@sonney2kwiking, better now than never19:56
@sonney2kfirst of all what if one vector has zero length19:56
@sonney2kit will crash19: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
wikingright after the function19:57
wikingso that's the first thing it checks19:57
wikingso it will not crash19:58
@sonney2ksorry this one is my bad19:58
wikingok next..? :)19:58
wikingtrust me this code is solid19:58
@sonney2kbut then what does the cmp_dot_prod_symmetry_fast do?19:58
wikinghas been used in another sys for years19:59
@sonney2kI totally don't understand it...19:59
@sonney2kmaybe I am too tired or sth but this it doesnt' get better19:59
wiking:D20:00
@sonney2kwiking, why are there 3 functions for this dot prod?20:01
wikingwell to be fast20:02
wikingas if u dont do this checks20:02
wikingyou end up doing way too much work20:02
@sonney2kthe only thing I understand is that it makes sense to iterate over vector with the least number of elements as often as possible20:02
@sonney2kbut I still don't understand what cmp_dot_prod_symmetry_fast does20:03
@sonney2kand what is floor_log for?20:03
wikinghave u checked these func?20:04
@sonney2kwiking, I totally understand dot_prod_symmetric20:04
@sonney2kso at least sth20:05
@sonney2kwiking, but the ::dot_prod_asymmetric one??20:12
wikinghttps://www.everlane.com/black-friday20:13
wikingthis should be our motto as well :D20:14
blackburnyeah lets close until 201420:16
@sonney2k201320:16
blackburnwhy 2013?20:16
wikingsonney2k: gdb it20:16
blackburnhave some specific reason? :)20:16
wikingif u dont trust20:16
blackburnlet me explain20:16
blackburnwhat is going on here?20:20
blackburn:D20:20
wikingreally?20:20
wikingcomeooon20:20
blackburnwiking: why it multiplies each of a with each of b?20:21
blackburnah20:22
blackburnsorry20:22
blackburnokay it works20:22
blackburnbut we should use eigen and http://www.roflcat.com/images/cats/I_Should_Buy_A_Boat.jpg20:22
wiking:DDDD20:23
wikingyeah i've thought about using eigen20:23
wikingbut interfacing is a problem20:23
wikingso we should rightout use eigen for sparse vector representation20:23
blackburnis there anything cool I should buy this black friday?20:24
wikingas i couldn't find a way to do a simple wrapping like in case of densevector20:24
blackburnnot taking a boat into account20:24
blackburnwiking: yeah it is a problem20:25
wikingand if we start copying data20:25
wikingthen it's already too much time/resource to waste20:25
-shogungit:#shogun- [shogun] sonney2k pushed 1 new commit to master: https://github.com/shogun-toolbox/shogun/commit/49682e5e5390f77f4cd15dc6420845f58fdd004a21:59
-shogungit:#shogun- shogun/master 49682e5 Soeren Sonnenburg: add some more documentation21:59
blackburnsonney2k: actually I prefer macroses that require ; in the end22:00
blackburndon't you think it is better?22:00
@sonney2kblackburn, doxygen will then complain about this one - I would prefer not to have macros in .h ...22:06
@sonney2kbut yes I prefer ; at macro ends too22:06
blackburnsonney2k: btw I managed to use macroses to generate code22:06
blackburntake a look22:06
blackburnhttps://github.com/lisitsyn/tapkee/blob/master/tapkee/utils/logging.hpp22:07
blackburnsonney2k: I have got a feeling we had some problems with that before22:07
@sonney2kblackburn, we use similar stuff in shogun...22:09
blackburnsonney2k: where?22:09
@sonney2kblackburn, everywhere in interfaces and load/save22:09
blackburnah right22:09
blackburnsonney2k: no wait22:09
blackburnsonney2k: I form name of function with macro parameter22:09
blackburnmessage_##LEVEL22:10
@sonney2kyeah I've seen22:10
@sonney2kblackburn, do you know how eigen3's sparse vector is organized?22:11
blackburnsonney2k: a vector of pairs in a nutshell I'd say22:11
blackburnjust like we do22:11
@sonney2khmmhh I think it is two separate arrays? http://eigen3.sourcearchive.com/documentation/3.0.0-2/CompressedStorage_8h_source.html22:13
@sonney2khttp://eigen3.sourcearchive.com/documentation/3.0.0-2/SparseVector_8h_source.html22:13
blackburnright22:13
@sonney2kat least it has CompressedStorage<Scalar,Index> m_data;22:13
blackburnyeah sure22:13
blackburnmy answer was just guess22:13
blackburnbut it makes sense22:14
@sonney2khmmhh thats not really efficient :/22:14
blackburnwhy so?22:14
@sonney2kiterating over arrays means iterating over different memory locations22:14
@sonney2kso no linear memory reads are possible22:15
@sonney2kI guess that is the price one has to pay when using the standard row/column compressed storage22:15
blackburnokay I got your point22:16
blackburnbut I am not sure about losses22:16
blackburnit would be consistent to get some loss here but how much?22:16
blackburnit can be kinda microoptimization22:17
@sonney2kI designed this in 2000 with this in mind and it is certainly not any different other than storage wise22:19
blackburnso well22:20
blackburnyou feel linear memory read is better22:20
blackburnbecause it allows to cache right?22:20
@sonney2kyes linear memory read is fast, random access is not22:21
@sonney2keigen3's dynamicsparsematrix is like ours22:22
blackburnwell actually access to two arrays with the same offset should be efficient22:22
blackburnmy understanding of assembly makes me think it is exactly 2 ops22:23
blackburnso it is not really random access22:23
blackburnone should rather measure :D22:24
blackburnbut I should rather sleep :D22:25
shogun-buildbotbuild #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 #shogun23: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!