--- Log opened Thu May 10 00:00:37 2012 | ||
-!- cronor [~cronor@g231216163.adsl.alicedsl.de] has quit [Read error: Connection reset by peer] | 00:04 | |
-!- cronor [~cronor@g231216163.adsl.alicedsl.de] has joined #shogun | 00:04 | |
CIA-113 | shogun: Sergey Lisitsyn master * ra0c2a2c / (2 files): Fixed crasher in HomogeneousKernelMap - http://git.io/MSLuYQ | 01:23 |
---|---|---|
CIA-113 | shogun: Sergey Lisitsyn master * r469d3b4 / src/shogun/preprocessor/HomogeneousKernelMap.cpp : | 01:43 |
CIA-113 | shogun: Got HKM to work | 01:43 |
CIA-113 | shogun: - http://git.io/2NKzkw | 01:43 |
-!- av3ngr [av3ngr@nat/redhat/x-roigqstaldablgrl] has joined #shogun | 02:48 | |
blackburn | argh | 02:52 |
blackburn | I have to sleep :D | 02:52 |
blackburn | did first openmp vs pthreads benchmark for dotfeatures | 03:16 |
blackburn | all the same | 03:16 |
-!- blackburn [~qdrgsm@83.234.54.222] has left #shogun [] | 03:17 | |
-!- n4nd0 [~nando@s83-179-44-135.cust.tele2.se] has quit [Ping timeout: 240 seconds] | 03:39 | |
-!- vikram360 [~vikram360@117.192.181.205] has quit [Ping timeout: 248 seconds] | 05:17 | |
-!- vikram360 [~vikram360@117.192.179.160] has joined #shogun | 05:18 | |
-!- wiking [~wiking@78-23-189-112.access.telenet.be] has joined #shogun | 06:37 | |
-!- wiking [~wiking@78-23-189-112.access.telenet.be] has quit [Changing host] | 06:37 | |
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun | 06:37 | |
-!- gsomix [~gsomix@85.26.165.210] has joined #shogun | 06:53 | |
-!- gsomix [~gsomix@85.26.165.210] has quit [Ping timeout: 252 seconds] | 07:05 | |
-!- wiking [~wiking@huwico/staff/wiking] has quit [Read error: Connection reset by peer] | 07:06 | |
-!- wiking_ [~wiking@huwico/staff/wiking] has joined #shogun | 07:06 | |
-!- n4nd0 [~nando@s83-179-44-135.cust.tele2.se] has joined #shogun | 07:37 | |
-!- cronor [~cronor@g231216163.adsl.alicedsl.de] has quit [Read error: Connection reset by peer] | 08:03 | |
-!- wiking_ [~wiking@huwico/staff/wiking] has quit [Quit: wiking_] | 08:04 | |
-!- wiking [~wiking@78-23-189-112.access.telenet.be] has joined #shogun | 08:09 | |
-!- wiking [~wiking@78-23-189-112.access.telenet.be] has quit [Changing host] | 08:09 | |
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun | 08:09 | |
-!- cronor [~cronor@g231216163.adsl.alicedsl.de] has joined #shogun | 08:18 | |
-!- blackburn [~qdrgsm@83.234.54.222] has joined #shogun | 08:57 | |
-!- abn_ [av3ngr@nat/redhat/x-dxmxfeutkmfrzcsf] has joined #shogun | 08:57 | |
-!- abn_ [av3ngr@nat/redhat/x-dxmxfeutkmfrzcsf] has quit [Client Quit] | 08:58 | |
sonne|work | blackburn: we should have a couple of divergences in shogun | 09:09 |
sonne|work | https://en.wikipedia.org/wiki/Bregman_divergence | 09:09 |
sonne|work | cool stuff | 09:09 |
sonne|work | blackburn: sry fall asleep yesterday | 09:09 |
blackburn | sonne|work: hehe | 09:09 |
blackburn | sonne|work: and I lost my sleep | 09:10 |
blackburn | but fixed some things | 09:10 |
sonne|work | me too got woken up by someone very small | 09:10 |
* sonne|work is excited about KL/JS/Bregman divs | 09:11 | |
blackburn | sonne|work: how should it look like? | 09:11 |
blackburn | distance? | 09:11 |
sonne|work | it is a distance between distributions | 09:12 |
sonne|work | I think I even implemented entroy/rel entropy in CMath:: many years back | 09:12 |
sonne|work | actaully bregman divergence can be euclidian distance with appropriate choice of F | 09:13 |
sonne|work | so I guess yes distance it is | 09:13 |
blackburn | sonne|work: however it is a distance between samples | 09:13 |
blackburn | may be some other base would be better | 09:14 |
blackburn | sonne|work: I have idea how to shrink distances code | 09:16 |
blackburn | they are all full of stuff get/free | 09:16 |
blackburn | we need to redefine *only* computing routine | 09:16 |
blackburn | given context of lhs and rhs vector | 09:16 |
-!- cronor [~cronor@g231216163.adsl.alicedsl.de] has quit [Quit: cronor] | 09:16 | |
sonne|work | blackburn: for same feature type - yes | 09:19 |
blackburn | sonne|work: real distances | 09:20 |
blackburn | at least | 09:20 |
sonne|work | yeah | 09:21 |
sonne|work | alright | 09:21 |
sonne|work | work! | 09:21 |
blackburn | yeah I have to go to job too | 09:22 |
blackburn | sonne|work: try fugitive - for example workflow is :Gstatus - check files with '-' :Gcommit | 09:23 |
blackburn | I agree with its description - it is so cool it should be illegal :D | 09:24 |
-!- av3ngr [av3ngr@nat/redhat/x-roigqstaldablgrl] has quit [Quit: That's all folks!] | 09:30 | |
n4nd0 | blackburn: I am checking this fugitive thing, looks nice! | 09:35 |
blackburn | n4nd0: are you using vim too? | 09:35 |
n4nd0 | blackburn: yes | 09:35 |
blackburn | then try all these things too :) | 09:35 |
blackburn | powerline is really neat | 09:35 |
blackburn | and clang_complete is awesome | 09:36 |
n4nd0 | I have not heard about those | 09:36 |
CIA-113 | shogun: Sergey Lisitsyn master * raf84965 / (2 files): | 09:39 |
CIA-113 | shogun: Revert "Exposed Subset in modular #445" | 09:39 |
CIA-113 | shogun: - http://git.io/X5s3kQ | 09:39 |
-!- cronor [~cronor@fb.ml.tu-berlin.de] has joined #shogun | 09:43 | |
-!- vikram360 [~vikram360@117.192.179.160] has quit [Read error: Connection reset by peer] | 09:43 | |
-!- vikram360 [~vikram360@117.192.179.160] has joined #shogun | 09:43 | |
-!- blackburn [~qdrgsm@83.234.54.222] has quit [Quit: Leaving.] | 09:48 | |
-!- av3ngr [~av3ngr@60-241-222-244.static.tpgi.com.au] has joined #shogun | 09:56 | |
-!- nickon [~noneedtok@kotnet-147.kulnet.kuleuven.be] has joined #shogun | 10:09 | |
-!- blackburn [5bdfb203@gateway/web/freenode/ip.91.223.178.3] has joined #shogun | 10:09 | |
n4nd0 | nicococo: hey! how is it going? | 10:11 |
n4nd0 | nicococo: do you have a moment? | 10:11 |
sonne|work | nicococo: btw I don't think we should even consider SO with kernels | 10:18 |
sonne|work | it has no relevance in practise | 10:19 |
sonne|work | c | 10:19 |
blackburn | sonne|work: did you notice I accidentally enlarged shogun by 10k LoC? :D | 10:20 |
sonne|work | blackburn: why that? | 10:21 |
blackburn | sonne|work: slep | 10:21 |
blackburn | SLEP | 10:21 |
sonne|work | oha | 10:21 |
sonne|work | does anything in there work already? | 10:21 |
blackburn | sonne|work: where? | 10:21 |
sonne|work | slep + shogun? | 10:21 |
blackburn | not now but first SGObject regressor to be merged soon | 10:22 |
sonne|work | ic | 10:22 |
sonne|work | back to work... | 10:22 |
blackburn | sonne|work: I tried ecoc this night | 10:28 |
sonne|work | which scheme? | 10:28 |
blackburn | random d | 10:29 |
blackburn | dense and sparse | 10:29 |
blackburn | low performance | 10:29 |
blackburn | lower than OvR | 10:29 |
blackburn | so probably need data dependent scheme | 10:29 |
sonne|work | blackburn: I guess this is only useful for *many* classes | 10:29 |
sonne|work | random I mean | 10:29 |
blackburn | yes and may be not linear models | 10:29 |
blackburn | I can easily imagine some class pairs or so are not linearly separable | 10:30 |
sonne|work | also I am no longer that convinced that the +1 / -1 choice in sampling scheme is that good ... | 10:30 |
sonne|work | anayway back to work | 10:30 |
blackburn | :D | 10:30 |
blackburn | ok work work | 10:30 |
blackburn | I have nothing to do here | 10:30 |
blackburn | may be I shall drink tea | 10:30 |
blackburn | hmm | 10:30 |
n4nd0 | sonne|work: no kernels used in SO in practise?? | 10:33 |
sonne|work | n4nd0: it is *very very very* slow | 10:33 |
n4nd0 | :( | 10:34 |
wiking | blackburn: yo what happened with HKM :) | 10:34 |
sonne|work | so even 100 sequences with kernels is HUGE SCALE | 10:34 |
sonne|work | not largescale! | 10:34 |
wiking | blackburn: since i'm just finishing up the example code for it | 10:34 |
blackburn | wiking: fixed already | 10:34 |
* sonne|work work | 10:34 | |
wiking | blackburn: what was the problem? the bug was because of the sgvector/matrix changes? | 10:34 |
blackburn | wiking: yes | 10:34 |
wiking | blackburn https://fbcdn-sphotos-a.akamaihd.net/hphotos-ak-snc7/s320x320/576809_340925829308530_100001733476787_945068_1478954397_n.jpg | 10:35 |
wiking | blackburn: "what's the does the acronym HELP stands for?" "???" "Bring a liter of vodka" | 10:35 |
wiking | of course only works in hungarian | 10:35 |
wiking | :) | 10:35 |
blackburn | hungarian lessons | 10:36 |
blackburn | :D | 10:36 |
-!- av3ngr [~av3ngr@60-241-222-244.static.tpgi.com.au] has quit [Quit: That's all folks!] | 10:50 | |
-!- eric_ [2e1fd566@gateway/web/freenode/ip.46.31.213.102] has joined #shogun | 11:08 | |
eric_ | hi all | 11:08 |
n4nd0 | hey eric_ | 11:11 |
wiking | hey | 11:21 |
-!- wiking [~wiking@huwico/staff/wiking] has quit [Remote host closed the connection] | 11:31 | |
CIA-113 | shogun: Viktor Gal master * rb8e0fa9 / (2 files): | 11:31 |
CIA-113 | shogun: Minor fixes for evaluation_cross_validation_multiclass | 11:31 |
CIA-113 | shogun: - http://git.io/z2anIw | 11:31 |
CIA-113 | shogun: Soeren Sonnenburg master * rc4a34c1 / (2 files): | 11:31 |
CIA-113 | shogun: Merge pull request #518 from vigsterkr/master | 11:31 |
CIA-113 | shogun: - http://git.io/irq-jA | 11:32 |
-!- wiking [~wiking@vpnd147.ugent.be] has joined #shogun | 11:32 | |
-!- wiking [~wiking@vpnd147.ugent.be] has quit [Changing host] | 11:32 | |
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun | 11:32 | |
n4nd0 | sonne|work: is there any problem with using friend classes? | 11:43 |
sonne|work | n4nd0: avoid if possible - you must have a very good reason to use it... | 11:45 |
n4nd0 | sonne|work: I am going to think of it a bit more and if I still think that it makes sense I will try to convince you ;) | 11:45 |
sonne|work | everyone is doing that these days | 11:46 |
sonne|work | :D | 11:46 |
blackburn | sonne|work: is it true that some editor said about your paper 'it is already in shogun'? | 11:47 |
sonne|work | no | 11:47 |
blackburn | chris said you had some issue like that | 11:47 |
sonne|work | but someone said that we should try shogun - it must have faster methods than the one we presented | 11:48 |
blackburn | ahahahaha | 11:48 |
n4nd0 | :D that's fun | 11:48 |
sonne|work | I usually had the algorithms in shogun before even considering to write a paper | 11:48 |
sonne|work | that *never* was a problem | 11:49 |
blackburn | sonne|work: chris has some algo implemented | 11:49 |
sonne|work | the only problem was that people used this and didn't know what to cite | 11:49 |
blackburn | but not yet accepted | 11:49 |
blackburn | to ECML | 11:49 |
sonne|work | so it is good to have a tech report | 11:49 |
sonne|work | or sth | 11:49 |
blackburn | so we think whether to merge it before deadline | 11:49 |
sonne|work | as I said I *never* had a problem wrt that | 11:50 |
blackburn | hmm ok | 11:50 |
-!- pluskid [~pluskid@li400-235.members.linode.com] has joined #shogun | 11:52 | |
sonne|work | blackburn: I know a couple of people though that kept stuff secret and then it never went into shogun | 11:55 |
n4nd0 | :-O | 11:55 |
blackburn | sonne|work: I'd say most of stuff is not worth secret | 11:55 |
blackburn | SVM is worth for example :D | 11:55 |
sonne|work | yeah but think of it - you have a toolbox with 1000 methods | 11:56 |
sonne|work | now 1 new is in there with some strange name | 11:56 |
sonne|work | so what? | 11:56 |
sonne|work | who will even try this one out? | 11:56 |
blackburn | hehe no one | 11:56 |
sonne|work | exactly | 11:56 |
blackburn | I don't think we have more than 100 users actually | 11:56 |
sonne|work | a lot more | 11:56 |
blackburn | *active* users | 11:56 |
sonne|work | we have like 200 unique visitors on the website per day | 11:57 |
blackburn | those are using it day by day? | 11:57 |
blackburn | what do I think is we need to heavy promote 2.0 | 11:57 |
blackburn | we would need more applications though | 11:58 |
sonne|work | well if everyone here does - yes | 11:58 |
sonne|work | yes cool applications get you users | 11:58 |
sonne|work | anyway | 11:58 |
sonne|work | food | 11:58 |
blackburn | work? | 11:58 |
blackburn | ah | 11:58 |
blackburn | food :D | 11:58 |
blackburn | n4nd0: where do you want to establish friendship in shogun? | 11:59 |
blackburn | :D | 11:59 |
n4nd0 | :) | 11:59 |
n4nd0 | I have to think a bit more about it, but I'll let you know soon probably | 12:00 |
blackburn | n4nd0: does pluskid's concept fit to your ideas of SO labels? | 12:01 |
pluskid | sonne|work: is the new CLabels hierarchy OK? | 12:02 |
blackburn | pluskid: he is sonne|food now | 12:02 |
pluskid | haha | 12:02 |
blackburn | pluskid: but let me say it is ok for me :) | 12:02 |
pluskid | cool! | 12:03 |
n4nd0 | it looks reasonable for me as well | 12:03 |
pluskid | n4nd0: long time no see | 12:03 |
blackburn | pluskid: would require casting but no other way I think | 12:03 |
n4nd0 | pluskid: exams ... | 12:03 |
pluskid | n4nd0: how many remains? | 12:03 |
pluskid | blackburn: yes, sad | 12:04 |
n4nd0 | pluskid: maybe one on the 30th, I am not sure if they will allow me to take it from here, otherwise I will skip it | 12:05 |
pluskid | sounds complicated situation, are you visiting at another school? | 12:05 |
blackburn | n4nd0: skip?? | 12:06 |
n4nd0 | blackburn: do it next year | 12:06 |
blackburn | I would like to be able to skip exams :D | 12:06 |
blackburn | ah | 12:06 |
blackburn | ''nah I don't want to take this exam' | 12:06 |
blackburn | :D | 12:06 |
n4nd0 | pluskid: I live and study a master in Sweden and have still some courses left from my degree in Spain | 12:06 |
blackburn | n4nd0: if it was russian univ you could send they some money :D | 12:07 |
pluskid | haha | 12:07 |
n4nd0 | :D | 12:08 |
blackburn | n4nd0: how image would look like if you SVD it, leave only largest eigenvalues (and according vectors) and multiply it back? | 12:10 |
n4nd0 | leave largest singular values right? | 12:11 |
blackburn | yeah sure | 12:11 |
n4nd0 | I guess it wouldn't look very detailed | 12:12 |
n4nd0 | but the strongest features would remain | 12:12 |
blackburn | n4nd0: I asked my fellows year ago.. | 12:12 |
n4nd0 | general shapes and so on | 12:12 |
n4nd0 | and? | 12:12 |
blackburn | they DO NOT KNOW IT | 12:12 |
blackburn | that should be impossible | 12:12 |
blackburn | :D | 12:12 |
blackburn | how can mathematician (I study mathematics as major as they do) do not know it | 12:13 |
n4nd0 | I don't know | 12:13 |
n4nd0 | maybe they got scared with the image thing | 12:14 |
blackburn | n4nd0: it is called low rank approximation btw | 12:14 |
n4nd0 | might be so if it is the first time you face a problem like that | 12:14 |
n4nd0 | aham good to know, thanks! | 12:14 |
blackburn | n4nd0: there are some related methods for kernels | 12:14 |
blackburn | for example nystroem approximation | 12:15 |
blackburn | that makes possible to estimate kernel matrix by a few values | 12:15 |
blackburn | n4nd0: funny thing about MLOSS is that different toolkits do everything in different ways | 12:21 |
blackburn | n4nd0: http://orange.biolab.si/blog/2012/04/30/multi-target-learning-for-orange/ | 12:21 |
blackburn | I do not understand what do they plan to do | 12:21 |
n4nd0 | looks interesting | 12:22 |
blackburn | YAY | 12:39 |
blackburn | I am free 14.05.2012 - 19.08.2012 | 12:39 |
blackburn | sonne|work: freedom! :D | 12:39 |
n4nd0 | blackburn: congrats! | 12:40 |
blackburn | n4nd0: however I have to write thesis :D | 12:41 |
n4nd0 | what about? | 12:41 |
blackburn | n4nd0: road sign recognition | 12:42 |
blackburn | deadline is in three weeks | 12:42 |
-!- pluskid [~pluskid@li400-235.members.linode.com] has quit [Ping timeout: 260 seconds] | 13:05 | |
blackburn | n4nd0: my thesis is going to be *the only* work on domain adaptation available in russian :D | 13:17 |
n4nd0 | :D | 13:17 |
blackburn | n4nd0: what is your bachelor's thesis about? | 13:17 |
n4nd0 | blackburn: I have not done any yet | 13:19 |
blackburn | ?? | 13:19 |
n4nd0 | blackburn: in Spain we don't have this bachelor + master organization | 13:19 |
blackburn | ahh | 13:19 |
n4nd0 | my degree, the one I started with is 5 years long | 13:20 |
blackburn | but how did they accept you for masters? | 13:20 |
n4nd0 | they required 180 ECTS or three year of university studies | 13:20 |
n4nd0 | I had that ;) | 13:20 |
n4nd0 | 180 ECTS is a Swedish bachelor | 13:20 |
blackburn | ah credits | 13:21 |
blackburn | I see | 13:21 |
blackburn | n4nd0: we have no credits here :) | 13:21 |
n4nd0 | fuck | 13:21 |
blackburn | only grades and pass/fail | 13:22 |
n4nd0 | in some very old degrees is like that | 13:22 |
n4nd0 | no credits and no grades either? | 13:22 |
blackburn | for now I have got about 40 grades (possible values are 3,4 or 5) | 13:22 |
blackburn | and about 20 'pass' | 13:22 |
blackburn | however I have no 3 grades | 13:23 |
blackburn | that means I am receiving a stipend :) | 13:23 |
-!- pluskid [~pluskid@111.120.48.205] has joined #shogun | 13:23 | |
n4nd0 | aham | 13:25 |
n4nd0 | pluskid: hey, I would like to ask you about the new labels hierarchy | 13:26 |
pluskid | n4nd0: so? | 13:26 |
n4nd0 | pluskid: I guess you will use some MulticlassMachine that inherits from CMahine, right? | 13:27 |
pluskid | yes | 13:27 |
n4nd0 | CMachine has CLabels | 13:27 |
n4nd0 | and you'd probably like that the MulticlassMachine had CMulticlassLabels | 13:27 |
pluskid | all machines has CLabels, but do cast in the run time, just like Features | 13:27 |
n4nd0 | all right | 13:27 |
n4nd0 | so the idea is to add casts wherever they are necessary | 13:28 |
n4nd0 | probably with one in a base method should be enough | 13:28 |
pluskid | yes | 13:28 |
n4nd0 | ok :) | 13:28 |
blackburn | n4nd0: what is you are working on? | 13:28 |
n4nd0 | blackburn: I am designing how SO class structure should look like | 13:29 |
pluskid | and I guess you will create some CSOLabels, or to be specific CTreeLabels, CSeqLabels, etc | 13:29 |
blackburn | agree | 13:29 |
n4nd0 | I agree with creating CStructuredLabels | 13:29 |
n4nd0 | but no CTreeLabels and so on | 13:30 |
blackburn | n4nd0: ?? | 13:30 |
n4nd0 | my idea is that, for example | 13:30 |
pluskid | StructuredLabels might be too generic | 13:30 |
blackburn | to override label class? | 13:30 |
blackburn | concrete label I mean | 13:31 |
n4nd0 | a tree can be more than a label | 13:31 |
blackburn | but what? | 13:31 |
pluskid | e.g. in NLP, POS tagging is a tree? | 13:31 |
blackburn | can't see any problem there.. | 13:32 |
-!- blackburn is now known as blackburn|food | 13:32 | |
blackburn|food | :D | 13:32 |
pluskid | ... | 13:32 |
n4nd0 | :D | 13:32 |
-!- pluskid is now known as pluskid|some | 13:32 | |
-!- pluskid|some is now known as pluskid | 13:32 | |
-!- pluskid is now known as pluskid|is-there | 13:33 | |
-!- pluskid|is-there is now known as pluskid | 13:33 | |
n4nd0 | I think it makes sense to have CStructuredLabels as | 13:34 |
n4nd0 | CStructuredLabels : public CLabelsImpl< CStructuredData > | 13:35 |
n4nd0 | and one can define Tree, Sequence, and so on extending CStructuredData | 13:35 |
sonne|work | pluskid: hmmh | 13:35 |
pluskid | yes, but I think to have specific TreeLabels , SeqLabels helps you to specify what StructuredData (i.e. TreeData, SeqData) should be | 13:36 |
sonne|work | the new label thing will certainly not work for structured labels where the type is some class | 13:36 |
pluskid | sonne|work: why? | 13:36 |
sonne|work | but I am not so excited about the templates too | 13:36 |
sonne|work | pluskid: because you SGVector<type> | 13:36 |
sonne|work | there | 13:36 |
n4nd0 | I think it is already done with some class in the PR | 13:37 |
pluskid | I can use std::vector ... @_@ | 13:37 |
sonne|work | yeah you would have to use dynarray | 13:38 |
pluskid | the underlying object will not be subclass of CSGObject I think | 13:38 |
sonne|work | but for more complex labels you would want to return ptrs? | 13:38 |
pluskid | can be something like SGVector (lightweight object wrapping some underlying heavy data) | 13:40 |
sonne|work | you mean some kind of SGGraph / Tree whatever | 13:40 |
pluskid | yes | 13:40 |
pluskid | however, that will be up to n4nd0, whatever he need/like | 13:41 |
sonne|work | pluskid: but why would one need get_vector in the main class anyways? | 13:41 |
sonne|work | I mean in features we also don't have it | 13:41 |
sonne|work | but only specialized classes doing this | 13:42 |
pluskid | get_vector? | 13:42 |
pluskid | what's get_vector? | 13:42 |
sonne|work | get_label() | 13:42 |
pluskid | you mean CLabelsImpl::get_label() ? | 13:43 |
sonne|work | yes | 13:43 |
sonne|work | in CFeatures we don't have any get/set feature matrix/vector | 13:43 |
pluskid | that's for code sharing. CLabelsImpl defines get_label, then all classes derived from it automatically have this method | 13:43 |
pluskid | CLabelsImpl will not be visible from users | 13:44 |
pluskid | users only see the interface CLabels, and specific CBinaryLabels, etc | 13:44 |
sonne|work | pluskid: you also have code sharing if you have just some real valued labels for mc/binary/regression | 13:45 |
-!- nickon [~noneedtok@kotnet-147.kulnet.kuleuven.be] has quit [Quit: ( www.nnscript.com :: NoNameScript 4.22 :: www.esnation.com )] | 13:45 | |
sonne|work | for SO labels things are different anyways | 13:45 |
pluskid | sonne|work: yes, that's why I think it is not necessary to do refactoring at this time | 13:46 |
pluskid | the new hierarchy will be also suitable for SO labels | 13:46 |
pluskid | if we do refactoring, we should take into consideration SO | 13:46 |
pluskid | or else no need to do refactoring | 13:47 |
pluskid | since the current system works fine | 13:47 |
sonne|work | pluskid: number of labels, confidence, subset all can be in the base class | 13:47 |
pluskid | yes, they are in the base class | 13:47 |
sonne|work | with SGVector<elem_t> m_labels - we can no longer access things as double* right? | 13:56 |
sonne|work | and we would need new typemaps for each elem_t | 13:56 |
sonne|work | trying to squeeze everything into a common base class with get_vector() being shared makes it too complicated imho | 13:58 |
pluskid | sonne|work: can't we just work with CLabels in python? | 13:59 |
pluskid | CLabels, CBinaryLabels, CMCLabels | 13:59 |
sonne|work | I don't understand | 13:59 |
pluskid | we don't expose the internal in Python | 13:59 |
sonne|work | we currently need to set the values of the labels somehow | 13:59 |
pluskid | so no need to have typemaps for internal structures like elem_t | 14:00 |
pluskid | set labels can be set_label(float64_t) | 14:00 |
sonne|work | so when you pass a numpy.array([1.0,2.0,3.0]) it will set an SGVector<float64_t> in labels | 14:00 |
pluskid | set_label(float64_t) for binary and regression, set_label(int32_t) for MC | 14:00 |
pluskid | that could also be supported | 14:01 |
pluskid | simple to wrap | 14:01 |
pluskid | set_labels(SGVector<T> labels) | 14:01 |
pluskid | this method can be added easily | 14:01 |
pluskid | without exposure of the internals | 14:01 |
sonne|work | and then you internally copy? | 14:01 |
sonne|work | and when you return things - copy again? | 14:01 |
-!- blackburn|food is now known as blackburn | 14:02 | |
sonne|work | I just wanted to get rid of this with the SGVector refcount stuff | 14:02 |
pluskid | you mean return a big SGVector<float64_t>? | 14:02 |
pluskid | we have a SGVector in CLabels, the memory is already there | 14:02 |
sonne|work | yeah - I mean you would have too right? | 14:02 |
sonne|work | but it is SGVector<elem_t> | 14:03 |
pluskid | yes, we cannot return that to the users | 14:03 |
pluskid | but do users need SGVector<int32_t> that often? | 14:03 |
n4nd0 | blackburn: hey, maybe you can help me a moment with this | 14:04 |
sonne|work | well many methods need it for training | 14:04 |
n4nd0 | blackburn: http://dl.dropbox.com/u/11020840/shogun/Test.jpeg | 14:04 |
n4nd0 | blackburn: it is related to the friend classes I said before | 14:05 |
pluskid | then a copy is needed | 14:05 |
blackburn | n4nd0: uh.. | 14:05 |
blackburn | why structured model? | 14:05 |
n4nd0 | blackburn: to put together the pieces that are application specific | 14:06 |
n4nd0 | such as the compute_argmax and the computation of joint (input instance + label instance) features | 14:06 |
blackburn | hmm makes sense | 14:07 |
blackburn | ok and where are friends? | 14:07 |
n4nd0 | so as you see there | 14:07 |
n4nd0 | CLabels and CFeatures pop up everywhere | 14:07 |
n4nd0 | because they are required everywhere mainly | 14:07 |
n4nd0 | :) | 14:07 |
n4nd0 | I am looking for the best way to handle this | 14:08 |
blackburn | n4nd0: no I don't think it should be like that | 14:08 |
n4nd0 | blackburn: let's think first on the labels for example | 14:08 |
n4nd0 | blackburn: CMachine has a class member for that, thus CSOMachine will have it | 14:09 |
blackburn | yes | 14:09 |
n4nd0 | but now, how can we make it accesible for CStructuredModel and CStructuredLoss? | 14:09 |
n4nd0 | one option is just to put it as an argument of the methods that need them | 14:10 |
blackburn | n4nd0: yeah seems fine to me | 14:10 |
blackburn | better than friend | 14:10 |
n4nd0 | mmm why? | 14:10 |
blackburn | or may be no, I am unsure | 14:11 |
n4nd0 | for me it makes kind of sense that CStructuredModel and CStructuredLoss have access to labels and features as if they were members | 14:11 |
n4nd0 | since they (CStructuredModel and the loss) are members of CSOMachine as well | 14:12 |
blackburn | sonne|work: any opinion on that? | 14:12 |
n4nd0 | sonne|work: take a look to the attachment http://dl.dropbox.com/u/11020840/shogun/Test.jpeg if so | 14:12 |
sonne|work | pluskid: if we don't use templates we can avoid this - I don't have time now to look into it further so I guess we have to postpone this | 14:13 |
sonne|work | n4nd0: what? | 14:13 |
pluskid | sonne|work: OK, I'm fine | 14:13 |
pluskid | I'd continue to work with DECOC now | 14:14 |
sonne|work | pluskid: yes thansk | 14:14 |
sonne|work | n4nd0: what is the problem? | 14:14 |
n4nd0 | sonne|work: I think that it makes sense that CStructuredModel and CStructuredLoss have access to the features and the labels of CSOMachine as if they were their class members | 14:15 |
sonne|work | ahh new paradigm here | 14:15 |
n4nd0 | CSOMachine contains: labels, features, model and loss | 14:15 |
sonne|work | currently only the machine has the features | 14:15 |
sonne|work | but now labels need features too | 14:16 |
n4nd0 | model and loss need features and labels | 14:16 |
n4nd0 | we can either pass them as arguments to their methods | 14:16 |
n4nd0 | or allow friendship between CSOMachine and CSModel | 14:17 |
-!- pluskid_ [~pluskid@li400-235.members.linode.com] has joined #shogun | 14:17 | |
n4nd0 | and betweent CSOMachine and CSLoss | 14:17 |
sonne|work | n4nd0: I prefer that features are set from Machine -> labels/losss/model | 14:17 |
sonne|work | so you just set them upon train | 14:17 |
sonne|work | and drop them when done | 14:17 |
n4nd0 | sonne|work: | 14:18 |
sonne|work | so you can use them directly ... | 14:18 |
blackburn | I prefer that too | 14:18 |
n4nd0 | sonne|work: ok, I can move features inside model | 14:18 |
n4nd0 | sonne|work: but loss needs them too so ...?? | 14:18 |
sonne|work | the machine needs the loss | 14:18 |
sonne|work | so the machine can give the loss the features | 14:18 |
n4nd0 | ok | 14:19 |
n4nd0 | :D but it's the same issue | 14:19 |
n4nd0 | because model also needs the features | 14:19 |
n4nd0 | for compute_joint_feature | 14:19 |
-!- pluskid_ is now known as pluskid|watermel | 14:20 | |
sonne|work | ? | 14:21 |
sonne|work | machine can pass the features to model and loss - so what is the problem? | 14:21 |
-!- pluskid [~pluskid@111.120.48.205] has quit [Ping timeout: 260 seconds] | 14:21 | |
n4nd0 | hmm | 14:21 |
n4nd0 | you just said that SOMachine shouldn't have the features as a member right? | 14:22 |
n4nd0 | sonne|work: but Loss could have them? | 14:22 |
sonne|work | n4nd0: I said that SOMachine should have them and loss and whoever needs it | 14:22 |
n4nd0 | sonne|work: all of them as a class member? | 14:23 |
sonne|work | yes | 14:23 |
n4nd0 | all right ... | 14:23 |
n4nd0 | then I don't understand when you said | 14:23 |
n4nd0 | 14:17 < sonne|work> n4nd0: I prefer that features are set from Machine -> labels/losss/model | 14:23 |
n4nd0 | 14:17 < sonne|work> so you just set them upon train | 14:23 |
n4nd0 | 14:17 < sonne|work> and drop them when done | 14:24 |
sonne|work | that is what I meant with that | 14:24 |
sonne|work | within CSOMachien you do loss->set_features(m_features) etc | 14:24 |
n4nd0 | ok | 14:24 |
n4nd0 | it looks like problem solved then :) | 14:24 |
n4nd0 | I directly assumed that to have it as member in all the classes was not a solution | 14:25 |
blackburn | why? | 14:25 |
n4nd0 | looks redundant | 14:25 |
blackburn | friend looks worse anyway | 14:25 |
sonne|work | blackburn has no friends | 14:25 |
n4nd0 | hahaha | 14:26 |
blackburn | lol | 14:26 |
blackburn | n4nd0: yeah I have no friends so I do not want friendship in shogun :D | 14:26 |
n4nd0 | but we do have friendship in shogun :P | 14:26 |
n4nd0 | I saw something in multiclass | 14:26 |
n4nd0 | that's why I am a bit surprised you don't like it guys | 14:27 |
blackburn | hmm where? | 14:27 |
n4nd0 | SVM.h | 14:27 |
n4nd0 | friend of CSVMMulticlass | 14:27 |
blackburn | what is friend? | 14:27 |
blackburn | ah | 14:27 |
blackburn | this can be avoided | 14:27 |
n4nd0 | SVM.h:268:friend class CMulticlassSVM; | 14:27 |
blackburn | in future | 14:27 |
blackburn | it is related to sv indices AFAIK | 14:28 |
sonne|work | n4nd0: IIRC in pluskid|watermel's commit :) | 14:29 |
blackburn | exactly | 14:29 |
sonne|work | I also added some friends | 14:29 |
-!- pluskid|watermel is now known as pluskid | 14:29 | |
blackburn | hey guys try "git grep FUCK" | 14:29 |
sonne|work | no idea how to avoid them | 14:29 |
n4nd0 | blackburn: you kidding? | 14:29 |
blackburn | n4nd0: no I do not :D | 14:29 |
blackburn | we have 2 'shit' word occurencies | 14:30 |
blackburn | and one FUCK | 14:30 |
pluskid | found it in ChangeLog... | 14:30 |
n4nd0 | haha true | 14:30 |
sonne|work | only when you threaten to beat me up - you are allowed to commit commit msg containing F.CK | 14:31 |
blackburn | sonne|work: did he threaten to beat you? haha | 14:32 |
blackburn | but hey you are 1.9 | 14:32 |
blackburn | tall | 14:32 |
blackburn | you should be able to beat up anyone :) | 14:32 |
sonne|work | blackburn: by just jumping on him :D | 14:32 |
blackburn | sonne|work: I can definitely kill someone by jumping on him (95kg :D) -- feel free to ask | 14:33 |
sonne|work | almost like kim schmitz | 14:34 |
sonne|work | argh | 14:34 |
sonne|work | I have to woooork! | 14:34 |
n4nd0 | :D | 14:34 |
blackburn | sonne|work: I am not like that guy for sure :D | 14:35 |
sonne|work | blackburn: megablackburn megashoguning | 14:35 |
n4nd0 | so what about SOLabels? | 14:37 |
blackburn | n4nd0: pluskid and two commits containing 'shit' word are here too | 14:37 |
blackburn | one is mine and one is of fabio di bona | 14:37 |
n4nd0 | the thing is that I don't see lot of sense in doing a class SGTree and later CTreeLabels | 14:38 |
blackburn | n4nd0: why? | 14:38 |
blackburn | well may be you are right | 14:38 |
n4nd0 | because we could end up having | 14:38 |
n4nd0 | CTreeLabels, CSeqLabels .... | 14:38 |
blackburn | true I am ok with generic SO labels | 14:39 |
n4nd0 | that just differ in the type, whether SGTree or SGSequence | 14:39 |
blackburn | no other specialization? | 14:39 |
n4nd0 | probably in internal functions | 14:39 |
n4nd0 | something that SGTree and SGSequence must implement | 14:39 |
n4nd0 | but I don't think that is even required right now, this specialization | 14:40 |
n4nd0 | since the methods required for SO will be implemented in a specialization of the StructuredModel | 14:40 |
blackburn | ok then | 14:43 |
n4nd0 | but I have to think this aspect more carefully | 14:44 |
blackburn | sonne|work: when do you plan to start with sparse and string stuff? | 14:46 |
sonne|work | blackburn: I thought you do sparse I do string? | 14:46 |
blackburn | sonne|work: yes - when do you plan to start with it? | 14:46 |
sonne|work | no idea | 14:47 |
blackburn | ok | 14:47 |
blackburn | pluskid: I want a watermelon too | 14:47 |
blackburn | :D | 14:47 |
pluskid | blackburn: nothing left :D | 14:48 |
blackburn | they are available only in september here | 14:49 |
sonne|work | pluskid: before I forget: I made the unref() protected and added the x=SGVector() to force deletion | 15:12 |
sonne|work | I couldn't make it private because it is not possible to call unref() in destructor (calling some virtual method) | 15:13 |
pluskid | sonne|work: you mean destructor of some subclass? | 15:13 |
sonne|work | yes I need to call unref() from there | 15:14 |
cronor | Is there a toy dataset in shogun for regression, that does not have 100% accuracy? | 15:14 |
pluskid | sonne|work: why not let the destructor of SGReferencedData to call unref() ? | 15:15 |
sonne|work | pluskid: because it is not possible to call a virtual method in destructor | 15:15 |
sonne|work | base class destructor | 15:15 |
sonne|work | cronor: well generate one - sin(x)+rand ... | 15:16 |
pluskid | sonne|work: OK, I see | 15:16 |
pluskid | that's cool | 15:16 |
sonne|work | but anyway it is sooo much nicer now | 15:16 |
sonne|work | pluskid only problem now is SGStringList/SparseMatrix | 15:16 |
pluskid | what's their problem? | 15:17 |
sonne|work | they both use arrays of SGString/SparseVector | 15:17 |
blackburn | sonne|work: imagine how it would be cool to get more 2012 features instead of 1985 ones ;) | 15:17 |
sonne|work | and an overhead of 20 bytes per SGString/SparseVec | 15:17 |
sonne|work | would be there with the new system | 15:17 |
sonne|work | SGVector/Matrix is not really a problem | 15:17 |
sonne|work | not sure if we just live with that or if we try to be smart | 15:18 |
sonne|work | pluskid: ^ | 15:18 |
pluskid | maybe we can try to live with that, and see whether we really have a problem with that extra 20bytes in practice | 15:18 |
blackburn | I don't mind these 20 bytes here | 15:19 |
pluskid | if we really have problem, then we try to find a solution | 15:19 |
sonne|work | pluskid: maybe you are right | 15:20 |
sonne|work | the only example I have was some data set I trained years ago | 15:20 |
sonne|work | 50e6 examples | 15:20 |
sonne|work | so overhead would be 1G | 15:20 |
blackburn | sonne|work: 100mb overhead? | 15:20 |
blackburn | emh? | 15:20 |
sonne|work | 50*20 =1000 | 15:20 |
blackburn | ah I was always weak in math | 15:20 |
blackburn | ;) | 15:20 |
* pluskid is not good at arithmetic | 15:21 | |
sonne|work | I cannot even count | 15:21 |
blackburn | sonne|work: what is dataset size? | 15:21 |
sonne|work | ~7G | 15:21 |
blackburn | oh | 15:21 |
blackburn | then huge overhead, right.. | 15:21 |
-!- nicococo [~nico@lacedcoffee.ml.tu-berlin.de] has quit [Ping timeout: 245 seconds] | 15:21 | |
sonne|work | yeah strings were length 141 | 15:21 |
-!- gsomix [~gsomix@85.26.235.137] has joined #shogun | 15:22 | |
sonne|work | 14%overhead | 15:22 |
blackburn | however we have to recall in modular interfaces everything is copied almost two times | 15:22 |
sonne|work | only once | 15:22 |
sonne|work | recall we have the new sg* stuff now | 15:22 |
sonne|work | and for python there may even be ways :D | 15:23 |
blackburn | sonne|work:sad it is not possible to map numpy matrices as sg stuff | 15:23 |
n4nd0 | gtg now guys | 15:23 |
n4nd0 | see you later! | 15:23 |
sonne|work | blackburn: it is... | 15:23 |
blackburn | sonne|work: how to handle references? | 15:24 |
-!- n4nd0 [~nando@s83-179-44-135.cust.tele2.se] has quit [Quit: leaving] | 15:24 | |
pluskid | maybe SparseMatrix is used more often, and we can implement in some more efficient way (instead of simply array of SparseVector)? | 15:24 |
sonne|work | pluskid: what is more efficient? | 15:24 |
sonne|work | it is actually pretty fast now | 15:24 |
pluskid | I mean memory efficient | 15:25 |
blackburn | sonne|work: memory wise efficient | 15:25 |
sonne|work | I see | 15:25 |
sonne|work | well yeah if we keep some internal SGSparseVector type | 15:25 |
sonne|work | let say SGSparse | 15:25 |
blackburn | we can add intermediate class there | 15:25 |
blackburn | yes | 15:25 |
sonne|work | then we could convert these into SGSparseVector | 15:26 |
sonne|work | but w/o refcount | 15:26 |
sonne|work | and add a function that returns a copy w/ refcount | 15:26 |
sonne|work | I am not aware of any sharing of SGSparseVectors yet | 15:26 |
sonne|work | so it might be ok | 15:27 |
pluskid | btw, sonne|work, since you are starting to like the automagic ref-counting in SGVector/SGMatrix, I would like to remind you that what you implemented in the new SGVector/SGMatrix is conceptually identical to a shared_ptr | 15:31 |
pluskid | but a shared_ptr is more general | 15:31 |
blackburn | sonne|work: and it is boost | 15:31 |
pluskid | than SGReferencedData | 15:31 |
blackburn | boost | 15:31 |
blackburn | stl | 15:31 |
blackburn | boost | 15:32 |
blackburn | std | 15:32 |
blackburn | vector map set | 15:32 |
blackburn | boost! | 15:32 |
sonne|work | pluskid: what overhead does shared_ptr come with? | 15:32 |
pluskid | for example, let's denote our old un-ref-ed SGVector SGOldVector | 15:32 |
sonne|work | wit SGRefD - I know it is 20 bytws | 15:32 |
pluskid | sonne|work: the boost one's overhead is a bit heavier, because it has to work with anything | 15:33 |
pluskid | but we can customize a simpler one | 15:33 |
pluskid | with only those overhead as our SGRefD | 15:33 |
pluskid | though with some limitations | 15:33 |
sonne|work | which limitations btw? | 15:34 |
pluskid | it will only work with our SG** type | 15:34 |
sonne|work | I don't see any so far | 15:34 |
pluskid | I mean, for SGRefD, you have to derive some class from that, and implement some method | 15:34 |
pluskid | but with shared_ptr, you typedef shared_ptr<SGOldVector> SGNewVector | 15:34 |
pluskid | then SGNewVector is the ref-counted vector | 15:35 |
pluskid | the principles are the same, just if you use template, you write less code | 15:35 |
pluskid | because the compiler write code for you | 15:36 |
pluskid | anyway, just saying that | 15:36 |
pluskid | the current SGRefD is already pretty cool | 15:36 |
pluskid | we couldn't be too ambitious in a short time | 15:36 |
sonne|work | pluskid: for SGObject we can use a more heavy solution but we have 2 weeks before things have to be more or less stable again | 15:37 |
pluskid | sonne|work: yeah, I'm just saying | 15:38 |
sonne|work | my experience with boost so far was that compile time went up 1000% | 15:38 |
pluskid | sonne|work: hmm, that's the biggest problem | 15:38 |
sonne|work | and wrapper code size too | 15:38 |
sonne|work | (from swig) | 15:38 |
sonne|work | and we already need ~3G to compile the wrapped code... | 15:38 |
blackburn | sonne|work: we can do somthinng similar to shared_ptr | 15:38 |
blackburn | not to use boost | 15:38 |
pluskid | btw I mean the boost-way of writing our own shared_ptr, not to try to introduce boost as our dep | 15:38 |
sonne|work | ok | 15:39 |
pluskid | oops... 3G | 15:39 |
pluskid | I see why my laptop hangs before I add more memory | 15:39 |
sonne|work | pluskid: I would be more than happy if you start that after we release shogun 2.0 after GSoC | 15:39 |
sonne|work | pluskid: if you use clang it is ok | 15:39 |
blackburn | sonne|work: SGVector should contain not pointer but valarray I think | 15:39 |
sonne|work | pluskid: if you have an idea how to split up a .cpp file into many - we could resolve the issue | 15:40 |
pluskid | sonne|work: I'm just trying to remind you sth at some time to try to decrease your hate with template :p | 15:40 |
sonne|work | pluskid: no I like templates | 15:40 |
sonne|work | but only for simple types | 15:40 |
sonne|work | for everything else it can become messy/slow | 15:40 |
sonne|work | blackburn: :P | 15:41 |
blackburn | sonne|work: ehm? how can template be slow | 15:41 |
pluskid | blackburn: why valarray here? | 15:41 |
sonne|work | blackburn: compile time | 15:41 |
blackburn | pluskid: we need to check if it gives any advantage | 15:41 |
blackburn | rumours are it is faster? | 15:41 |
pluskid | blackburn: for math operations? | 15:42 |
sonne|work | blackburn: than atlas? | 15:42 |
blackburn | yes | 15:42 |
blackburn | sonne|work: atlas is slow anyway | 15:42 |
blackburn | :) | 15:42 |
sonne|work | heh | 15:42 |
sonne|work | gotoblas? | 15:42 |
-!- eric_ [2e1fd566@gateway/web/freenode/ip.46.31.213.102] has quit [Quit: Page closed] | 15:42 | |
blackburn | I need to check source | 15:43 |
blackburn | what could make it faster? | 15:43 |
pluskid | sonne|work would argue that valarray has extra overhead | 15:43 |
pluskid | haha | 15:43 |
blackburn | I thank gods sonne|work do not mind openmp | 15:45 |
sonne|work | pluskid: indeed | 15:45 |
sonne|work | I think it will have quite a bit of overhead | 15:45 |
sonne|work | look when we tried to publish OCAS | 15:45 |
sonne|work | (the fast SVM cutting plane solver) | 15:46 |
sonne|work | it was very slow | 15:46 |
sonne|work | and the reason was qsort in stdlib! | 15:46 |
pluskid | qsort in C stdlib is slow | 15:46 |
sonne|work | IIRC 10 times slower than what we do in shogun | 15:46 |
pluskid | because it use function pointers | 15:46 |
pluskid | do you mean C qsort or C++ std::sort ? | 15:47 |
sonne|work | so I don't really trust third party stuff when it is about performance | 15:47 |
sonne|work | C qsort | 15:47 |
sonne|work | and memory efficiency | 15:47 |
pluskid | sonne|work: then that would be reasonable | 15:47 |
pluskid | function pointers are *very* slow | 15:47 |
sonne|work | for the rest - I don't care | 15:47 |
pluskid | I think std::sort could be fast | 15:47 |
-!- gsomix [~gsomix@85.26.235.137] has quit [Ping timeout: 244 seconds] | 15:47 | |
pluskid | in qsort, you have to do pointer derefence and function context switch in every comparison of numbers | 15:48 |
blackburn | sonne|work: are you sure std stuff is anyhow less efficient? | 15:48 |
pluskid | that totally kill CPU prediction, time flow, etc. | 15:48 |
pluskid | but std::sort doesn't have this problem | 15:48 |
pluskid | it use functors, the function call can all be inlined | 15:49 |
blackburn | pluskid: really? I did callback interface in my code | 15:49 |
blackburn | are virtual functions better there? | 15:49 |
sonne|work | blackburn: if you dont' do it often... | 15:49 |
pluskid | blackburn: function pointers are slow, but if not like qsort (it is called so many times), I think you won't mind callbacks | 15:49 |
blackburn | sonne|work: very often | 15:49 |
pluskid | blackburn: virtual functions are also slow btw | 15:50 |
blackburn | I did kernel(i,j) callback | 15:50 |
blackburn | so is there any other way then? | 15:50 |
pluskid | that's why functors are popular in STL | 15:50 |
pluskid | I'm not sure of your scenario | 15:50 |
pluskid | but if you want to use functors, template have to be introduced | 15:50 |
blackburn | pluskid: I need a lot of kernel value computations | 15:50 |
pluskid | or else we could embrace C++11 :D | 15:51 |
blackburn | I don't mind templates there | 15:51 |
pluskid | which defines std::function type, much better to use than a generic T type | 15:51 |
pluskid | blackburn: maybe show me the code? | 15:51 |
-!- karlnapf [~heiko@host86-176-3-209.range86-176.btcentralplus.com] has joined #shogun | 15:51 | |
blackburn | pluskid: yeah I would like to show but it is available only locally on other machine | 15:52 |
blackburn | I can do a little bit later | 15:52 |
blackburn | pluskid: to provide flexible api I made a callback interface | 15:53 |
blackburn | for example I pass a pointer to function that calls m_kernel->compute(i,j) | 15:53 |
pluskid | blackburn: ok. the general idea is to replace function callback with a functor. just compare C qsort with std::sort (which accept a comparator IIRC?) | 15:53 |
blackburn | probably I didn't notice any time-wise overhead because it works with virtual functions anyway | 15:54 |
pluskid | virtual function is also kinda slow | 15:54 |
pluskid | it's address has to be decided at run time | 15:55 |
pluskid | so compiler can do nothing to optimize | 15:55 |
pluskid | and the CPU cannot predict the address | 15:55 |
pluskid | cache miss | 15:55 |
pluskid | etc | 15:55 |
blackburn | pluskid: no other way.. | 15:55 |
pluskid | btw: things might be better if JIT is presented (like in Java) | 15:55 |
blackburn | pluskid: why functors are faster? | 15:56 |
sonne|work | pluskid: are you sure these things happen if everything is available together at *compile time* | 15:56 |
sonne|work | I would expect the compiler to optimize these things away | 15:56 |
pluskid | sonne|work: compiler cannot determine the content of a pointer at compile time | 15:57 |
pluskid | blackburn: functors's method is non-virtual, can be inlined | 15:57 |
pluskid | void foo() is always faster than virtual void foo() | 15:58 |
blackburn | got it | 15:58 |
blackburn | pluskid: however virtual would stay still - so probably no need to optimize it here | 15:58 |
pluskid | blackburn: virtual functions are not always evil, we would try not to over-optimize. I think We'd better do some profiling to see the bottleneck before trying hard to optimize some part | 15:59 |
pluskid | BTW, I think there are some people in C++ that use heavy template and never use virtual functions | 16:00 |
pluskid | they might hate virtual and dynamic things as much as sonne|work hate STL :D | 16:00 |
blackburn | yes | 16:00 |
blackburn | I heard of that subculture :D | 16:00 |
pluskid | blackburn: maybe boost guys are part of them | 16:01 |
pluskid | however, using template this way is really sloooooooooooooow at compiling | 16:01 |
blackburn | I will change everything once I take shogun over (HAHA! sonne|work) | 16:02 |
blackburn | :D | 16:02 |
pluskid | and as sonne|work said, the produced executable also glows very big, which would also produce large cache miss when running | 16:02 |
pluskid | haha | 16:02 |
blackburn | okay my long break is signed | 16:03 |
blackburn | last day before 3 month work break tomorrow | 16:03 |
pluskid | one more drawback with template is that the compile error is ...... | 16:05 |
pluskid | you might just want to die when presented with several hundred pages of compiling errors | 16:06 |
blackburn | hahehe | 16:06 |
blackburn | pluskid: I had one idea | 16:07 |
blackburn | about multiclass machines | 16:07 |
blackburn | do you think it makes sense to have not binary trees? | 16:07 |
blackburn | containing multiclassmachines in nodes | 16:07 |
blackburn | this can hardly be done with ecoc I think | 16:08 |
pluskid | what's the advantage? | 16:08 |
blackburn | pluskid: hmmm imagine you have 3 types of square road signs and 3 types of round road sings.. | 16:10 |
blackburn | signs* | 16:10 |
pluskid | oh, you are writing your report | 16:11 |
pluskid | haha | 16:11 |
pluskid | then that makes sense | 16:11 |
blackburn | pluskid: yes however my best results are with OvR still | 16:11 |
pluskid | might better be a decision tree? | 16:12 |
blackburn | pluskid: based on? | 16:12 |
pluskid | based on your best-performed classifier haha | 16:13 |
blackburn | I mean how to construct that tree? | 16:13 |
blackburn | svms? | 16:13 |
blackburn | in nodes | 16:13 |
pluskid | first distinguish whether spare or round | 16:14 |
pluskid | then do MC classification on each branch? | 16:14 |
blackburn | yes that sounds exactly as what I said ;) | 16:14 |
blackburn | however I think I have to implement it by myself | 16:14 |
pluskid | yeah, easily hand-crafted for your specific problem | 16:15 |
karlnapf | sonney2k, blackburn, I found the reason why the locked training doesnt work anymore: | 16:26 |
karlnapf | https://github.com/shogun-toolbox/shogun/commit/e6525c711489c888cd0b433ce499e9cb87adb65b | 16:26 |
karlnapf | will fix this later, gotta go now | 16:26 |
-!- karlnapf [~heiko@host86-176-3-209.range86-176.btcentralplus.com] has left #shogun [] | 16:26 | |
blackburn | karlnapf whoops | 16:27 |
blackburn | I'll fix that | 16:27 |
-!- gsomix [~gsomix@188.168.5.106] has joined #shogun | 16:27 | |
sonne|work | blackburn: that code has drastically changed | 16:35 |
sonne|work | I think the reason is this line //index_t idx=params->indices.vector ? params->indices.vector[vec] : vec; | 16:35 |
blackburn | sonne|work: it was looking like it wasn't used at all.. | 16:35 |
CIA-113 | shogun: Soeren Sonnenburg master * rbee313d / src/shogun/machine/KernelMachine.cpp : fix subset & kernel machines - http://git.io/TUkW1Q | 16:36 |
sonne|work | I think that is the fix | 16:36 |
sonne|work | blackburn: true actually | 16:37 |
blackburn | I hope so | 16:37 |
sonne|work | shouldn't it be result->set_label(vec, kernel_machine->apply(idx)); | 16:38 |
sonne|work | ? | 16:38 |
blackburn | sonne|work: idx, idx? | 16:39 |
sonne|work | idx | 16:39 |
sonne|work | instead of vec | 16:40 |
blackburn | sonne|work: I am lost there | 16:40 |
CIA-113 | shogun: Soeren Sonnenburg master * r717f885 / src/shogun/machine/KernelMachine.cpp : use idx - http://git.io/KqqOOw | 16:40 |
blackburn | sonne|work: btw with openmp dot features are MUUUUCH more readable | 16:40 |
sonne|work | another attempt | 16:41 |
blackburn | and kernel machine would be more readable too | 16:41 |
sonne|work | blackburn: benchmark and if things are still same speed - I am ok | 16:41 |
blackburn | sonne|work: tried on d=1000, N=10000 - the same | 16:42 |
blackburn | mmore to benchmark thoug | 16:42 |
blackburn | sonne|work: good thing about openmp - no crazy ifdefs | 16:44 |
blackburn | just simple pragma | 16:44 |
sonne|work | I know | 16:44 |
sonne|work | I used it... | 16:45 |
blackburn | I am not trying to say you don't know ;) | 16:45 |
blackburn | just emphasize it | 16:45 |
blackburn | parallel code = serial code and that is nice | 16:45 |
blackburn | http://www.tug.org/texshowcase/ShowcaseCircular.pdf | 16:47 |
pluskid | I need to do histogram on each dimension of the features, then what kind of CFeatures should I require and cast to use? | 16:47 |
pluskid | CSimpleFeature? | 16:48 |
blackburn | pluskid: dot features or dense features | 16:48 |
blackburn | pluskid: add_to_dense_vec is ok here I think | 16:49 |
blackburn | so can be dotfeatures (a little more generally - supports sparsity) | 16:49 |
pluskid | blackburn: so I just check whether it is a subclass of CDotFeatures? | 16:50 |
blackburn | yeah just cast to dotfeatures | 16:50 |
pluskid | blackburn: I need to access X(i,j) | 16:52 |
pluskid | to compute the histogram | 16:52 |
pluskid | maybe DotFeatures is too generic? | 16:52 |
pluskid | I don't find suitable interfaces to do this | 16:52 |
blackburn | pluskid: why do you need X(i,j) but not X(:,j)? | 16:52 |
blackburn | float64_t* hist = SG_CALLOC(float64_t, f->get_dim_feature_space()); | 16:53 |
pluskid | blackburn: X(:, j) is also OK, but only part of the data points are counted | 16:53 |
blackburn | for (int32_t i=0; i<f->get_num_vectors(); i++) | 16:53 |
blackburn | { | 16:53 |
blackburn | f->add_to_dense_vec(i,hist,f->get_dim_feature_space()); | 16:54 |
blackburn | } | 16:54 |
blackburn | why wouldn't it work? | 16:54 |
blackburn | https://lh4.googleusercontent.com/-9X9YJsB0z5Q/T6Gslrwo-1I/AAAAAAAABqs/Wlu7S4X2svg/w497-h373/i0dNFqpMjLFv5.gif | 16:55 |
pluskid | blackburn: I don't get your idea | 16:55 |
blackburn | pluskid: oh sh sorry | 16:56 |
blackburn | it is not a histogram | 16:56 |
blackburn | then densefeatures would work if you need X(i,j) | 16:56 |
pluskid | blackburn: ah, that's cool! | 16:57 |
pluskid | thank you! | 16:57 |
pluskid | btw: cool cat!!! | 16:57 |
blackburn | bad I have no cat :( | 16:58 |
blackburn | okay time to head to home | 16:59 |
pluskid | but you have a bear | 16:59 |
blackburn | hahah | 16:59 |
blackburn | yeah right every russian has bear | 16:59 |
pluskid | is this a classical story/joke? :D | 16:59 |
-!- wiking_ [~wiking@78-23-189-112.access.telenet.be] has joined #shogun | 16:59 | |
-!- wiking_ [~wiking@78-23-189-112.access.telenet.be] has quit [Changing host] | 16:59 | |
-!- wiking_ [~wiking@huwico/staff/wiking] has joined #shogun | 16:59 | |
blackburn | these are the only russian things probably | 16:59 |
blackburn | vodka balalayka | 17:00 |
blackburn | medvedi | 17:00 |
pluskid | nonsense to me | 17:00 |
blackburn | vodka should make sense | 17:00 |
blackburn | vodka always makes sense | 17:01 |
gsomix | vodka \(^__^)/ | 17:01 |
pluskid | a kind of wine? | 17:01 |
pluskid | Ah, I see | 17:01 |
-!- eric_ [2e1fd566@gateway/web/freenode/ip.46.31.213.102] has joined #shogun | 17:01 | |
eric_ | re! | 17:01 |
blackburn | pluskid: yes but 40% of alcohol | 17:01 |
blackburn | rather kind of sake :) | 17:01 |
-!- wiking [~wiking@huwico/staff/wiking] has quit [Ping timeout: 265 seconds] | 17:03 | |
-!- wiking_ is now known as wiking | 17:03 | |
eric_ | wiking: I didn't had much time to debug MC Xval but I ran the method using CMulticlassLibLinear as in your cpp example (evthg seems good in this way) and I compare the relusts with CGMNPSVM which give better MC perf when splitting the dataset manually, and give weird results when running Xval | 17:04 |
eric_ | all: any intuition why the MC Xval bug with some type of classifiers , | 17:05 |
pluskid | painful... should I support only float64_t Features? | 17:07 |
blackburn | pluskid: where? | 17:08 |
pluskid | a new ECOC encoder | 17:08 |
pluskid | data-dependent encoder | 17:08 |
pluskid | OK, require CDenseFeatures<float64_t> is reasonable | 17:09 |
blackburn | hmm how does it work? | 17:09 |
pluskid | CLinearRidgeRegression also requires this | 17:09 |
blackburn | yes that would be ok | 17:09 |
blackburn | easy to refactor anyway | 17:09 |
pluskid | it compute some stats on the data to create a tree-style ECOC | 17:09 |
blackburn | oh I see | 17:10 |
blackburn | then yes just tight it to float64_t | 17:10 |
pluskid | ok | 17:11 |
blackburn | ok be back later | 17:13 |
-!- blackburn [5bdfb203@gateway/web/freenode/ip.91.223.178.3] has quit [Quit: Page closed] | 17:13 | |
-!- pluskid [~pluskid@li400-235.members.linode.com] has quit [Quit: Leaving] | 17:19 | |
-!- nickon [~noneedtok@d54C1F8A8.access.telenet.be] has joined #shogun | 17:27 | |
-!- wiking [~wiking@huwico/staff/wiking] has quit [Remote host closed the connection] | 17:43 | |
-!- wiking [~wiking@vpnc166.ugent.be] has joined #shogun | 17:43 | |
-!- wiking [~wiking@vpnc166.ugent.be] has quit [Changing host] | 17:43 | |
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun | 17:43 | |
-!- cronor [~cronor@fb.ml.tu-berlin.de] has quit [Read error: Operation timed out] | 17:54 | |
eric_ | wiking: while CMulticlassLibLinear give correct/expected Xval mean value, CMulticlassLibSVM or CGMNPSVM give false results | 17:55 |
wiking | eric_: i guess u ran a crossval with the same setup with libsvm or something? | 17:56 |
wiking | or how do u know that it's false for certain | 17:57 |
eric_ | Same kernel config for kernel machine and I tested with different manual split of dataset and got far better accuracy | 17:59 |
wiking | mmhhm | 17:59 |
eric_ | wiking: but your Xval code seems good to me .. I don't get this : / | 18:00 |
wiking | ehehhe it's not my xval code just the example | 18:00 |
eric_ | the example I "copy" I meant | 18:00 |
eric_ | did you try another kernel machine with the example and libsvm dataset ? | 18:01 |
wiking | noup | 18:02 |
-!- blackburn [~qdrgsm@83.234.54.222] has joined #shogun | 18:06 | |
eric_ | wiking: will check with another base tonight and keep you inform =() | 18:11 |
eric_ | bye all | 18:11 |
-!- eric_ [2e1fd566@gateway/web/freenode/ip.46.31.213.102] has quit [Quit: Page closed] | 18:11 | |
-!- wiking_ [~wiking@78-23-189-112.access.telenet.be] has joined #shogun | 18:15 | |
-!- wiking_ [~wiking@78-23-189-112.access.telenet.be] has quit [Changing host] | 18:15 | |
-!- wiking_ [~wiking@huwico/staff/wiking] has joined #shogun | 18:15 | |
gsomix | rabotatch! | 18:15 |
-!- wiking [~wiking@huwico/staff/wiking] has quit [Read error: Operation timed out] | 18:16 | |
-!- wiking_ is now known as wiking | 18:16 | |
-!- gsomix [~gsomix@188.168.5.106] has quit [Quit: Ex-Chat] | 18:17 | |
-!- cronor [~cronor@g231216163.adsl.alicedsl.de] has joined #shogun | 18:35 | |
@sonney2k | blackburn, please fix the warnings http://shogun-toolbox.org/buildbot/builders/libshogun/builds/912/steps/compile/logs/warnings%20(4) | 19:02 |
wiking | sonney2k: this removes one of your warnings https://github.com/shogun-toolbox/shogun/pull/519 | 19:27 |
CIA-113 | shogun: Soeren Sonnenburg master * rc019459 / src/shogun/machine/KernelMachine.cpp : initialize indices with NULL - this should fix the null ptr exception - http://git.io/f_G12A | 19:30 |
@sonney2k | wiking thx | 19:32 |
@sonney2k | I think kernel machines will work now too | 19:32 |
@sonney2k | even mc :) | 19:32 |
wiking | sonney2k: we have some strange problem with xval and kernel mc | 19:33 |
wiking | the results are very weak | 19:34 |
wiking | i.e. there's a huge difference between a simple manual splitting and any amount of xval runs :) | 19:34 |
CIA-113 | shogun: Viktor Gal master * rb4815de / (2 files): | 19:38 |
CIA-113 | shogun: HKM: fix warning and pass vector by reference | 19:38 |
CIA-113 | shogun: - http://git.io/DYIVeg | 19:38 |
CIA-113 | shogun: Soeren Sonnenburg master * r904ebab / (2 files): | 19:38 |
CIA-113 | shogun: Merge pull request #519 from vigsterkr/master | 19:38 |
CIA-113 | shogun: - http://git.io/xFmxtg | 19:38 |
blackburn | re | 19:42 |
blackburn | sonney2k: can we make -fopenmp unconditional? | 19:46 |
CIA-113 | shogun: Sergey Lisitsyn master * r1b58787 / (3 files in 3 dirs): Removed a few SLEP warnings - http://git.io/aduPrA | 19:46 |
@sonney2k | blackburn, not yet - I mean if we cannot get rid of pthreads why have another dependency? | 19:49 |
blackburn | sonney2k: gcc supports it natively | 19:49 |
@sonney2k | yes but whey 2 different systems? | 19:51 |
@sonney2k | I mean if we can I would rather convert to openmp completely | 19:51 |
blackburn | sonney2k: I expect pthreads only in dim reduction | 19:52 |
blackburn | yes we actually can | 19:52 |
@sonney2k | why? | 19:52 |
blackburn | sonney2k: why expect? | 19:52 |
@sonney2k | yeah | 19:52 |
blackburn | because quite a lot of work still to do and openmp conversion.. | 19:52 |
blackburn | this can never be finished | 19:53 |
blackburn | ah btw | 19:53 |
blackburn | I have a suggestion about locks | 19:53 |
@sonney2k | but you always work like this :D | 19:53 |
blackburn | how? | 19:53 |
@sonney2k | total chaos | 19:53 |
blackburn | do you work in some other way? | 19:53 |
@sonney2k | or maybe a hidden masterplan | 19:53 |
@sonney2k | yes I have a masterplan - isnt that obvious :D | 19:53 |
blackburn | chaos is cool - universe was born by it | 19:54 |
@sonney2k | shogun too | 19:54 |
blackburn | but I can say I didn't miss a task yet | 19:54 |
blackburn | I get back to it at some point | 19:55 |
blackburn | sonney2k: I'm actually currently doing multiclass DA liblinear, SLEP tree lasso and fixing bugs | 19:55 |
blackburn | ah and openmp :D | 19:56 |
@sonney2k | and... | 19:56 |
blackburn | I mean you shouldn't worry it looks like a chaos | 19:57 |
@sonney2k | wiking, btw how is your gsoc task developing? | 19:57 |
blackburn | it seems things go by ok | 19:57 |
@sonney2k | wiking, do you have a concept / did you already start? | 19:57 |
wiking | sonney2k: both | 19:57 |
wiking | i've started and i have concept | 19:58 |
wiking | the CCCP with OCAS | 19:58 |
blackburn | lol | 19:58 |
wiking | with -1/1 labeling | 19:58 |
blackburn | I will never stop laugh at CCCP | 19:58 |
wiking | blackburn: hehehe | 19:58 |
@sonney2k | blackburn, have you seen - libshogun examples pass make check-examples now | 19:59 |
@sonney2k | http://shogun-toolbox.org/buildbot/builders/cmdline_static/builds/836/steps/test_1/logs/stdio | 19:59 |
@sonney2k | still some valgrind errros though | 19:59 |
blackburn | really? I just came back from jog - haven't seen anything yet | 20:00 |
wiking | sonney2k: so i've used the concept of joachim's (svmlight) students paper and implementation adapted it to shogun without the structural part and using ocas | 20:00 |
blackburn | svr fails? | 20:00 |
blackburn | prunevarsubean? wtf/ | 20:00 |
@sonney2k | ? | 20:00 |
blackburn | sonney2k: check url you pasted | 20:01 |
@sonney2k | static interfaces are broken it seems | 20:01 |
blackburn | static fails hardly | 20:01 |
blackburn | hard* | 20:01 |
blackburn | okkk another task | 20:01 |
blackburn | I'll try to get it unb0rken :D | 20:01 |
@sonney2k | yeah but the good thing is that libshogun examples work now | 20:02 |
blackburn | sonney2k: I admit I do not hate static now | 20:02 |
blackburn | as it was before | 20:02 |
-!- n4nd0 [~nando@s83-179-44-135.cust.tele2.se] has joined #shogun | 20:03 | |
@sonney2k | blackburn, ??? | 20:03 |
@sonney2k | why not | 20:03 |
blackburn | sonney2k: why not hate? | 20:03 |
@sonney2k | yeah | 20:03 |
blackburn | no idea | 20:03 |
@sonney2k | well I wish we had a cool cmdline / script interface | 20:04 |
@sonney2k | sometimes it sucks to be dependent on other scripting langs | 20:04 |
blackburn | no I do not think we need it | 20:04 |
@sonney2k | but why do you not hate it then? | 20:04 |
blackburn | sonney2k: it is ok :D | 20:04 |
@sonney2k | it is sooo much work and probably no one using it | 20:04 |
blackburn | sonney2k: yeah *your* work | 20:05 |
blackburn | sonney2k: how can you use your cmdline interface? | 20:06 |
blackburn | sonney2k: I mean in python you always can visualize/modify/etc | 20:06 |
@sonney2k | on clusters - nice way to distribute jobs... | 20:06 |
blackburn | I see no domain-specific language of machine learning | 20:06 |
blackburn | on clusters hmm | 20:06 |
blackburn | I've been thinking about it | 20:07 |
@sonney2k | or as background process similar to libsvm | 20:07 |
blackburn | it should look like some worker class | 20:07 |
blackburn | but it is really painful | 20:07 |
blackburn | I think we should rather separate distributed shogun at some point | 20:08 |
blackburn | we can use existent code for that | 20:08 |
wiking | sonney2k: why? | 20:10 |
@sonney2k | blackburn, let me do some quick fixes to ui | 20:17 |
blackburn | sonney2k: pozhaluysta ;) | 20:18 |
-!- cronor_ [~cronor@g231216163.adsl.alicedsl.de] has joined #shogun | 20:19 | |
-!- cronor [~cronor@g231216163.adsl.alicedsl.de] has quit [Read error: Connection reset by peer] | 20:19 | |
-!- cronor_ is now known as cronor | 20:19 | |
-!- n4nd0 [~nando@s83-179-44-135.cust.tele2.se] has quit [Ping timeout: 252 seconds] | 20:21 | |
blackburn | sonney2k: did you try clang_completE? | 20:29 |
wiking | clang_complete++ | 20:31 |
-!- n4nd0 [~nando@s83-179-44-135.cust.tele2.se] has joined #shogun | 20:31 | |
@sonney2k | blackburn, please send me all the links to these things | 20:36 |
@sonney2k | I will try them out... | 20:36 |
blackburn | sonney2k: a sec | 20:36 |
* wiking feels ignored | 20:37 | |
wiking | n4nd0: here? | 20:38 |
blackburn | https://github.com/tpope/vim-pathogen (pathogen system, just put to .vim and add 'call pathogen#infect()' to vim config) | 20:39 |
blackburn | https://github.com/Rip-Rip/clang_complete (clang complete - just put to .vim/bundle) | 20:40 |
blackburn | https://github.com/Lokaltog/vim-powerline (powerline - cool status bar, to make it work in my system requires some custom patched font in your terminal) | 20:40 |
blackburn | https://github.com/tpope/vim-fugitive (git binding, commands like :Gstatus, :Gcommit) | 20:41 |
@sonney2k | wiking, whats up | 20:47 |
CIA-113 | shogun: Soeren Sonnenburg master * rcb41b3b / (4 files in 3 dirs): fix various crashers in static interface - http://git.io/OJe2yg | 20:47 |
wiking | sonney2k: you've asked :) | 20:47 |
@sonney2k | blackburn, what does pathogen do? | 20:47 |
@sonney2k | blackburn, so many! | 20:47 |
blackburn | sonney2k: package system - makes you able to put plugins as is to bundle dir | 20:48 |
blackburn | not to merge directories but bundle/clang_complete for example | 20:48 |
blackburn | .vim/bundle/clang_complete | 20:48 |
blackburn | however you still able to merge anything | 20:48 |
blackburn | for example it wouldn't work for A | 20:49 |
blackburn | sonney2k: I hope you use A? | 20:49 |
blackburn | sonney2k: if you want to install powerline it needs some patching | 20:50 |
wiking | sonney2k: and i was wondering that what has been the outcome of the conversation with vojtech about libqp? | 20:50 |
blackburn | I had to add export TERM="xterm-256color" to my .bashrc | 20:51 |
wiking | blackburn: buuuuuuuu for bash1 | 20:51 |
wiking | blackburn: why don't u use zsh? | 20:51 |
blackburn | why? | 20:51 |
blackburn | why? | 20:51 |
blackburn | :D | 20:51 |
wiking | blackburn: ok this is why: https://github.com/robbyrussell/oh-my-zsh | 20:51 |
wiking | start from here | 20:51 |
wiking | and you'll like it for sure | 20:51 |
wiking | first of course install zsh | 20:52 |
blackburn | wiking: any killer feature? | 20:52 |
wiking | blackburn: many :) | 20:52 |
wiking | blackburn: i like the git support | 20:52 |
blackburn | one? | 20:52 |
blackburn | what's with git support? | 20:52 |
wiking | blackburn: ok let me dig out for u a screenshot | 20:52 |
wiking | blackburn: but the autocompletion with tab is really great as well... | 20:53 |
wiking | blackburn: same with ssh hosts | 20:53 |
blackburn | wiking: I have autocomplete there in bash | 20:53 |
wiking | blackburn: and the autocomplete of various shell commands as well | 20:54 |
wiking | http://stevelosh.com/media/images/blog/2010/02/zsh-prompt.png | 20:54 |
wiking | couldn't find better one now | 20:54 |
wiking | but i might make u a screenshot of mine | 20:54 |
blackburn | wtf is going on | 20:54 |
blackburn | :D | 20:54 |
wiking | blackburn: ? | 20:55 |
blackburn | I do not understand what is going on | 20:55 |
blackburn | sjl at ecgtheow in ~/lib/oh-my-zsh | 20:55 |
blackburn | wtf??! | 20:55 |
blackburn | :D | 20:55 |
blackburn | meaow meaow ~~~ !!@! ~~~ :::: ? | 20:55 |
blackburn | :D | 20:55 |
@sonney2k | blackburn, I installed the clang thing but how can I now complete what I typed? | 20:56 |
@sonney2k | do you perhaps have a config? | 20:56 |
blackburn | sonney2k: just try to write this-> | 20:56 |
blackburn | in any source file | 20:57 |
@sonney2k | wiking, re vojtech - it is in the chat logs. basically all yes but no time now so later once so bmrm is done | 20:57 |
@sonney2k | he will do it or uricamic | 20:57 |
@sonney2k | and yes he liked the idea of getting pr loqo, tron, ... into libqp | 20:57 |
@sonney2k | the c++ interface is sth we have to think about though | 20:57 |
@sonney2k | the only guarantee we have is his support / standard interface | 20:58 |
blackburn | sonney2k: my .vimrc https://gist.github.com/2655129 | 20:58 |
wiking | blackburn: wiking.jol.hu/zsh-git.png | 20:58 |
blackburn | let g:clang_close_preview = 1 | 20:58 |
blackburn | let g:clang_complete_auto=1 | 20:58 |
blackburn | these ones are related to clang | 20:58 |
@sonney2k | then I get User defined completion ^U^N^P Pattern not found | 20:58 |
wiking | sonney2k: vim .clang_complete | 20:58 |
blackburn | hmm | 20:59 |
wiking | and depending where u are at the shogun dir | 20:59 |
wiking | you need to add -I | 20:59 |
wiking | if u know what i mean :) | 20:59 |
wiking | and then you'll be good to go | 20:59 |
wiking | otherwise it cannot find the headers in your include path | 20:59 |
blackburn | I did not do anythin - wiking what do you mean by -I? | 20:59 |
wiking | blackburn: i guess you have shogun installed in a standard path? | 20:59 |
blackburn | yes | 21:00 |
wiking | blackburn: there u go | 21:00 |
blackburn | ah | 21:00 |
wiking | that's why u don't need -I | 21:00 |
wiking | blackburn: do u understand the screenshot? | 21:00 |
blackburn | wiking: yes | 21:00 |
wiking | it's 2 in 1 actually: shows u how your prompt can be tweaked | 21:00 |
wiking | and a little peak about the autocompletion feature | 21:00 |
blackburn | ok I'll try it later | 21:01 |
blackburn | I have to update my distrib in next days | 21:01 |
wiking | and the other good thing is that autocompletion is case insensitive | 21:01 |
n4nd0 | wiking: tell me | 21:01 |
wiking | and if for example you tab 'ogu' | 21:01 |
wiking | and you have shogun at pwd | 21:02 |
wiking | then it'll complete it to be shogun | 21:02 |
wiking | and of course other directories/files that contains 'ogu' char* | 21:02 |
wiking | n4nd0: over with your exams? | 21:02 |
blackburn | huh cool | 21:02 |
n4nd0 | wiking: yeah | 21:02 |
wiking | n4nd0: have time to talk now | 21:02 |
n4nd0 | wiking: yes | 21:03 |
wiking | especially about where to put the PSI | 21:03 |
wiking | and how in SO | 21:03 |
blackburn | oh headache discussions | 21:03 |
blackburn | Im off :D | 21:03 |
wiking | blackburn: <ignore> | 21:03 |
wiking | :D | 21:03 |
n4nd0 | wiking: I don't know if you have seen something in the logs before | 21:03 |
n4nd0 | there is a small UML diagram | 21:03 |
wiking | n4nd0: yep i've checked that unreadable log | 21:03 |
wiking | on gist | 21:04 |
n4nd0 | ok I will paste the diagram again | 21:04 |
wiking | thnx | 21:04 |
@sonney2k | blackburn, http://shogun-toolbox.org/buildbot/builders/r_static/builds/816/steps/compile/logs/warnings%20%283%29 | 21:04 |
@sonney2k | for you :D | 21:04 |
blackburn | thanks | 21:04 |
n4nd0 | wiking: http://dl.dropbox.com/u/11020840/shogun/Test.jpeg | 21:04 |
blackburn | I've been waiting for this moment whole my life ;0 | 21:04 |
n4nd0 | wiking: so that function will go into CStructuredModel | 21:04 |
blackburn | http://www.youtube.com/watch?feature=player_detailpage&v=5PUvcu8iDBU | 21:05 |
wiking | n4nd0: compute_joint_feature_map? | 21:05 |
wiking | i mean compute_joint_feature () | 21:05 |
n4nd0 | yes | 21:05 |
n4nd0 | wiking: there are still pieces to think about there though | 21:05 |
wiking | ok so here's my question | 21:05 |
wiking | i come with an SO | 21:06 |
wiking | and i want to define my own PSI | 21:06 |
wiking | do i inherit from CstructuredModel? | 21:06 |
n4nd0 | yes | 21:06 |
@sonney2k | blackburn, you are the one on the very left right? | 21:06 |
@sonney2k | hah | 21:06 |
wiking | n4nd0: why | 21:06 |
n4nd0 | wiking: why not? | 21:06 |
blackburn | sonney2k: no next to the very right | 21:06 |
n4nd0 | wiking: one has to define application specific things in any case | 21:06 |
wiking | n4nd0: so PSI is essentially (x,y) -> R^n | 21:07 |
wiking | right? | 21:07 |
n4nd0 | wiking: is it an issue to do that inheriting from it? | 21:07 |
@sonney2k | blackburn, and I found you as a kid https://www.youtube.com/watch?v=c3badX897KM&feature=endscreen&NR=1 | 21:07 |
n4nd0 | wiking: yes | 21:07 |
wiking | n4nd0: well why don't just use callback method? | 21:07 |
n4nd0 | wiking: but we have to see how to adapt it for your latent thing | 21:07 |
wiking | i mean why do you want to inherit a whole class | 21:07 |
blackburn | sonney2k: guilty :( | 21:08 |
wiking | so why don't u just make it as a function pointer that has to be passed | 21:08 |
n4nd0 | wiking: explain me how this callback work | 21:08 |
wiking | n4nd0: function pointer | 21:08 |
wiking | something like (Feature*) (compute_psi*) (feature x, feature y); | 21:08 |
n4nd0 | wiking: I see that | 21:08 |
wiking | you implement that function | 21:08 |
wiking | and pass the pointer to it | 21:08 |
wiking | same with argmax | 21:09 |
n4nd0 | wiking: but where do we define that function? | 21:09 |
wiking | n4nd0: in the header | 21:09 |
blackburn | sonney2k: these warnings are impossible :D | 21:09 |
n4nd0 | wiking: how does CSOMachine access it? | 21:09 |
wiking | i mean the prototype | 21:09 |
wiking | n4nd0: well how does it access now ? :)) | 21:09 |
wiking | it's a public method | 21:09 |
n4nd0 | wiking: CStructuredModel is a member of it | 21:09 |
wiking | or protected? | 21:10 |
wiking | no worries if it's a member of it | 21:10 |
wiking | you'll have the reference for it | 21:10 |
wiking | and that's it | 21:10 |
wiking | i mean that function is user defined | 21:10 |
n4nd0 | wiking: yes | 21:10 |
wiking | so it will be implemented | 21:10 |
wiking | and then you just pass a pointer to that function | 21:10 |
n4nd0 | wiking: where do you pass it? | 21:10 |
wiking | and 'save' it in Smodel | 21:10 |
wiking | who constructs Smodel? | 21:11 |
n4nd0 | wiking: when a StructuredModel is created? | 21:11 |
wiking | n4nd0: essentially yes | 21:11 |
wiking | check this | 21:11 |
wiking | fuck where is it | 21:12 |
n4nd0 | wiking: and before I didn't mean the log in gist but the one this afternoon ;) | 21:12 |
wiking | n4nd0: ah ok haven't seen that one | 21:12 |
wiking | only the gist one | 21:12 |
@sonney2k | blackburn, ok then we just have to wait | 21:12 |
@sonney2k | buildbot is overloaded | 21:12 |
wiking | n4nd0 https://github.com/vigsterkr/shogun/blob/latent/src/shogun/classifier/svm/LatentLinearMachine.h | 21:12 |
n4nd0 | wiking: but it's ok, I don't think you need to check it | 21:12 |
blackburn | yeah these warnring already disappeared in libshogun compile | 21:12 |
wiking | n4nd0: https://github.com/vigsterkr/shogun/blob/latent/src/shogun/classifier/svm/LatentLinearMachine.h#L22 | 21:13 |
wiking | and then L30 | 21:13 |
wiking | so basically you need to implement that function | 21:13 |
wiking | and you call the ctor with that function pointer | 21:13 |
wiking | and that's it | 21:13 |
shogun-buildbot | build #804 of python_static is complete: Success [build successful] Build details are at http://www.shogun-toolbox.org/buildbot/builders/python_static/builds/804 | 21:13 |
n4nd0 | wiking: your solution looks much better actually | 21:13 |
wiking | the thing is for me.... i have to be able to call this after each iteration | 21:14 |
wiking | because i have PSI(x,y,h) | 21:14 |
-!- gsomix [~gsomix@188.168.14.199] has joined #shogun | 21:14 | |
wiking | and h is changing in each iteration | 21:14 |
wiking | thus i need to recalculate PSI | 21:14 |
wiking | for all the feature vectors | 21:14 |
n4nd0 | wiking: ok I will definetely go with pointer functions as you have suggested | 21:15 |
wiking | and now that we are at it | 21:15 |
wiking | since more or less we are going to share SModel | 21:15 |
gsomix | sonney2k, moin. It's all ok, I'm working. I need approximately one evening for changes in code. | 21:15 |
wiking | i'm not 100% if we should call it like that | 21:15 |
wiking | ooor | 21:15 |
wiking | that it needs to be implemented now | 21:15 |
wiking | :) | 21:15 |
n4nd0 | wiking: but even with pointer functions, I see an issue | 21:15 |
wiking | or i inherit from it | 21:16 |
n4nd0 | wiking: the psi you need for latent has different parameters than the normal one | 21:16 |
wiking | anyways i'll need to inherit from it... since i have an extra parameter for PSI | 21:16 |
wiking | n4nd0: depends | 21:16 |
wiking | n4nd0: i mean if i want latent SO svm | 21:16 |
wiking | then i have PSI(x,y,h) | 21:16 |
wiking | but if i do latent svm | 21:16 |
wiking | then it's PSI(x,h) | 21:16 |
n4nd0 | wiking: do you think it is a good solution to make psi(x,y,h) | 21:17 |
wiking | n4nd0: well i would like to have it | 21:17 |
n4nd0 | wiking: and if it is going to be used for non-laten, h is not used | 21:17 |
n4nd0 | latent* | 21:17 |
wiking | n4nd0: mono i mean psi(x,y,h) is just latent for sure | 21:17 |
wiking | i.e. latent structural svm | 21:17 |
n4nd0 | yeah, I see that | 21:17 |
n4nd0 | but now | 21:18 |
wiking | but for example since i first do simple latent svm | 21:18 |
wiking | since we don't support yet SO | 21:18 |
wiking | then essentially i would use the same PSI function as you | 21:18 |
wiking | the meaning of it would be different of course | 21:18 |
n4nd0 | is it possible to have a StructuredModel that works for both (latent and not latent structural)? | 21:18 |
@sonney2k | gsomix, good to hear | 21:18 |
wiking | since for me it's PSI(x,h) and for you it's PSI(x,y) but the function/class should not care about this | 21:19 |
blackburn | oops | 21:19 |
wiking | n4nd0: not for both | 21:19 |
blackburn | I lost code because of git checkout | 21:19 |
@sonney2k | hey yeah | 21:19 |
@sonney2k | shogun-buildbot, love and kisses! | 21:19 |
shogun-buildbot | What you say! | 21:19 |
blackburn | help! | 21:19 |
blackburn | can I about checkout? | 21:19 |
blackburn | abort* | 21:19 |
n4nd0 | wiking: then you will need your own CStructuredModel? | 21:19 |
wiking | n4nd0: i will need to derive a class that which can handle 3 parameters x,y,h | 21:20 |
wiking | n4nd0: but that's only when you are ready with SO | 21:20 |
wiking | SO svm that is | 21:20 |
wiking | so for now | 21:20 |
blackburn | PANIC!! | 21:20 |
wiking | SModel as is would be fine for me | 21:20 |
wiking | not realy | 21:20 |
wiking | so i mean i would need to ad modifications to id | 21:21 |
wiking | to it | 21:21 |
wiking | but for example i could use it as a base class | 21:21 |
wiking | so that's why i think that we should think about sharing this class | 21:21 |
wiking | so that we don't do too much of a code duplication here | 21:21 |
n4nd0 | ok | 21:21 |
wiking | because either now or on the end of GSoC we'll need to merge this | 21:22 |
wiking | i mean it would be nice to be able to merge it | 21:22 |
n4nd0 | better to do it from the very beginning | 21:22 |
n4nd0 | to think of it | 21:22 |
wiking | since as i said i want to have support for latent s-svm | 21:22 |
blackburn | yay it is not lost! | 21:22 |
n4nd0 | blackburn: nice | 21:22 |
n4nd0 | wiking: ok, so let me prepare some code for the part I have shown you in the diagram | 21:23 |
wiking | n4nd0: ok but then again as i said | 21:23 |
n4nd0 | wiking: and later we discuss again to ensure that everything fits | 21:23 |
wiking | we should think about the naming :) | 21:23 |
wiking | okok | 21:23 |
n4nd0 | wiking: sure | 21:23 |
wiking | think about the function pointer in the case of PSI and argmax as well | 21:23 |
n4nd0 | wiking: what part of the naming do you refer to? | 21:23 |
wiking | that it's actually StructuralModel | 21:23 |
wiking | or StructuredModel | 21:23 |
wiking | because for me that is LatentModel | 21:24 |
wiking | so to say | 21:24 |
wiking | ;P | 21:24 |
n4nd0 | wiking: it makes no difference for me | 21:24 |
wiking | n4nd0: yeah of course not | 21:24 |
n4nd0 | I mean, I don't know the difference between both | 21:24 |
n4nd0 | wiking: what is the difference? | 21:24 |
wiking | n4nd0: well that's in the box it'll be essentially the same | 21:24 |
wiking | but it has different semantical meaning :) | 21:24 |
n4nd0 | what is structured and structural? | 21:24 |
wiking | but the functions inside | 21:24 |
n4nd0 | I have used both as synonyms this far | 21:25 |
wiking | ah no i was meaning here structured vs latent | 21:25 |
wiking | so you named CStruturedModel | 21:25 |
n4nd0 | oh ok, I misunderstood | 21:25 |
wiking | but since i'd almost use the same class for myself | 21:25 |
n4nd0 | :D | 21:25 |
wiking | then we should be able to name it in a more general way | 21:25 |
wiking | but anyhow | 21:26 |
wiking | we'll rename it later | 21:26 |
wiking | just do the code part | 21:26 |
wiking | and when u have that part ready | 21:26 |
wiking | i'll try to cherry-pick from your git | 21:26 |
n4nd0 | I have already started that part today | 21:26 |
wiking | and then somehow merge ithat part into mine | 21:26 |
wiking | n4nd0: cool | 21:26 |
n4nd0 | so for tomorrow I will probably have that part I showed you in the diagram | 21:26 |
wiking | n4nd0: do you have a branch for that dev? | 21:26 |
wiking | that i could follow or something | 21:26 |
n4nd0 | wiking: not committed yet since it is in non-compilable state | 21:26 |
wiking | yeye but if it's going to be commited | 21:27 |
n4nd0 | yes | 21:27 |
wiking | i mean when it's going to be commited | 21:27 |
wiking | you'll have a working branch for that or something | 21:27 |
n4nd0 | sure | 21:27 |
n4nd0 | it's called so | 21:27 |
n4nd0 | "so" (to avoid misunderstandings) :P | 21:27 |
wiking | ahahhah | 21:27 |
wiking | mmm github is slow | 21:28 |
wiking | n4nd0: that branch is not yet published right? since i just see structure | 21:28 |
n4nd0 | wiking: no no | 21:28 |
n4nd0 | wiking: nothing committed yet | 21:29 |
wiking | ok | 21:29 |
wiking | i'll follow u on github | 21:29 |
wiking | and then i'll get a notification | 21:29 |
n4nd0 | doesn't compile because I have not defined yet CStructuredLabels and the like | 21:29 |
wiking | yeye sure | 21:29 |
shogun-buildbot | build #838 of cmdline_static is complete: Success [build successful] Build details are at http://www.shogun-toolbox.org/buildbot/builders/cmdline_static/builds/838 | 21:29 |
wiking | thnx a lot | 21:29 |
wiking | and lets see then in the upcoming days | 21:29 |
n4nd0 | :) | 21:30 |
blackburn | http://i.imgur.com/EoqO9.gif | 21:40 |
n4nd0 | that cannot be for real | 21:41 |
n4nd0 | :O | 21:41 |
blackburn | and in the end he is like | 21:41 |
blackburn | YAY | 21:41 |
CIA-113 | shogun: Soeren Sonnenburg master * r3ac30d8 / (3 files in 3 dirs): remove free_{vector,matrix} from typemaps - http://git.io/CNovcQ | 21:42 |
CIA-113 | shogun: Soeren Sonnenburg master * r39b064e / src/shogun/classifier/svm/SVMLight.cpp : fix crasher in mkl / svmlight - http://git.io/PhoqIw | 21:47 |
blackburn | regression fails here in libshogun | 21:53 |
shogun-buildbot | build #819 of r_static is complete: Success [build successful] Build details are at http://www.shogun-toolbox.org/buildbot/builders/r_static/builds/819 | 22:15 |
gsomix | good night guys | 22:29 |
blackburn | sonney2k: so did you make it work? | 22:29 |
n4nd0 | see you tomorrow guys | 22:41 |
-!- n4nd0 [~nando@s83-179-44-135.cust.tele2.se] has quit [Quit: leaving] | 22:41 | |
blackburn | see ya | 22:41 |
-!- gsomix is now known as gsomix|z-z-z | 22:46 | |
-!- karlnapf [~heiko@host86-176-3-209.range86-176.btcentralplus.com] has joined #shogun | 22:49 | |
-!- nickon [~noneedtok@d54C1F8A8.access.telenet.be] has quit [Quit: ( www.nnscript.com :: NoNameScript 4.22 :: www.esnation.com )] | 23:01 | |
-!- karlnapf [~heiko@host86-176-3-209.range86-176.btcentralplus.com] has left #shogun [] | 23:26 | |
-!- cronor_ [~cronor@g230123190.adsl.alicedsl.de] has joined #shogun | 23:39 | |
-!- cronor [~cronor@g231216163.adsl.alicedsl.de] has quit [Ping timeout: 260 seconds] | 23:41 | |
-!- cronor_ is now known as cronor | 23:41 | |
blackburn | sonney2k: with proper schedule and other options it is as fast as pthreads | 23:49 |
--- Log closed Fri May 11 00:00:40 2012 |
Generated by irclog2html.py 2.10.0 by Marius Gedminas - find it at mg.pov.lt!