--- Log opened Wed May 31 00:00:53 2017 | ||
@sukey | Pull Request #3824 "Replace DynArray with std::vector for io module" synchronized by MikeLing - https://github.com/shogun-toolbox/shogun/pull/3824 | 04:06 |
---|---|---|
-!- mikeling [uid89706@gateway/web/irccloud.com/x-aehloslmslxbmvge] has joined #shogun | 04:14 | |
@sukey | Pull Request #3824 "Replace DynArray with std::vector" - https://github.com/shogun-toolbox/shogun/pull/3824 | 04:44 |
@sukey | Pull Request #3824 "Replace DynArray with std::vector" synchronized by MikeLing - https://github.com/shogun-toolbox/shogun/pull/3824 | 06:39 |
-!- geektoni [~geektoni@93-34-234-212.ip52.fastwebnet.it] has joined #shogun | 08:41 | |
mikeling | wiking: ping | 08:56 |
@sukey | Issue #3825 "The err about python interface" opened by xxnyufengzhe - https://github.com/shogun-toolbox/shogun/issues/3825 | 09:24 |
-!- HeikoS [~heiko@p5DDB9F19.dip0.t-ipconnect.de] has joined #shogun | 10:04 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 10:04 | |
-!- iglesiasg [~iglesiasg@217.119.234.214] has joined #shogun | 10:11 | |
-!- mode/#shogun [+o iglesiasg] by ChanServ | 10:11 | |
@HeikoS | olinguyen: hi there | 10:17 |
@HeikoS | wiking: jo | 10:17 |
-!- tctara__ [~quassel@128.199.61.169] has joined #shogun | 10:56 | |
@sukey | Issue #3825 "The err about python interface" closed by karlnapf - https://github.com/shogun-toolbox/shogun/issues/3825 | 10:57 |
@wiking | mikeling, hey | 10:59 |
@wiking | HeikoS, ho | 10:59 |
@wiking | olinguyen, thnx for the update | 10:59 |
@HeikoS | wiking: jojo | 11:00 |
@HeikoS | wiking: you have time Friday? | 11:00 |
@HeikoS | to talk to Franz? | 11:00 |
@wiking | olinguyen TingMiao micmn mikeling dont forget the daylies :) | 11:00 |
@wiking | HeikoS, yes yes i replied to the email | 11:00 |
@wiking | 11am is good for me | 11:00 |
@HeikoS | wiking: ah cool | 11:00 |
@wiking | either GMT or CET | 11:00 |
@wiking | both are ok | 11:00 |
mikeling | wiking: Hey! Did you receive the email yesterday? about the daily report ? | 11:01 |
@HeikoS | ok, lets do 11am London time then, I aslo asked Gunnar but this is not too relevant | 11:01 |
@HeikoS | mikeling: could you create a google spreadsheet with all the dailies and send all the mentors a link? | 11:01 |
@wiking | mikeling, yes it was fine | 11:01 |
mikeling | HeikoS: sure | 11:01 |
@wiking | mikeling, it's just that we want it every day :) | 11:01 |
@wiking | and this was just a gentle reminder | 11:02 |
@wiking | you can do it whenever | 11:02 |
@wiking | within a day | 11:02 |
@wiking | end/beginning | 11:02 |
@wiking | whatever is fine | 11:02 |
mikeling | wiking: got it ;) | 11:02 |
@HeikoS | wiking: so shall I asl numfocus about hackathon money? | 11:02 |
@wiking | HeikoS, haven't you already?! | 11:03 |
@wiking | :) | 11:03 |
@wiking | yes yes you should | 11:03 |
mikeling | BTW, Does this comment looks good to you? https://github.com/shogun-toolbox/shogun/pull/3824#issuecomment-305081168 | 11:03 |
@wiking | mikeling, lemme check | 11:03 |
-!- Netsplit *.net <-> *.split quits: tctara_ | 11:03 | |
mikeling | ok | 11:03 |
@wiking | HeikoS, i mean just be a bit more diplomatic like: we are thinking of... and it was great the last time... sooo if they could allalala | 11:03 |
@HeikoS | ok | 11:04 |
@HeikoS | wiking: Ill wait until they announce the thing and then do it, good? | 11:04 |
@wiking | sounds good | 11:04 |
mikeling | HeikoS: For CBinaryLabels and CMultilabelLabels issue, we already have CLabels as base class of all other label classes. Do we need to reconstruct the CLabels we have? | 11:05 |
@HeikoS | mikeling: ah yes good point | 11:05 |
@HeikoS | wiking: ^ | 11:05 |
@HeikoS | so my thoughts are | 11:05 |
@HeikoS | -delete all label specialization classes, only keep CLabels, make it not abstract | 11:06 |
@wiking | mikeling, yeah you can drop actually DynArray and use everywhere std::vector, or? | 11:06 |
@HeikoS | then, put code check value checks and conversions in there | 11:06 |
@HeikoS | and the algorithms can call things like "CLabels::use_as_binary()" | 11:06 |
@HeikoS | which then converts/checks | 11:07 |
mikeling | wiking: yep, I can use std::vector to instead of DynArray in most of places | 11:07 |
@HeikoS | and makes sure the getters return the appropriate things | 11:07 |
mikeling | but something went wrong when things come to DynamicArray and DynamicObjectArray | 11:07 |
@HeikoS | wiking: so my idea is to have the labels just like the new features: type free, runtime checks, transparent conversions behind the API | 11:08 |
@wiking | HeikoS, we used to have to something like | 11:08 |
@wiking | obtain from generic | 11:08 |
@wiking | or? | 11:08 |
@HeikoS | yes but that is horrible | 11:08 |
@wiking | : | 11:08 |
@wiking | :) | 11:08 |
@wiking | i'm just saying | 11:08 |
@HeikoS | no need for that | 11:08 |
@wiking | its the same as no? | 11:08 |
@wiking | :) | 11:08 |
@HeikoS | I mean why have classes if we do everything at runtime anyways? | 11:08 |
@HeikoS | just have one class | 11:08 |
@wiking | welll | 11:08 |
@wiking | not always true right? | 11:08 |
@HeikoS | and you can ask that class whether it can behave like "binary/multiclass" etc | 11:08 |
@wiking | i mean we create binaryLabels on compile time already or? | 11:09 |
@HeikoS | yeah but then the interface for passing labels is base class and then ALL algorithms dynamic cast them to the type they need | 11:09 |
@HeikoS | so there is no base interface anyways | 11:09 |
@HeikoS | I suggest just to have a CLabels class that can behave like any form of labels, depending on what is needed | 11:10 |
@HeikoS | so user just passes labels to algorithm | 11:10 |
@HeikoS | whether binary or multiclass | 11:10 |
@HeikoS | and then algorithm asks for certain representation | 11:10 |
@HeikoS | and then gets the SGVector/SGMatrix | 11:10 |
@wiking | HeikoS, and what, runtime exception if the label is not multiclass? | 11:10 |
@HeikoS | yes | 11:11 |
@wiking | dontlike | 11:11 |
@wiking | :) | 11:11 |
@HeikoS | this is already the case now | 11:11 |
@HeikoS | runtime exception | 11:11 |
@wiking | i like things to be compiled checked | 11:11 |
@wiking | :) | 11:11 |
@HeikoS | they are not atm anyways | 11:11 |
@wiking | ? | 11:11 |
@HeikoS | CMachine accepts CLabels | 11:11 |
@wiking | CSVM expects Label? | 11:11 |
@HeikoS | not CMulticlasslabels | 11:11 |
@HeikoS | and second | 11:11 |
@wiking | uglyfuck | 11:12 |
@wiking | :) | 11:12 |
@wiking | but true | 11:12 |
@HeikoS | if you put only -1,1 in multiclass labels, you get runtime error anyways | 11:12 |
@HeikoS | so thats like the worst of the two worlds | 11:12 |
@wiking | ok then yeah | 11:12 |
@HeikoS | but I think we should just abstract that out | 11:12 |
@wiking | doesn't make sense | 11:12 |
@HeikoS | like for features | 11:12 |
@wiking | but | 11:12 |
@wiking | and here is the but | 11:12 |
@wiking | now you will put all the logic | 11:12 |
@wiking | and code | 11:12 |
@wiking | into CLabels | 11:12 |
@wiking | right? | 11:12 |
@HeikoS | one possibility | 11:12 |
@wiking | it's reaaaaaally gonna be super ugly | 11:12 |
@HeikoS | another one is impl class | 11:12 |
@HeikoS | that is instantiated from CLabels | 11:13 |
@HeikoS | I mean multiple | 11:13 |
@HeikoS | that make the code modular | 11:13 |
@HeikoS | I mean yeah, this has to be designed well | 11:13 |
@HeikoS | we dont want all the code in one file | 11:13 |
@HeikoS | mikeling: are you following? | 11:16 |
@HeikoS | wiking: shall we draft some high level code? | 11:16 |
@wiking | yes | 11:17 |
@wiking | we should | 11:17 |
@HeikoS | wiking: ok let me start a gist | 11:17 |
mikeling | HeikoS: I'm trying :/ | 11:17 |
@wiking | mikeling, dont worry you'll get a .h | 11:17 |
@wiking | :) | 11:18 |
@wiking | mikeling, until then you can work on DynArray or/ | 11:18 |
@wiking | ? | 11:18 |
mikeling | wiking: I would like to leave DynArray for now due to DynamicArray and DynamicObjectArray inherit from DynArray and use some implementation of DynArray deeply? I suggest working on DynamicArray and DynamicObjectArray replacement first and then remove them all at once | 11:20 |
mikeling | but | 11:20 |
@wiking | mikeling, mmm inherit? | 11:20 |
@wiking | class CDynamicObjectArray : public CSGObject | 11:21 |
@wiking | you can replace | 11:21 |
@wiking | DynArray<CSGObject*> m_array; | 11:21 |
@wiking | to std::vector<CSGObject*> m_array; | 11:22 |
@wiking | most of the things would work | 11:22 |
@wiking | and some like | 11:22 |
@wiking | get_element_ptr | 11:22 |
@wiking | you need to trick | 11:22 |
mikeling | wiking: yeah | 11:22 |
@wiking | beause m_array[i] will actually get the ptr | 11:22 |
@wiking | not the object | 11:22 |
@wiking | same for DynamicArray | 11:22 |
mikeling | for the get_element_ptr | 11:22 |
@wiking | those both are doable | 11:23 |
@wiking | to remove DynArray | 11:23 |
@wiking | if you have some specific prolbme | 11:23 |
@wiking | please do ask | 11:23 |
@wiking | where you have problem dropping/replacing DynArray | 11:23 |
mikeling | wiking: ok, I will figure it out ASAP | 11:25 |
@wiking | mikeling, ok cool | 11:29 |
@wiking | i'm gonna have to run out for a bit now | 11:29 |
@wiking | but gonna be around in 20 mins | 11:29 |
@wiking | lisitsyn, i dont know if you are round | 12:12 |
@wiking | but in the next 5 hours | 12:12 |
@wiking | i'll kill that g2.8xlarge instance | 12:12 |
@wiking | sorry | 12:12 |
-!- TingMiao [uid229534@gateway/web/irccloud.com/x-vnwjnmfewebawlgx] has quit [Quit: Connection closed for inactivity] | 12:21 | |
-!- geektoni [~geektoni@93-34-234-212.ip52.fastwebnet.it] has quit [Ping timeout: 260 seconds] | 12:24 | |
@HeikoS | wiking, lisitsyn, mikeling, iglesiasg https://gist.github.com/karlnapf/939e8b1df0046f9fc22c4fc170012f42 | 12:29 |
@HeikoS | can you iterate? | 12:29 |
@wiking | ++ | 12:30 |
@wiking | :D | 12:30 |
@wiking | bool labels.validate_binary() | 12:31 |
@wiking | ugly | 12:31 |
@HeikoS | wiking: yeah that can go | 12:32 |
@HeikoS | I thought about multiple ways | 12:32 |
@HeikoS | this one is the one I liked moist | 12:33 |
@HeikoS | we can also explicitly instantiate the typed sublasses by users | 12:33 |
@HeikoS | but that wont play well with tags | 12:33 |
@HeikoS | can also do CBinaryLabels(labels) rather than labels.as_binary(), but that complicates things at other points as well | 12:34 |
@HeikoS | at some point, there needs to be this runtime type check, otherwise tags API wont work | 12:34 |
-!- HeikoS [~heiko@p5DDB9F19.dip0.t-ipconnect.de] has quit [Ping timeout: 245 seconds] | 12:45 | |
-!- iglesiasg [~iglesiasg@217.119.234.214] has quit [Ping timeout: 260 seconds] | 14:06 | |
mikeling | wiking: | 14:29 |
mikeling | ping | 14:29 |
-!- HeikoS [~heiko@x55b36ee2.dyn.telefonica.de] has joined #shogun | 14:30 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 14:30 | |
-!- HeikoS [~heiko@x55b36ee2.dyn.telefonica.de] has quit [Client Quit] | 14:30 | |
mikeling | why we need use a pointer to init DynArray https://github.com/shogun-toolbox/shogun/blob/develop/src/shogun/base/DynArray.h#L385, | 14:30 |
mikeling | Is that for deciding how many memory should been alloced by the pointer type ? | 14:31 |
@wiking | mikeling, checking | 14:47 |
@wiking | i mean i have never touched this code so i dont know | 14:47 |
@wiking | mmm | 14:47 |
@wiking | seems github is now having some issue | 14:47 |
@wiking | 14:36 CEST | 14:47 |
@wiking | Major service outage. | 14:48 |
@wiking | ... | 14:48 |
@wiking | because DynArray is nothing else | 14:50 |
@wiking | but a template<class T> T* array | 14:50 |
@wiking | and DynArray is nothing else | 14:53 |
@wiking | but a wrapper around T* | 14:53 |
@wiking | which is basically an array of T objects | 14:53 |
@wiking | *objects of type T | 14:53 |
@wiking | and actually | 14:53 |
@wiking | i'm a bit shocked that we have still something like this in the code | 14:54 |
@wiking | else | 14:54 |
@wiking | array=(T*) malloc(size_t(p_resize_granularity)*sizeof(T)); | 14:54 |
@wiking | else | 14:54 |
@wiking | array=(T*) malloc(size_t(p_resize_granularity)*sizeof(T)); | 14:54 |
@wiking | meaning that we can use directly libc's malloc | 14:54 |
@wiking | somehow... | 14:54 |
mikeling | wiking: so, we could just use std::vector<T>(p_array_size) to instead of that? | 15:01 |
@wiking | yes | 15:01 |
@wiking | of course | 15:01 |
mikeling | those malloc process I mean | 15:01 |
mikeling | ok | 15:01 |
mikeling | got it | 15:01 |
@wiking | yes yes | 15:01 |
@wiking | you dont care any of those things | 15:01 |
@wiking | as that is done by std::vector | 15:01 |
@wiking | internally | 15:01 |
-!- geektoni [~geektoni@93-34-234-212.ip52.fastwebnet.it] has joined #shogun | 15:06 | |
@sukey | Pull Request #3745 "Add PRange class to replace old SG_PROGRESS (WIP)" synchronized by geektoni - https://github.com/shogun-toolbox/shogun/pull/3745 | 15:20 |
-!- HeikoS [~heiko@x55b36ee2.dyn.telefonica.de] has joined #shogun | 15:37 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 15:37 | |
mikeling | wiking: what's this for? https://github.com/shogun-toolbox/shogun/blob/develop/src/shogun/lib/DynamicObjectArray.h#L437 | 15:38 |
mikeling | actually I'm not really familiar with the 'clone' of SGObject | 15:39 |
mikeling | could you tell me something about it please :) | 15:39 |
@wiking | yes | 15:41 |
@wiking | sorry | 15:41 |
@wiking | i'm just in a meeting | 15:41 |
mikeling | np | 15:44 |
-!- HeikoS [~heiko@x55b36ee2.dyn.telefonica.de] has quit [Ping timeout: 258 seconds] | 16:34 | |
-!- zoq [~marcus_zo@urgs.org] has joined #shogun | 16:56 | |
mikeling | wiking: still around ? | 17:39 |
@wiking | ye | 17:39 |
mikeling | 😃 do you have time to tell me something about https://github.com/shogun-toolbox/shogun/blob/develop/src/shogun/lib/DynamicObjectArray.h#L437 and | 17:40 |
mikeling | SGObject | 17:41 |
mikeling | clone | 17:41 |
@wiking | ah | 17:43 |
@wiking | that's all about how you copy an CDynamicObjectArray | 17:44 |
@wiking | maaybe... and i'm not so sure | 17:44 |
@wiking | htat you need to do some custom code where for the std::vector<> | 17:44 |
@wiking | but that has a copy ctro | 17:44 |
@wiking | *ctor so it should be rather easy to do | 17:45 |
@wiking | i mean for the time being just ignore this | 17:45 |
@wiking | and implement without it and then see how the clone is behaving | 17:45 |
@wiking | and then you'll see whether you should do something like: cloned->m_array = this->m_array; | 17:46 |
mikeling | Oh I see | 17:46 |
@wiking | we have a unit test for the clone command | 17:46 |
mikeling | Thank u | 17:46 |
@wiking | so it should give you a failure | 17:46 |
@wiking | it something is wrong | 17:46 |
-!- witness_ [uid10044@gateway/web/irccloud.com/x-drdyolffrskwsupg] has joined #shogun | 18:50 | |
-!- geektoni [~geektoni@93-34-234-212.ip52.fastwebnet.it] has left #shogun [] | 19:08 | |
-!- witness_ [uid10044@gateway/web/irccloud.com/x-drdyolffrskwsupg] has quit [Quit: Connection closed for inactivity] | 21:09 | |
--- Log closed Thu Jun 01 00:00:54 2017 |
Generated by irclog2html.py 2.10.0 by Marius Gedminas - find it at mg.pov.lt!