--- Log opened Fri Feb 23 00:00:14 2018 | ||
-!- travis-ci [~travis-ci@ec2-54-159-25-82.compute-1.amazonaws.com] has joined #shogun | 00:02 | |
travis-ci | it's Viktor Gal's turn to pay the next round of drinks for the massacre he caused in shogun-toolbox/shogun: https://travis-ci.org/shogun-toolbox/shogun/builds/345028534 | 00:02 |
---|---|---|
-!- travis-ci [~travis-ci@ec2-54-159-25-82.compute-1.amazonaws.com] has left #shogun [] | 00:02 | |
-!- witness [uid10044@gateway/web/irccloud.com/x-eeknbaklfwlebfqp] has quit [Quit: Connection closed for inactivity] | 00:24 | |
-!- Netsplit *.net <-> *.split quits: shogun-buildbot_ | 08:31 | |
-!- lisitsyn [~lisitsyn@37.139.2.75] has quit [Ping timeout: 260 seconds] | 08:34 | |
-!- lisitsyn [~lisitsyn@37.139.2.75] has joined #shogun | 08:34 | |
-!- Netsplit over, joins: shogun-buildbot_ | 08:57 | |
-!- Netsplit *.net <-> *.split quits: shogun-buildbot_ | 09:12 | |
-!- shogun-buildbot [~shogun-bu@7nn.de] has joined #shogun | 09:33 | |
-!- shogitter [~nodebot@ks312251.kimsufi.com] has quit [Remote host closed the connection] | 10:24 | |
-!- shogitter [~nodebot@ks312251.kimsufi.com] has joined #shogun | 10:25 | |
-!- sukey [~nodebot@ks312251.kimsufi.com] has joined #shogun | 10:25 | |
-!- mode/#shogun [+o sukey] by ChanServ | 10:25 | |
-!- travis-ci [~travis-ci@ec2-54-159-172-186.compute-1.amazonaws.com] has joined #shogun | 10:40 | |
travis-ci | it's Viktor Gal's turn to pay the next round of drinks for the massacre he caused in shogun-toolbox/shogun: https://travis-ci.org/shogun-toolbox/shogun/builds/345164630 | 10:40 |
-!- travis-ci [~travis-ci@ec2-54-159-172-186.compute-1.amazonaws.com] has left #shogun [] | 10:40 | |
-!- shenghac [uid281668@gateway/web/irccloud.com/x-nxgvoqoyogpzaksq] has quit [Quit: Connection closed for inactivity] | 10:52 | |
-!- shogun-buildbot [~shogun-bu@7nn.de] has quit [Remote host closed the connection] | 11:12 | |
-!- shogun-buildbot [~shogun-bu@7nn.de] has joined #shogun | 11:15 | |
@wiking | shogun-buildbot: force build 'woboq - nightly' | 11:15 |
lisitsyn | oh woboq? | 11:16 |
lisitsyn | wiking: did you set up woboq? | 11:16 |
@wiking | yes | 11:17 |
@wiking | or trying to | 11:17 |
lisitsyn | ah you naughty devops | 11:17 |
@wiking | ? | 11:17 |
lisitsyn | :P | 11:17 |
lisitsyn | jk | 11:17 |
@wiking | if you call me one more time devop | 11:17 |
@wiking | i'm gonna rm -rf mysekf | 11:17 |
@wiking | from all machines | 11:17 |
@wiking | :) | 11:17 |
lisitsyn | hahah | 11:18 |
-!- shogun-buildbot [~shogun-bu@7nn.de] has quit [Remote host closed the connection] | 11:18 | |
lisitsyn | wiking: nooo don't destroy buildbot | 11:18 |
lisitsyn | :) | 11:18 |
lisitsyn | wiking: why do you want woboq? | 11:18 |
-!- shogun-buildbot [~shogun-bu@7nn.de] has joined #shogun | 11:18 | |
@wiking | shogun-buildbot: force build 'woboq - nightly' | 11:18 |
@wiking | lisitsyn, some more understanding of this mess | 11:19 |
lisitsyn | okie | 11:19 |
@wiking | but i should do breathe as well | 11:19 |
@wiking | currently working on random refactor | 11:19 |
@wiking | its a mess | 11:19 |
lisitsyn | but you need quantum physics to understand the mess, don't you | 11:19 |
lisitsyn | :P | 11:19 |
@wiking | :) | 11:19 |
lisitsyn | ok sounds like I have time to clone arrays | 11:20 |
lisitsyn | wiking: did you know cloning arrays is forbidden everywhere but in china? | 11:20 |
@wiking | ? | 11:20 |
lisitsyn | wiking: oh my jokes are missing the target today | 11:20 |
lisitsyn | :( | 11:21 |
@wiking | :) | 11:22 |
@wiking | oh man this is shit | 11:24 |
@wiking | stopping it | 11:24 |
@wiking | :) | 11:24 |
@wiking | thnx | 11:24 |
@wiking | :> | 11:24 |
@wiking | somebody should pick it up one day | 11:24 |
lisitsyn | wiking: pick what? | 11:24 |
@wiking | woboq | 11:24 |
lisitsyn | no work? | 11:25 |
@wiking | nowork | 11:25 |
@wiking | :) | 11:25 |
lisitsyn | no trabaje | 11:25 |
@wiking | this is super swap | 11:27 |
@wiking | static inline void swap(T &a,T &b) | 11:27 |
@wiking | { | 11:27 |
@wiking | T c=a; | 11:27 |
@wiking | a=b; | 11:27 |
@wiking | b=c; | 11:27 |
@wiking | } | 11:27 |
@wiking | :)))) | 11:27 |
@wiking | man shit we have in this codebase is amazing | 11:27 |
lisitsyn | wiking: std::tie(a, b) = std::tie(b, a)! | 11:28 |
@wiking | :) | 11:28 |
lisitsyn | wiking: but what's wrong with that swap en general? | 11:29 |
lisitsyn | una puedo a utilizar eso | 11:29 |
lisitsyn | no? | 11:29 |
lisitsyn | :P | 11:29 |
@wiking | i mean | 11:29 |
@wiking | i doubt that the compiler can detect that | 11:30 |
@wiking | in case of int or other primitive types | 11:30 |
@wiking | that swap is 1 instrucation | 11:30 |
@wiking | right? :) | 11:30 |
lisitsyn | yes but there is no standard way to swap | 11:30 |
lisitsyn | how to solve that? | 11:30 |
@wiking | std::swap? | 11:31 |
lisitsyn | ah | 11:31 |
lisitsyn | oops | 11:31 |
lisitsyn | :P | 11:31 |
@wiking | :D | 11:31 |
lisitsyn | wiking: well that's from ancient times then | 11:31 |
lisitsyn | when std was no std | 11:31 |
@wiking | but this actually should be changes more | 11:31 |
@wiking | as this is about random shuffling an array | 11:31 |
@wiking | woohoooo | 11:50 |
@wiking | lisitsyn, how do you feel about SGObject to be a template? :) | 11:50 |
lisitsyn | wiking: what's T? | 11:51 |
@wiking | lisitsyn, class T = std::mt19937_64 | 11:51 |
lisitsyn | oh no whyy | 11:51 |
@wiking | we need a prng | 11:51 |
@wiking | for sgobjects | 11:51 |
lisitsyn | wiking: put it to Self | 11:51 |
@wiking | so then the prng of a class is | 11:51 |
@wiking | this->self->prng ? | 11:51 |
@wiking | a bit quircky | 11:52 |
lisitsyn | yes but make it accessible via prng() | 11:52 |
lisitsyn | ah | 11:52 |
lisitsyn | you need the type? | 11:52 |
lisitsyn | wiking: but it has some very specific interface | 11:52 |
lisitsyn | why not making it virtual | 11:52 |
@wiking | problem that it doesn't have a common tiype | 11:52 |
@wiking | only a concept :P | 11:52 |
lisitsyn | yeah but you can introduce an interface | 11:53 |
@wiking | http://en.cppreference.com/w/cpp/numeric/random | 11:53 |
lisitsyn | and then implement simple delegate for mt19937 and everything else | 11:53 |
lisitsyn | Mt19937Random : public Random | 11:53 |
lisitsyn | blabla? | 11:53 |
@wiking | so you want me to do that everybody in c++ standard solved with | 11:53 |
@wiking | a nice template | 11:53 |
@wiking | ? :) | 11:53 |
@wiking | :D | 11:53 |
lisitsyn | template is nice if you develop 10-liner | 11:53 |
lisitsyn | :P | 11:53 |
@wiking | this is the problem | 11:54 |
@wiking | http://en.cppreference.com/w/cpp/concept/UniformRandomBitGenerator | 11:54 |
@wiking | that there's no bla for this | 11:54 |
@wiking | btw i mean one should only use prng within the implementation | 11:54 |
lisitsyn | but it is super simple | 11:54 |
lisitsyn | let me sketch | 11:54 |
-!- HeikoS [~heiko@host86-129-231-92.range86-129.btcentralplus.com] has joined #shogun | 11:58 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 11:58 | |
lisitsyn | wiking: https://ideone.com/BFxbZq | 12:00 |
lisitsyn | wiking: template impl but non-template base | 12:00 |
lisitsyn | no? | 12:00 |
@wiking | no | 12:00 |
@wiking | :) | 12:00 |
lisitsyn | why? | 12:00 |
@wiking | i mean then what you want | 12:00 |
@wiking | is to have the interface | 12:00 |
@wiking | of the concept | 12:00 |
lisitsyn | yes exactly | 12:00 |
@wiking | :) | 12:00 |
@wiking | the concept needs more | 12:00 |
lisitsyn | convert concept to interface | 12:01 |
@wiking | operator() | 12:01 |
@wiking | min() | 12:01 |
@wiking | max() | 12:01 |
@wiking | etc | 12:01 |
@wiking | :) | 12:01 |
lisitsyn | you can rename these methods in interfaces | 12:01 |
@wiking | yeye | 12:01 |
@wiking | but i mean | 12:01 |
@wiking | on the other hand | 12:01 |
@wiking | this could be simpley compiled there | 12:01 |
@wiking | w/o vtables | 12:01 |
@wiking | etc | 12:01 |
@wiking | right? :) | 12:01 |
lisitsyn | yes but you have no concepts for 3 more years | 12:01 |
@wiking | :D | 12:01 |
@wiking | but me haz templates :) | 12:02 |
@wiking | but yeah i get it that it'd be shit heavy | 12:02 |
lisitsyn | wiking: just make Self or something inside Self templated | 12:02 |
@wiking | and actually nobody ever would change the prng | 12:02 |
lisitsyn | then it is okish | 12:02 |
@wiking | so i could actually just fix there the prng | 12:02 |
@wiking | in sgobject | 12:02 |
@wiking | and forgetit | 12:02 |
lisitsyn | otherwise every user of SGObject would get a shitload | 12:02 |
@wiking | how about that? | 12:03 |
@wiking | ^ fixing | 12:03 |
lisitsyn | I am fine also | 12:03 |
@wiking | the prng to a specific instance | 12:03 |
lisitsyn | if it is bad then change | 12:03 |
lisitsyn | :D | 12:03 |
lisitsyn | HeikoS: hey | 12:03 |
@HeikoS | hihi | 12:03 |
@HeikoS | whazzup? | 12:03 |
@wiking | lisitsyn, we've benchmarked and the mersenne 64bit is as fast as ours atm | 12:03 |
@wiking | so should be find | 12:04 |
@wiking | *fine | 12:04 |
lisitsyn | HeikoS: let me gist you something that would help you | 12:04 |
@HeikoS | lisitsyn: ehm sure :) | 12:04 |
lisitsyn | HeikoS: https://gist.github.com/lisitsyn/9f69efa966c7a9b1b099643b5ff51ceb | 12:05 |
lisitsyn | here you go | 12:05 |
lisitsyn | HeikoS: put it to tests/unit/lib and rinse-repeat until something you want works | 12:05 |
@HeikoS | ah coolio | 12:05 |
@HeikoS | will try | 12:05 |
lisitsyn | HeikoS: we don't change library often | 12:06 |
lisitsyn | but you can hack .h this way | 12:06 |
@HeikoS | yeah | 12:06 |
lisitsyn | if you change .cpp you should recompile | 12:06 |
@HeikoS | nice | 12:06 |
lisitsyn | it links to built libshogun | 12:06 |
lisitsyn | HeikoS: this was my preparation for array clone so lets see if I get something to work | 12:07 |
@HeikoS | hehe | 12:07 |
@HeikoS | ok | 12:07 |
@HeikoS | lisitsyn: we should be able to register std::vector at some point btw | 12:07 |
lisitsyn | HeikoS: you can register | 12:07 |
lisitsyn | but no sg_add then | 12:07 |
@HeikoS | kk might try that | 12:08 |
@HeikoS | I guess clone/equals also needs work in that case | 12:08 |
lisitsyn | HeikoS: ah ok | 12:08 |
lisitsyn | yeah needs patching probably | 12:08 |
lisitsyn | HeikoS: not clone | 12:08 |
lisitsyn | but equals | 12:08 |
Trixis | wiking: gsoc apps are in march right? | 12:08 |
lisitsyn | HeikoS: we need to specialize for 'iterable' 'concept' | 12:09 |
@HeikoS | yep | 12:09 |
@wiking | Trixis, yes | 12:10 |
@wiking | Trixis, https://developers.google.com/open-source/gsoc/timeline | 12:11 |
Trixis | mmk. I might be applying. | 12:11 |
@HeikoS | lisitsyn: the makefile doesnt work | 12:11 |
@HeikoS | does it work for you? | 12:11 |
@HeikoS | I mean I can fix it | 12:12 |
@wiking | Trixis, should! | 12:12 |
lisitsyn | HeikoS: yes that's what I use | 12:12 |
lisitsyn | HeikoS: what doesn't work? | 12:12 |
@HeikoS | gmock include dir | 12:13 |
Trixis | wiking: kk | 12:13 |
lisitsyn | HeikoS: uhm don't you have gmock there? | 12:13 |
@wiking | lisitsyn, lemme know when u got a sec | 12:13 |
lisitsyn | wiking: n0w! | 12:13 |
Trixis | wiking: i will unless i get response from another thing first (MPI-IS, tuebingen, I have discussed it with group lead there, she's going to now discuss it with Bernhard Sch?lkopf) | 12:14 |
@wiking | lisitsyn, think of a BaggingMachine or any other stuff that has some other method wrapped that is based on randoms... (baggingmachine is good for this)... how would you fix all the seeds for all the machines ? | 12:14 |
@wiking | lisitsyn, in this case a function programming approach would be the best | 12:15 |
@wiking | where seed is either a function that generates a proper random seed | 12:15 |
@wiking | or the fixed one that one supplied | 12:15 |
lisitsyn | wiking: uhmm I think it should be either set or be unspecified | 12:15 |
lisitsyn | like | 12:16 |
lisitsyn | wiking: it is actually better be inherited | 12:16 |
lisitsyn | if it is set | 12:16 |
@wiking | but how? | 12:16 |
@wiking | you imagine that seed is a nullptr? | 12:16 |
@wiking | and then if !nullptr | 12:16 |
@wiking | then just set? | 12:16 |
lisitsyn | wiking: I don't know implementation wise | 12:16 |
lisitsyn | yeah maybe | 12:16 |
@wiking | yeye no what i mena | 12:17 |
@wiking | i mean if i pass a function | 12:17 |
@wiking | for seed | 12:17 |
@wiking | then i can play with thing in the background | 12:17 |
@wiking | see what i mean? | 12:17 |
@wiking | so if i have a generator for a seed then i can always pass that around | 12:17 |
@wiking | regardless whether the seed is actually fixed or not | 12:17 |
@wiking | if not fixed the generator will generate seed based on your /dev/urandom | 12:18 |
@wiking | if it's set it always returns the same seed | 12:18 |
lisitsyn | wiking: from user point of view probably | 12:18 |
lisitsyn | it makes sense to have a global function | 12:18 |
lisitsyn | set_seed | 12:18 |
@wiking | yeyea | 12:18 |
lisitsyn | and then any new object | 12:18 |
lisitsyn | inherits this seed | 12:18 |
@wiking | but i'm talking internally | 12:18 |
@wiking | so that when you are a method dewvelop | 12:19 |
lisitsyn | internally I guess it is Optional<int> seed; | 12:19 |
@wiking | you always pass around the seed generator function | 12:19 |
lisitsyn | and you use seed.getOrElse(globalSeed) | 12:19 |
@wiking | global seed? | 12:19 |
@wiking | global seed is fsck | 12:19 |
lisitsyn | wiking: we need a way to set seed for everything | 12:20 |
@wiking | hehe no | 12:20 |
@wiking | we currently have that | 12:20 |
@wiking | and that is fucked | 12:20 |
@wiking | :) | 12:20 |
@wiking | see the story of unit testing | 12:20 |
@wiking | :D | 12:20 |
@wiking | if you put a breakpoint on set_global_seed | 12:20 |
@wiking | you'll see what i mean | 12:20 |
@wiking | we have fixtures | 12:21 |
@wiking | taht are setting global seeds | 12:21 |
@wiking | and then we have various methods (unit tests) that are fixing seeds | 12:21 |
@wiking | and they are all contradicting | 12:21 |
@wiking | and imagine that you wanna run 2 models | 12:21 |
@wiking | with 2 different seeds | 12:21 |
@wiking | if you rely on global seeds | 12:21 |
@wiking | what happens? | 12:21 |
@wiking | (in parallel) | 12:21 |
@wiking | so global seed = only if it's coming from /dev/urandom | 12:22 |
@wiking | :) | 12:22 |
lisitsyn | nono | 12:22 |
lisitsyn | I mean global default seed | 12:22 |
lisitsyn | it is either present or not | 12:23 |
lisitsyn | I mean it is cruel to force users to find all the objects that may use something random | 12:23 |
-!- HeikoS [~heiko@host86-129-231-92.range86-129.btcentralplus.com] has quit [Ping timeout: 240 seconds] | 12:23 | |
@wiking | lisitsyn, nobody does this | 12:24 |
@wiking | i mean global seed | 12:24 |
@wiking | because of the above mentioned reason | 12:24 |
@wiking | i mean you as a method developer | 12:25 |
lisitsyn | wiking: don't you need a way to set everything in stone? | 12:25 |
@wiking | should take care that your seed is being set | 12:25 |
@wiking | to all the objects | 12:25 |
@wiking | you use | 12:25 |
@wiking | and then that seed either can be a totally random seed | 12:25 |
@wiking | so say i have random machine | 12:26 |
lisitsyn | so you mean you set a seed for bagging machine? | 12:26 |
@wiking | that uses random kernel | 12:26 |
lisitsyn | I kinda agree but totally clueless how to inherit that stuff | 12:26 |
@wiking | random machine implementor | 12:26 |
@wiking | make sure that it sets the seed of random kernel | 12:26 |
lisitsyn | we might need to move factory methods to objects then | 12:26 |
@wiking | that is the same seed that the random machine has | 12:26 |
lisitsyn | ah ok | 12:27 |
@wiking | this is why i said | 12:27 |
@wiking | that if it's a function | 12:27 |
lisitsyn | this might work | 12:27 |
@wiking | and not an actual value | 12:27 |
@wiking | i mean this method you are setting around | 12:27 |
@wiking | i.e. wiring | 12:27 |
@wiking | then the random kernel and all these stuff | 12:27 |
@wiking | shouldn't care about anything else | 12:27 |
@wiking | they just call | 12:27 |
@wiking | get_seed() | 12:27 |
@wiking | that is either a nice seed from a prng | 12:28 |
@wiking | or a fixed seed | 12:28 |
lisitsyn | yeah but I am worried about need to manually inherit them | 12:28 |
lisitsyn | probably we can do it via parameter map somehow | 12:28 |
@wiking | the only other way is | 12:28 |
@wiking | global | 12:28 |
@wiking | that we have now | 12:28 |
lisitsyn | no, semi-automatic via parameter map | 12:28 |
lisitsyn | walk through the graph and let everyone now you have a seed now | 12:28 |
lisitsyn | know* | 12:29 |
@wiking | ok we have a reserved word | 12:29 |
@wiking | "seed" | 12:29 |
-!- HeikoS [~heiko@host86-129-231-92.range86-129.btcentralplus.com] has joined #shogun | 12:29 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 12:29 | |
@wiking | and then you just traverse the tree? | 12:29 |
@wiking | and put("seed",...) | 12:29 |
@wiking | ? | 12:29 |
lisitsyn | yeah | 12:29 |
@wiking | mmm | 12:29 |
lisitsyn | might work? | 12:29 |
@wiking | would be nice if it is a std::function | 12:29 |
@wiking | instead of a value | 12:29 |
lisitsyn | function of what? | 12:30 |
lisitsyn | it computes seed based on? | 12:30 |
@wiking | std::function(unsigned[]()) | 12:30 |
lisitsyn | no args? | 12:30 |
@wiking | noup | 12:30 |
@wiking | it's a function | 12:30 |
lisitsyn | why function? | 12:30 |
@wiking | because if you wanna be truly random | 12:30 |
@wiking | then your seed should be generated | 12:30 |
@wiking | when you want it | 12:30 |
@wiking | as it depends on a random_device | 12:31 |
lisitsyn | why not generate it if it is not set/ | 12:31 |
lisitsyn | if it is 0/nullptr/blabla then generate | 12:31 |
@wiking | do we have optional? | 12:31 |
@wiking | ++17? | 12:31 |
@wiking | :( | 12:31 |
@wiking | anyways has | 12:32 |
lisitsyn | wiking: we have optional in our lib but you don't need optional | 12:32 |
lisitsyn | you can check if it has that parameter | 12:32 |
lisitsyn | if not - generate and put it | 12:32 |
@wiking | (see my last sentence) | 12:32 |
@wiking | put? | 12:32 |
@wiking | why put? :) | 12:32 |
lisitsyn | to remember it | 12:32 |
lisitsyn | :) | 12:32 |
@wiking | but why? | 12:32 |
lisitsyn | uhm | 12:33 |
lisitsyn | yeah no need to | 12:33 |
@wiking | i mean you want to repriduce | 12:33 |
@wiking | i understand | 12:33 |
@wiking | but then set the seed | 12:33 |
@wiking | :) | 12:33 |
lisitsyn | yeah ok | 12:33 |
@wiking | if you wanna reproduce that it's triuly random | 12:33 |
@wiking | then just simply not have it set | 12:33 |
@wiking | ok shity | 12:33 |
@wiking | :) | 12:33 |
lisitsyn | so get_prng() = if has(seed) create_prng(generate_seed()) else create_prng(seed) | 12:33 |
@wiking | this assumes | 12:34 |
@wiking | that actually we dont have a prng on ctor time | 12:34 |
@wiking | :) | 12:34 |
lisitsyn | yes I'd make it lazy | 12:34 |
@wiking | optional? :) | 12:34 |
@wiking | meaning how else would you make it lazy? | 12:34 |
lisitsyn | yes | 12:34 |
lisitsyn | we call it Maybe in shogun :P | 12:35 |
@wiking | as some classes need a object level prng | 12:35 |
@wiking | meaning that they are inited on ctor/first call | 12:35 |
lisitsyn | yes and put it to Self of SGObject | 12:35 |
@wiking | but what? | 12:35 |
@wiking | the prng? | 12:35 |
lisitsyn | Self would have Maybe<PRNG> | 12:35 |
@wiking | are you crazy? | 12:35 |
@wiking | :) | 12:35 |
lisitsyn | why so? | 12:36 |
@wiking | ah ok | 12:36 |
@wiking | misunderstood | 12:36 |
@wiking | i thought you wanna put it into the parammap | 12:36 |
@wiking | :))) | 12:36 |
lisitsyn | no | 12:36 |
@wiking | kk | 12:36 |
lisitsyn | no need to | 12:36 |
@wiking | but the interface of Self is foobar | 12:36 |
@wiking | :) | 12:36 |
lisitsyn | it is just pimpl | 12:36 |
lisitsyn | to reduce compile time | 12:36 |
@wiking | yeye i get it | 12:36 |
@wiking | but no other method has access to it | 12:37 |
@wiking | or you say to expose it via a protected getter | 12:37 |
@wiking | or something | 12:37 |
@wiking | :) | 12:37 |
lisitsyn | yes sure | 12:37 |
lisitsyn | let it be protected | 12:37 |
@wiking | no need to expose | 12:37 |
@wiking | imo | 12:37 |
@wiking | ok so seed is then reserved? | 12:37 |
lisitsyn | yes | 12:37 |
@wiking | k | 12:38 |
@wiking | for the traversal | 12:38 |
@wiking | i have to do a full breath/depth traversal unfortunately afaik | 12:38 |
@wiking | right | 12:38 |
@wiking | ? | 12:38 |
lisitsyn | yes | 12:38 |
@wiking | k | 12:38 |
@wiking | good | 12:39 |
lisitsyn | but we don't have graphs of more than 50 objects I think | 12:39 |
@wiking | yeye i mean | 12:39 |
@wiking | it just that we need this in the set_seed | 12:39 |
lisitsyn | yeah exactly | 12:39 |
@wiking | of course there's a good question | 12:39 |
@wiking | whether there's a situation | 12:39 |
@wiking | when you wanna set partially a seed | 12:39 |
@wiking | but i guess it fucku time | 12:39 |
@wiking | :) | 12:39 |
lisitsyn | wiking: one more method is easy to add | 12:39 |
@wiking | lisitsyn, std::set<std::string> exlude | 12:40 |
@wiking | :) | 12:40 |
@wiking | *exclude :P | 12:40 |
lisitsyn | set_seed might do the seed distribution and set_seed_here might not | 12:40 |
lisitsyn | no, I think just two methods would suffice | 12:40 |
@wiking | k | 12:40 |
lisitsyn | one does graph thingy and one sets only for the very concrete object | 12:40 |
@wiking | we dont have yet a standard for constexpr/static | 12:40 |
@wiking | should we go like macro | 12:41 |
@wiking | or the kKeyName | 12:41 |
@wiking | ? | 12:41 |
lisitsyn | ? | 12:41 |
lisitsyn | don't get | 12:41 |
lisitsyn | for what? | 12:41 |
@wiking | constexpr static std::string kSeedKey = "seed"; | 12:41 |
lisitsyn | ahh | 12:41 |
lisitsyn | idk | 12:41 |
@wiking | as we dont wanna write the literal everywhere right? :) | 12:41 |
lisitsyn | wiking: I think it is actually here twice | 12:41 |
lisitsyn | get_seed and set_seed | 12:42 |
lisitsyn | wiking: you can actually call the parameter __seed_fsck | 12:42 |
lisitsyn | or any other name | 12:42 |
lisitsyn | :) | 12:42 |
@wiking | :> | 12:42 |
@wiking | mmm | 12:43 |
@wiking | since it's protected | 12:43 |
@wiking | we could use Some<> ? | 12:43 |
lisitsyn | Some what? | 12:43 |
@wiking | the prng | 12:43 |
lisitsyn | ah maybe | 12:43 |
@wiking | Some<std::mt19937_64> get_prng() const; | 12:43 |
@wiking | dont want to pass around a ptr | 12:44 |
@wiking | if possible | 12:44 |
@wiking | and it cannot be Unique | 12:44 |
@wiking | or actual;ly | 12:44 |
@wiking | there's that crazy stuff | 12:44 |
lisitsyn | wiking: I'd add typedef for mt19937 | 12:44 |
lisitsyn | so you don't write it too many times | 12:44 |
@wiking | std::unique_ptr<prng> const &prng | 12:45 |
@wiking | this works :) | 12:45 |
@wiking | depends which one you like more :) | 12:45 |
lisitsyn | I'd go for shared_ptr | 12:45 |
lisitsyn | aka some | 12:45 |
@wiking | yeah | 12:45 |
@wiking | but no some | 12:46 |
@wiking | as it calls ref | 12:46 |
@wiking | no? | 12:46 |
@wiking | :) | 12:46 |
@wiking | does shared_ptr has it? | 12:46 |
lisitsyn | ah we need to patch Some then | 12:46 |
lisitsyn | to not call any refs | 12:46 |
lisitsyn | if it is not SGObject | 12:46 |
lisitsyn | but I am also fine with shared_ptr | 12:46 |
@wiking | k | 12:46 |
@wiking | it's all internal | 12:46 |
@wiking | should never surface to swig | 12:47 |
@wiking | imo | 12:47 |
lisitsyn | yes | 12:47 |
-!- HeikoS [~heiko@host86-129-231-92.range86-129.btcentralplus.com] has quit [Ping timeout: 260 seconds] | 13:26 | |
@wiking | lisitsyn, btw i hope we dont have cycles in the param map :P | 13:27 |
lisitsyn | wiking: we have | 13:28 |
lisitsyn | you can be sure :) | 13:28 |
@wiking | :< | 13:29 |
@wiking | same_type for checking the type of any? | 13:30 |
lisitsyn | wiking: compile time? yes | 13:40 |
@wiking | mmm | 13:40 |
@wiking | runtime | 13:41 |
@wiking | as? | 13:41 |
@wiking | and then catch the exception? | 13:41 |
@wiking | or i have to use the visitor pattern? | 13:48 |
lisitsyn | wiking: depends | 13:48 |
lisitsyn | what do you do? | 13:48 |
@wiking | wanna get all the CSGobjects | 13:49 |
@wiking | of a class in the param map | 13:49 |
lisitsyn | ah | 13:49 |
lisitsyn | wiking: why not any.same_type<CSGObject*>()? | 13:50 |
lisitsyn | should work | 13:50 |
@wiking | yeah | 13:50 |
@wiking | i did that | 13:50 |
@wiking | but then i need the obj itself | 13:50 |
@wiking | so i need .as<> | 13:50 |
lisitsyn | yes | 13:50 |
lisitsyn | it is double-check but okish | 13:51 |
@wiking | well | 13:51 |
@wiking | this is not called | 13:51 |
@wiking | every time :) | 13:51 |
lisitsyn | yeah | 13:51 |
@wiking | i mean not a lot | 13:51 |
@wiking | mooooo | 14:05 |
@wiking | std::seed_seq | 14:05 |
@wiking | lisitsyn, ^ | 14:05 |
lisitsyn | idk dik | 14:12 |
lisitsyn | idk | 14:12 |
lisitsyn | :) | 14:12 |
lisitsyn | too complex | 14:12 |
lisitsyn | :D | 14:12 |
-!- HeikoS [~heiko@host86-129-231-92.range86-129.btcentralplus.com] has joined #shogun | 14:16 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 14:16 | |
@wiking | lisitsyn, lol plz i mean it's just an array :) | 14:21 |
@wiking | how will we support std::vector? | 14:21 |
@wiking | HeikoS, ok so things are settled with serialization but there's a fabs error with sparse gp | 14:22 |
@HeikoS | wiking: whats the error? | 14:23 |
@wiking | precision | 14:23 |
@sukey | [https://github.com/shogun-toolbox/shogun] New commit https://github.com/shogun-toolbox/shogun/commit/d5c26ede1c3cd661f71c88b7d70485947fc1bffd by karlnapf | 14:23 |
@HeikoS | wiking: now can register using SG_ADD without casting to CSGObject | 14:24 |
@HeikoS | im off for lunch now | 14:24 |
@HeikoS | let me know if I can help with the fabs stuff | 14:24 |
@HeikoS | back in an hour or so | 14:24 |
@wiking | HeikoS, what i mean is that | 14:24 |
@wiking | dunno how you set the fabs | 14:24 |
@wiking | but that's not enough | 14:25 |
@wiking | for that implementation | 14:25 |
@HeikoS | you want to know how to set it? | 14:25 |
@wiking | idk | 14:25 |
@HeikoS | set_global_fequals_epsilon(1e-7); | 14:25 |
@wiking | and i dont care :) | 14:25 |
@HeikoS | and then might need to reset to 0.0 after (if another test runs) | 14:25 |
@wiking | just saying that it's currently not enugh | 14:25 |
@HeikoS | ah I see | 14:26 |
@HeikoS | which format? | 14:26 |
@wiking | ? | 14:26 |
@wiking | by format what do yo umean? | 14:26 |
@HeikoS | it is the integration tests? | 14:26 |
@HeikoS | for those ascii is used iirc | 14:26 |
@HeikoS | serialization format | 14:26 |
@wiking | -value float64 0.03726934030017445 | 14:26 |
@wiking | +value float64 0.03726934030022627 | 14:26 |
@wiking | i dont touch anything | 14:27 |
@wiking | it's the same format | 14:27 |
@wiking | -value SGVector<float64> 12 ({1.068315284705704}{1.057734922698309}{1.081507165667063}{1.091346135773989}{1.286784570411328}{1.780577706477988}{1.972441415484553}{1.997923467960996}{1.99991027302381}{1.99998226490016}{1.999999545391685}{1.999999920504624}) | 14:27 |
@wiking | +value SGVector<float64> 12 ({1.068315175134558}{1.0577349293821}{1.081507268883797}{1.091346236002757}{1.286784604541026}{1.78057771228749}{1.972441415165065}{1.997923467953036}{1.999910273024177}{1.999982264900162}{1.999999545391686}{1.999999920504624}) | 14:27 |
@wiking | these are the diffs | 14:27 |
@HeikoS | mmh that is 1-8 | 14:27 |
@wiking | the vector fails obviously | 14:27 |
@wiking | no the value | 14:27 |
@HeikoS | ah no 1e-6 | 14:28 |
@HeikoS | mmh | 14:28 |
@HeikoS | maybe just decrease accuracy? :D | 14:28 |
@HeikoS | but it is weird that this suddenly happens | 14:28 |
@HeikoS | I am fine with decreasing | 14:28 |
@wiking | set_global_fequals_epsilon? | 14:28 |
@HeikoS | yes | 14:28 |
@wiking | k | 14:28 |
@HeikoS | these tests are not meant for checking accuracy | 14:29 |
@HeikoS | just that things are roughly the same | 14:29 |
@HeikoS | or actually | 14:29 |
@HeikoS | better than changing | 14:29 |
@HeikoS | is regenerating the test data | 14:29 |
@HeikoS | and commit that | 14:29 |
@HeikoS | and leave the old accuracy | 14:29 |
@HeikoS | if that helps | 14:29 |
@HeikoS | otherwise decrease is fine as well | 14:29 |
@wiking | dunno if its consistent | 14:29 |
@HeikoS | ok i gotta run | 14:29 |
@HeikoS | talk in a bit | 14:29 |
-!- HeikoS [~heiko@host86-129-231-92.range86-129.btcentralplus.com] has quit [Ping timeout: 276 seconds] | 14:51 | |
-!- travis-ci [~travis-ci@ec2-54-166-128-254.compute-1.amazonaws.com] has joined #shogun | 15:40 | |
travis-ci | it's Heiko Strathmann's turn to pay the next round of drinks for the massacre he caused in shogun-toolbox/shogun: https://travis-ci.org/shogun-toolbox/shogun/builds/345247123 | 15:40 |
-!- travis-ci [~travis-ci@ec2-54-166-128-254.compute-1.amazonaws.com] has left #shogun [] | 15:40 | |
-!- HeikoS [~heiko@untrust-out.swc.ucl.ac.uk] has joined #shogun | 15:44 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 15:44 | |
@HeikoS | wiking: got it resolved? | 15:45 |
@wiking | no | 15:45 |
@wiking | i mean i havent' worked on it | 15:45 |
@wiking | so not yet | 15:45 |
@HeikoS | ok | 15:45 |
@HeikoS | wiking: I want to put swig 3.0.12 into the docker image, you any recommendations about the best way? | 15:45 |
@wiking | cannot recall | 15:45 |
@wiking | is it a strecth | 15:45 |
@wiking | or xenial img? | 15:45 |
@HeikoS | stretch | 15:45 |
@wiking | FROM debian:stretch | 15:46 |
@wiking | k | 15:46 |
@wiking | so idk | 15:46 |
@HeikoS | manually compile install like rxCpp? | 15:46 |
@wiking | i have spent 10 mins on stretch backport | 15:46 |
@wiking | HeikoS, rxcpp is header only => no compile | 15:46 |
@wiking | just install | 15:46 |
@HeikoS | i see | 15:46 |
@wiking | the same is not true for swig | 15:46 |
@wiking | what you could do i | 15:46 |
@wiking | s | 15:47 |
@wiking | that take that ppa package | 15:47 |
@wiking | and see if that's installeable | 15:47 |
@wiking | on stretch | 15:47 |
@HeikoS | ok | 15:47 |
@wiking | i would think that it would | 15:47 |
@HeikoS | I have the image locally so can try there | 15:47 |
@wiking | but needs to be tested | 15:47 |
@wiking | imo ppa hacker scripts are not really working | 15:47 |
@wiking | so you need to wget etc | 15:47 |
@HeikoS | wiking: you know how to find out the wget link for downloading a ppa .deb? | 15:56 |
@wiking | worst case you can find it in your local machine under /var/db | 15:56 |
@wiking | if you haven't cleaned it up yet | 15:56 |
@wiking | https://launchpad.net/~shogun-toolbox/+archive/ubuntu/nightly/+packages | 15:56 |
@wiking | this is for shogun | 15:57 |
@wiking | and ther eyou can click on the pkg itself | 15:57 |
@wiking | just replace the url with the right strs | 15:57 |
@HeikoS | good idea | 15:57 |
@wiking | https://launchpad.net/~shogun-toolbox/+archive/ubuntu/nightly/+files/libshogun-dev_6.1.3+1SNAPSHOT201802220200-1ubuntu1ppa1~xenial_amd64.deb | 15:57 |
@wiking | this is from that html | 15:57 |
@wiking | something along this line you'll find what u want | 15:58 |
@HeikoS | ok have it installed locally | 16:00 |
@wiking | so if that works | 16:00 |
@HeikoS | will compile | 16:01 |
@HeikoS | to see whether it works | 16:01 |
@wiking | ah if the binary runs | 16:01 |
@HeikoS | i used amd64 | 16:01 |
@wiking | then it should be good | 16:01 |
@wiking | imo there's a way that ou can actually add this ppa as a source.d | 16:01 |
@wiking | to the apt | 16:01 |
@wiking | and then simply apt-get install would work | 16:01 |
@wiking | i reckon you can dig out the apt source line | 16:02 |
@wiking | from your own | 16:02 |
@wiking | /etc/apt/source.list.d | 16:02 |
@wiking | as the apt-add should just add stuff to there | 16:02 |
@HeikoS | deb http://ppa.launchpad.net/timsc/swig-3.0.12/ubuntu xenial main | 16:04 |
-!- travis-ci [~travis-ci@ec2-54-198-187-196.compute-1.amazonaws.com] has joined #shogun | 16:04 | |
travis-ci | it's Heiko Strathmann's turn to pay the next round of drinks for the massacre he caused in shogun-toolbox/shogun: https://travis-ci.org/shogun-toolbox/shogun/builds/345247123 | 16:04 |
-!- travis-ci [~travis-ci@ec2-54-198-187-196.compute-1.amazonaws.com] has left #shogun [] | 16:04 | |
@HeikoS | public key issues | 16:04 |
@HeikoS | but the apt-add doesnt work eiterh | 16:05 |
@HeikoS | maybe I just wget and dpkg? | 16:05 |
@wiking | btw | 16:12 |
@sukey | [https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/4185 opened by karlnapf | 16:12 |
@wiking | do we wanna have statistics.cpp still be a utility class | 16:12 |
@wiking | for stats? | 16:12 |
@wiking | HeikoS, you can simply add the key | 16:12 |
@wiking | plz add the key | 16:12 |
@wiking | if you already found the solution for this | 16:12 |
@wiking | i mean the src | 16:13 |
@HeikoS | solution? | 16:13 |
@wiking | meaning a source | 16:13 |
@wiking | for the deb file | 16:13 |
@wiking | only reason you go with wget | 16:14 |
@wiking | is beause you dont add the key | 16:14 |
@wiking | right/ | 16:14 |
@wiking | ? | 16:14 |
@HeikoS | I thought it was a bit simpler than adding the line in the source.list file and adding the key in gpg | 16:14 |
@wiking | gpg -a --export KEY | sudo apt-key add - | 16:15 |
@wiking | i mean it's less line | 16:15 |
@wiking | less error prone | 16:15 |
@wiking | than your solution | 16:15 |
@wiking | just saying | 16:15 |
@HeikoS | kk | 16:15 |
@HeikoS | let me try | 16:15 |
@wiking | you need to find the key | 16:15 |
@wiking | for that ppa | 16:15 |
@HeikoS | I guess it is this one? | 16:17 |
@HeikoS | https://launchpadlibrarian.net/336311358/swig_3.0.12-ppa0-xenial1.dsc | 16:17 |
@wiking | mmm | 16:20 |
@wiking | yoju need the gpg id | 16:20 |
@HeikoS | it tells me actually | 16:20 |
@HeikoS | just a sec | 16:20 |
@HeikoS | 8A9CA30DB3C431E3 | 16:23 |
@wiking | yes | 16:23 |
@wiking | you need to apt-key that one | 16:23 |
@HeikoS | ok that worked | 16:24 |
@HeikoS | so I do that before all the packages are installed | 16:25 |
@wiking | no you do that | 16:26 |
@wiking | before adding the ubuntu line | 16:26 |
@wiking | deb http://ppa.launchpad.net/timsc/swig-3.0.12/ubuntu xenial main | 16:26 |
@wiking | or at least | 16:26 |
@wiking | before the apt-get update | 16:26 |
@HeikoS | nono I mean | 16:26 |
@HeikoS | the whole precedure | 16:26 |
@HeikoS | let me push and you see what I have | 16:26 |
@sukey | [https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/4185 synchronized by karlnapf | 16:27 |
@wiking | HeikoS, i guess you should sudo the tee | 16:28 |
@wiking | or no? | 16:28 |
@HeikoS | is there a sudo on that docker? | 16:28 |
@wiking | oh i see | 16:28 |
@HeikoS | locally no | 16:28 |
@wiking | i guess it's a root? | 16:28 |
@wiking | dunno really | 16:28 |
@HeikoS | yes | 16:28 |
@wiking | seems its a root there | 16:28 |
@HeikoS | no sudos in other cmds | 16:28 |
@wiking | ok lemme check this one | 16:28 |
@wiking | on hedo | 16:28 |
@HeikoS | wiking: go ahead and merge the PR if you think it is ok | 16:29 |
@wiking | just a sec | 16:29 |
@wiking | testing | 16:29 |
@wiking | ok | 16:29 |
@wiking | worked on hedo | 16:29 |
@wiking | hehe | 16:30 |
@wiking | can you plz amend | 16:30 |
@wiking | and add [skip ci] | 16:30 |
@wiking | ? | 16:30 |
@HeikoS | sure | 16:30 |
@wiking | as we dont need that one | 16:30 |
@sukey | [https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/4185 synchronized by karlnapf | 16:31 |
@sukey | [https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/4185 merged by vigsterkr | 16:31 |
@sukey | [https://github.com/shogun-toolbox/shogun] vigsterkr pushed 2 commits: | 16:31 |
@wiking | ok | 16:31 |
@sukey | https://github.com/shogun-toolbox/shogun/commit/952fe2ff1045a8fdce04d843110c2e25a61cb4ac | 16:31 |
@sukey | https://github.com/shogun-toolbox/shogun/commit/50125a5c8a99034d033dba43eb95838da14b182f | 16:31 |
@HeikoS | thx | 16:31 |
@wiking | this will take about 10-30 miuns | 16:31 |
@wiking | this will take about 10-30 mins | 16:31 |
@wiking | to get u the docker img | 16:31 |
@HeikoS | ok, | 16:31 |
@HeikoS | will restart the typedo thing after | 16:31 |
@HeikoS | should work then | 16:31 |
@wiking | after that you can restart travis | 16:31 |
@wiking | for the last commit | 16:31 |
@wiking | so | 16:31 |
@wiking | back to the question | 16:31 |
@wiking | statistics.cpp | 16:31 |
@wiking | utility stuff | 16:32 |
@HeikoS | yeah good q | 16:32 |
@wiking | for stats/randomvars | 16:32 |
@wiking | ? | 16:32 |
@HeikoS | I think that the cdf and random var stuff yes | 16:32 |
@HeikoS | should be there | 16:32 |
@wiking | because i have some more template shit | 16:32 |
@wiking | i need | 16:32 |
@HeikoS | utility functions | 16:32 |
@wiking | for how to fill | 16:32 |
@wiking | a vector of a given distro | 16:32 |
@wiking | etc | 16:32 |
@HeikoS | ah | 16:32 |
@wiking | i mean to be honest | 16:32 |
@HeikoS | yeah would be good to have that as well | 16:32 |
@wiking | that should be linalg | 16:32 |
@HeikoS | but maybe it can go to linalg? | 16:32 |
@wiking | :D | 16:32 |
@wiking | if you think about it | 16:32 |
@wiking | buuuuut | 16:32 |
@HeikoS | the cdf not sure | 16:33 |
@wiking | statistics could be a a wrapper | 16:33 |
@HeikoS | as this is just interfacing low level libs | 16:33 |
@HeikoS | like normal_cdf | 16:33 |
@wiking | because currently we only have | 16:33 |
@HeikoS | or gamma_cdf | 16:33 |
@wiking | cpu side stats | 16:33 |
@HeikoS | it is not even templated | 16:33 |
@wiking | so i reckon we can just have there now | 16:33 |
@HeikoS | random could go linalg imo | 16:33 |
@wiking | the std:: based stuf | 16:33 |
@wiking | f | 16:33 |
@wiking | as i would definitely | 16:33 |
@HeikoS | ah yes | 16:33 |
@wiking | i mean oin the end of the day | 16:33 |
@wiking | we can have a linalg thing | 16:33 |
@wiking | it's just a wrapper | 16:33 |
@wiking | once somebody refactors linalg | 16:34 |
@wiking | as it's really shitty still :/9 | 16:34 |
@wiking | i.e. xtensor looks much nicer | 16:34 |
@wiking | :D | 16:34 |
@wiking | and i reckon having something like an xpression | 16:34 |
@wiking | in linalg:: | 16:34 |
@wiking | is not something IMPOSSIBLE | 16:34 |
@wiking | to have | 16:34 |
@wiking | but that is of course a lot of work | 16:34 |
@HeikoS | yeah | 16:34 |
@HeikoS | better api would be good :D | 16:35 |
@wiking | i mean i can actually add a fill(begin, end, distro) | 16:35 |
@wiking | but yeah | 16:35 |
@wiking | it's shitty now that everything is | 16:35 |
@wiking | void f(.....) | 16:35 |
@wiking | i mean we could easily as well use tuples | 16:35 |
@wiking | or whatever fuck | 16:35 |
@wiking | in case of return values | 16:35 |
@wiking | as all that is compile time | 16:36 |
@wiking | anyhow | 16:36 |
@wiking | i'll add then some helper methods | 16:36 |
@wiking | to stats for the time being | 16:36 |
@wiking | static float64_t variance(SGVector<float64_t> values); | 16:36 |
@wiking | this should actually based on this logioc | 16:37 |
@wiking | be in linalg | 16:37 |
@wiking | no? :) | 16:37 |
@HeikoS | yes | 16:37 |
@wiking | so i mean | 16:37 |
@wiking | on the end of the day | 16:37 |
@wiking | what you are suggesting | 16:37 |
@wiking | is | 16:37 |
@wiking | linalg::statistics | 16:37 |
@HeikoS | yes kind of | 16:37 |
@HeikoS | var and mean is kind of basic | 16:37 |
@wiking | yeah but there's other stuff | 16:37 |
@wiking | sample_indices | 16:38 |
@HeikoS | but more complicated things could go to that | 16:38 |
@wiking | same story | 16:38 |
@HeikoS | yes exactly | 16:38 |
@HeikoS | that method | 16:38 |
@HeikoS | could also just be deleted :) | 16:38 |
@wiking | mmm | 16:38 |
@wiking | int32_t* idxs=SG_MALLOC(int32_t,N); | 16:38 |
@wiking | int32_t i, rnd; | 16:38 |
@wiking | int32_t* permuted_idxs=SG_MALLOC(int32_t,sample_size); | 16:38 |
@wiking | sergeyovich | 16:39 |
@wiking | :D | 16:39 |
@HeikoS | haha | 16:39 |
@HeikoS | well probably that was written bc | 16:39 |
@wiking | why do you idxs is on heap | 16:39 |
@wiking | and not on stak | 16:39 |
@wiking | *stack | 16:39 |
@wiking | :D | 16:39 |
@HeikoS | when sergey was pre teen :D | 16:39 |
@wiking | i mean on the other hand | 16:39 |
@wiking | we had this thing for everything being on heap | 16:39 |
@wiking | for some magical reason | 16:39 |
@wiking | :) | 16:39 |
@wiking | my fav is this line | 16:40 |
@wiking | CMath::qsort(result); | 16:40 |
@wiking | :) | 16:40 |
@wiking | i mean std::sort is | 16:41 |
@wiking | Approximately N log N comparisons | 16:41 |
@wiking | :D | 16:41 |
@wiking | so that makes you think about all the CMath:: stuff | 16:41 |
@HeikoS | haha | 16:50 |
@HeikoS | wiking: I think there was a reason for this | 16:50 |
@HeikoS | that is was faster that std::sort in certain contexts | 16:50 |
@HeikoS | long long time ago in a place far far awya | 16:50 |
@wiking | HeikoS, i think std::sort wasn't existing | 16:50 |
@HeikoS | entrance task -> replace qsort with std::sort | 16:50 |
@HeikoS | objections? | 16:50 |
@wiking | i mean rather | 16:51 |
@wiking | entrance task: drop CMath | 16:51 |
@wiking | :) | 16:51 |
@HeikoS | I thikn there is | 16:51 |
@wiking | then prio that | 16:51 |
@wiking | :))) | 16:51 |
@HeikoS | haha :D | 16:51 |
@HeikoS | ok ill put it up | 16:51 |
@wiking | i mean that can be sliced up into smaller chunks | 16:51 |
@wiking | but essentially that is the same | 16:51 |
@HeikoS | tada | 16:53 |
@sukey | [https://github.com/shogun-toolbox/shogun] Issue https://github.com/shogun-toolbox/shogun/issues/4186 opened by karlnapf | 16:53 |
@sukey | [https://github.com/shogun-toolbox/shogun] Issue https://github.com/shogun-toolbox/shogun/issues/4186 karlnapf added label: "good first issue" | 16:53 |
@sukey | [https://github.com/shogun-toolbox/shogun] Issue https://github.com/shogun-toolbox/shogun/issues/4186 karlnapf added label: "Cleanups" | 16:53 |
@HeikoS | wiking: I would like to add factory methods for features | 17:05 |
@HeikoS | CFeatures* features(SGMatrix<T>) | 17:05 |
@HeikoS | for example | 17:05 |
@HeikoS | wiking: objections? | 17:05 |
@HeikoS | lisitsyn: ^ | 17:05 |
@sukey | [https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/4166 synchronized by durovo | 17:07 |
@wiking | HeikoS, yes | 17:13 |
@wiking | dont do that | 17:13 |
@wiking | :) | 17:13 |
@HeikoS | the goal is to create features by the base class | 17:13 |
@HeikoS | but can of course also just create empty instance and then put | 17:14 |
@wiking | yes | 17:18 |
@wiking | i understand your goal | 17:18 |
@wiking | but what i've tried to convey is that | 17:19 |
@wiking | woudl be nice if you could hold back a bit | 17:19 |
@wiking | on that | 17:19 |
@wiking | if possible | 17:19 |
@HeikoS | sure | 17:20 |
@wiking | i mean if you nee dit right away | 17:21 |
@wiking | add it in a nice separate commit | 17:21 |
@HeikoS | uh docker failed | 17:21 |
@wiking | so that way we can just simply | 17:21 |
@HeikoS | no i dont need now | 17:21 |
@wiking | remove that one when/if needed | 17:21 |
@wiking | how did docker fail? | 17:21 |
@HeikoS | https://hub.docker.com/r/shogun/shogun-dev/builds/boh3njnh23k2jimuk7ezd89/ | 17:21 |
@HeikoS | ah yeah | 17:22 |
@HeikoS | damn | 17:22 |
@HeikoS | forgot to install gnugp | 17:22 |
@wiking | mmmm | 17:22 |
@wiking | what? | 17:22 |
@wiking | not even apt-key is present | 17:23 |
@wiking | ? | 17:23 |
@wiking | ah i guess its like a totally clear install | 17:23 |
@wiking | only having busybox style stuff | 17:23 |
@HeikoS | mmh weird thought I tried this on my image | 17:23 |
@wiking | clear image? | 17:24 |
@wiking | or the one from there? | 17:24 |
@wiking | meaning shogun-sdk | 17:24 |
@wiking | or stretch | 17:24 |
@wiking | ? | 17:24 |
@HeikoS | yeah that was the problem | 17:24 |
@HeikoS | i used the sdk | 17:24 |
@HeikoS | not stretch | 17:24 |
@wiking | yeah that one already had a lot of dependencies pulld | 17:24 |
@wiking | * | 17:24 |
@wiking | *pulled | 17:24 |
@HeikoS | I will move the lines below the apt-get install stuff | 17:24 |
@HeikoS | and then update and install swig? | 17:25 |
@wiking | mmm that is a bit trickier :) | 17:25 |
@wiking | but yeah | 17:25 |
@wiking | you can do that | 17:25 |
@wiking | should work | 17:25 |
@sukey | [https://github.com/shogun-toolbox/shogun] karlnapf pushed 2 commits: | 17:30 |
@sukey | https://github.com/shogun-toolbox/shogun/commit/fb95294ae8c61158e4ccc0a63a670722b7f39792 | 17:30 |
@sukey | https://github.com/shogun-toolbox/shogun/commit/60b70b2af017851ef0fa398a12039c7221314cc3 | 17:30 |
@HeikoS | ah screw | 17:31 |
@sukey | [https://github.com/shogun-toolbox/shogun] New commit https://github.com/shogun-toolbox/shogun/commit/d92ae890f04a807bdbbcc276d24757c2df3c828d by karlnapf | 17:34 |
-!- travis-ci [~travis-ci@ec2-54-198-187-196.compute-1.amazonaws.com] has joined #shogun | 17:46 | |
travis-ci | it's Heiko Strathmann's turn to pay the next round of drinks for the massacre he caused in shogun-toolbox/shogun: https://travis-ci.org/shogun-toolbox/shogun/builds/345247123 | 17:46 |
-!- travis-ci [~travis-ci@ec2-54-198-187-196.compute-1.amazonaws.com] has left #shogun [] | 17:46 | |
@HeikoS | lisitsyn: you around? | 17:50 |
lisitsyn | HeikoS: ja | 17:50 |
@HeikoS | lisitsyn: what is your opinion on creating features | 17:50 |
@HeikoS | with factory | 17:51 |
@HeikoS | like machine("LibSVM") | 17:51 |
lisitsyn | features(df) | 17:51 |
lisitsyn | ? | 17:51 |
@HeikoS | I am asking about types and stuff | 17:51 |
lisitsyn | features(df) features(list_of_strings) ... ? | 17:51 |
@HeikoS | how do you create real features without writing the type? | 17:52 |
lisitsyn | factory | 17:52 |
lisitsyn | it should infer | 17:52 |
@HeikoS | you have CFeatures* features(SGMatrix<float64_t>) | 17:52 |
lisitsyn | gut | 17:52 |
@HeikoS | or templated | 17:52 |
@HeikoS | but then swig | 17:52 |
@HeikoS | ... | 17:52 |
lisitsyn | CFeatures* is fine | 17:52 |
lisitsyn | ah | 17:52 |
@HeikoS | CFeatures* features(SGMatrix<T>) | 17:52 |
lisitsyn | you mean arg? | 17:53 |
lisitsyn | idk | 17:53 |
@HeikoS | renamed to features_real | 17:53 |
lisitsyn | why not provide all of them? | 17:53 |
@HeikoS | or done like in put | 17:53 |
lisitsyn | like in put is bettah | 17:53 |
lisitsyn | HeikoS: won't overloading work? | 17:54 |
@HeikoS | I think it would | 17:54 |
@HeikoS | works for put | 17:54 |
@HeikoS | at least with matrix | 17:54 |
@HeikoS | why would one create features from vector ? | 17:54 |
lisitsyn | HeikoS: to apply to just one vector | 17:55 |
@HeikoS | mmh | 17:55 |
@HeikoS | yeah ok | 17:55 |
@HeikoS | but it is still dense features | 17:55 |
lisitsyn | yeah | 17:55 |
@HeikoS | okok | 17:55 |
@HeikoS | wiking seemed to not like it | 17:56 |
lisitsyn | what is the other approach? | 17:56 |
@HeikoS | not sure | 17:56 |
@HeikoS | or more wanted me to wait | 17:56 |
@HeikoS | or at least make it in revertable commit | 17:56 |
@HeikoS | so will play a bit with that | 17:56 |
@HeikoS | I think put get now is on | 17:56 |
lisitsyn | cool! | 17:57 |
-!- travis-ci [~travis-ci@ec2-54-166-128-254.compute-1.amazonaws.com] has joined #shogun | 17:58 | |
travis-ci | it's Heiko Strathmann's turn to pay the next round of drinks for the massacre he caused in shogun-toolbox/shogun: https://travis-ci.org/shogun-toolbox/shogun/builds/345247123 | 17:58 |
-!- travis-ci [~travis-ci@ec2-54-166-128-254.compute-1.amazonaws.com] has left #shogun [] | 17:58 | |
@sukey | [https://github.com/shogun-toolbox/shogun] New commit https://github.com/shogun-toolbox/shogun/commit/c785fdf9e4ecd57e53134e2c28b4a5f527c76dc9 by karlnapf | 17:59 |
@HeikoS | lisitsyn: https://github.com/shogun-toolbox/shogun/blob/typedo/examples/meta/src/base_api/put_get.sg | 18:01 |
-!- zxtx_ is now known as zxtx | 18:45 | |
-!- sukey1 [~nodebot@ks312251.kimsufi.com] has joined #shogun | 19:35 | |
-!- Netsplit *.net <-> *.split quits: @sukey | 19:45 | |
-!- wiking [~wiking@huwico/staff/wiking] has quit [Ping timeout: 260 seconds] | 19:47 | |
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun | 19:49 | |
-!- mode/#shogun [+o wiking] by ChanServ | 19:49 | |
-!- HeikoS [~heiko@untrust-out.swc.ucl.ac.uk] has quit [Ping timeout: 276 seconds] | 20:06 | |
--- Log closed Sat Feb 24 00:00:15 2018 |
Generated by irclog2html.py 2.10.0 by Marius Gedminas - find it at mg.pov.lt!