--- Log opened Fri Jul 28 00:00:14 2017 | ||
-!- CaBa_ [~Diu7saig@lounge.imp.fu-berlin.de] has joined #shogun | 00:44 | |
-!- CaBa [~Diu7saig@unaffiliated/caba] has quit [Remote host closed the connection] | 00:45 | |
-!- iglesiasg [~iglesiasg@217.119.234.214] has joined #shogun | 09:21 | |
-!- mode/#shogun [+o iglesiasg] by ChanServ | 09:21 | |
-!- geektoni [~geektoni@93-34-128-40.ip49.fastwebnet.it] has joined #shogun | 09:23 | |
-!- geektoni [~geektoni@93-34-128-40.ip49.fastwebnet.it] has quit [Quit: Leaving.] | 11:42 | |
-!- geektoni [~geektoni@93-34-128-40.ip49.fastwebnet.it] has joined #shogun | 11:44 | |
-!- geektoni [~geektoni@93-34-128-40.ip49.fastwebnet.it] has quit [Read error: Connection reset by peer] | 11:49 | |
-!- HeikoS [~heiko@host-92-0-169-11.as43234.net] has joined #shogun | 13:07 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 13:07 | |
@HeikoS | olinguyen: hey! you there? | 13:07 |
---|---|---|
-!- HeikoS [~heiko@host-92-0-169-11.as43234.net] has quit [Read error: No route to host] | 13:41 | |
-!- HeikoS [~heiko@host-92-0-169-11.as43234.net] has joined #shogun | 13:42 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 13:42 | |
-!- HeikoS [~heiko@host-92-0-169-11.as43234.net] has quit [Quit: Leaving.] | 13:49 | |
-!- HeikoS [~heiko@host-92-0-169-11.as43234.net] has joined #shogun | 13:55 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 13:55 | |
-!- HeikoS [~heiko@host-92-0-169-11.as43234.net] has quit [Ping timeout: 240 seconds] | 13:59 | |
-!- olinguyen_ [488ddefa@gateway/web/freenode/ip.72.141.222.250] has joined #shogun | 14:12 | |
-!- olinguyen_ [488ddefa@gateway/web/freenode/ip.72.141.222.250] has quit [Quit: Page closed] | 14:20 | |
-!- iglesiasg [~iglesiasg@217.119.234.214] has quit [Quit: leaving] | 14:45 | |
-!- zoq [~marcus_zo@urgs.org] has quit [Read error: Connection reset by peer] | 15:17 | |
-!- zoq_ [~marcus_zo@urgs.org] has joined #shogun | 15:17 | |
-!- zoq_ is now known as zoq | 15:32 | |
-!- HeikoS [~heiko@untrust-out.swc.ucl.ac.uk] has joined #shogun | 15:39 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 15:39 | |
-!- geektoni [~geektoni@80.86.155.153] has joined #shogun | 16:22 | |
@HeikoS | geektoni: jojo | 16:22 |
@HeikoS | how are things? | 16:22 |
geektoni | HeikoS: hey! | 16:22 |
geektoni | things are going fine :) | 16:22 |
geektoni | HeikoS: I've made some PRs for the new CrossValidation | 16:22 |
@HeikoS | yeah I saw | 16:23 |
@HeikoS | sorry for not reviewing yet | 16:23 |
@HeikoS | but it all works now right? | 16:23 |
geektoni | yes yes | 16:23 |
@HeikoS | I have a question actually | 16:23 |
@HeikoS | so you added this mkl weight class | 16:23 |
@HeikoS | which just like before, stores the MKL weights in each fold, right? | 16:23 |
geektoni | yes, it works like the previous one | 16:24 |
@HeikoS | ok | 16:24 |
@HeikoS | so my question: | 16:24 |
@HeikoS | if now a new algorithms comes along, say LARS | 16:24 |
@HeikoS | and there I want to monitor the residuals across the folds | 16:24 |
@HeikoS | then I need to add a new class? | 16:24 |
geektoni | yes, that is the idea | 16:25 |
@HeikoS | and from there, you might see my point: is it a good idea if I need to add a new class everytime I want to monitor something in x-validation? | 16:25 |
@HeikoS | wouldnt it be better if a user can specify that without having to touch the c++ code | 16:26 |
@HeikoS | i.e. monitorig vector valued values with a given name (that was made observable before) | 16:26 |
@HeikoS | so that one can monitor any parameter across the folds | 16:26 |
geektoni | well, the general observer for CrossValidation generate a vector with all the observations made | 16:27 |
geektoni | e.g index used for training/testing for each fold, evaluation for each folds etc. | 16:27 |
geektoni | so a user could "parse" it to obtain the information he wants | 16:27 |
@HeikoS | how would this look like (say in python= | 16:28 |
@HeikoS | for say LARS | 16:28 |
geektoni | HeikoS: https://gist.github.com/geektoni/6b3bd3aafe70fbe477db485faa9cfe74#file-cvobserver_example-cpp-L70 | 16:29 |
geektoni | this is the general idea | 16:29 |
geektoni | that's is C++ but for python will be the same | 16:30 |
@HeikoS | so this "f" | 16:30 |
@HeikoS | what is the type of that? | 16:31 |
geektoni | should be "fold" instead of "f" | 16:32 |
geektoni | anyway | 16:32 |
@HeikoS | so yeah fold has a type | 16:33 |
@HeikoS | which here has the method "get_train_indices()" | 16:33 |
@HeikoS | does it also have something like "get_vector_observation("mkl_weights")"? | 16:34 |
@HeikoS | get_vector_observation("LARS residuals")" | 16:34 |
@HeikoS | you see what I mean? | 16:34 |
geektoni | HeikoS: https://github.com/geektoni/shogun/blob/4d4b69620fdc29fb58fe9f309b5f70bf77d25aae/src/shogun/evaluation/CrossValidationStorage.h#L53 | 16:34 |
geektoni | yes yes I see | 16:35 |
@HeikoS | it would be cool if it had space values of machine parameters | 16:35 |
@HeikoS | but all in a runtime fashion | 16:35 |
geektoni | it does not have those method, because I wanted to provide only a "container", without too complex methods inside. | 16:36 |
geektoni | HeikoS: space values of machine parameters? | 16:36 |
@HeikoS | sorry | 16:38 |
@HeikoS | if it had a space for values of machine parameters | 16:38 |
@HeikoS | like a map of parameter_name -> SG* | 16:39 |
@HeikoS | then there can be MKL weights, LARS residuals | 16:39 |
@HeikoS | whatever | 16:39 |
@HeikoS | and the user before x-validation starts, tells the class that he would like to observe certain parameters for each fold | 16:39 |
@HeikoS | specified by tags or string | 16:39 |
@HeikoS | then the x-validation storage class just calls the getter on those and stores them | 16:40 |
geektoni | mmh | 16:40 |
@HeikoS | because I want to avoid that one has to re-compile shogun in order to observe the parameter of choice | 16:40 |
@HeikoS | geektoni: see what I mean? | 16:44 |
@HeikoS | geektoni: I also have a question about the m_trained_machine | 16:44 |
@HeikoS | so if you store the machine, did you clone in x-valiation? | 16:44 |
@HeikoS | i.e. is the machine a different instance in every instance of the storage object? | 16:44 |
@HeikoS | because if so, then no problem | 16:45 |
@HeikoS | user just extracts from the machine himself | 16:45 |
@HeikoS | and since data is shared across the machines (it is right?), there is no memory explosion problem | 16:45 |
geektoni | ok, so, the machine stored is not cloned currently | 16:46 |
geektoni | and, as you said, it should be | 16:46 |
@HeikoS | geektoni: I think that solved my above thing | 16:47 |
geektoni | anyway, yes, since we store the trained machine, the user can extract the data he needs from it, without touching the CrossValidationStorage class. | 16:47 |
@HeikoS | because user can just query the machine | 16:47 |
@HeikoS | cool | 16:47 |
@HeikoS | so then I suggest the MKL class goes away | 16:47 |
@HeikoS | and the machine is cloned, but the features are shared memory | 16:47 |
geektoni | so then also the Multiclass ones I imagine | 16:48 |
@HeikoS | yeah | 16:48 |
@HeikoS | I mean | 16:48 |
@HeikoS | for common cases, we can offer API that is convenience | 16:48 |
@HeikoS | but it should work via the "obtain_from_generic" thing in all cases | 16:48 |
@HeikoS | you get access to the trained machine for all folds | 16:48 |
@HeikoS | plus all preductions, ground truth, result, etc | 16:49 |
geektoni | mmh, so, in the end, we could just store the machine and nothing else | 16:50 |
geektoni | maybe apart from a few things | 16:50 |
@HeikoS | I think as it is | 16:54 |
@HeikoS | is good | 16:54 |
@HeikoS | just need to make things more explicit | 16:54 |
@HeikoS | i.e. have en example where we extract mkl weights using the "generic" interface | 16:54 |
@HeikoS | as well as say LARS weights | 16:54 |
@HeikoS | could do that even in a meta example | 16:54 |
geektoni | yeah, I was trying to do that this morning | 16:54 |
geektoni | I mean, I was trying to produce some meta examples which show how to use the observers | 16:55 |
geektoni | HeikoS: I've encountered some difficulties, though. The meta example generator (for C++) appends before each classes a 'C' and the observer classes does not have a 'C' before their name (also because they do not inherit from CSGObject), so everything fails badly when building the meta examples :P | 17:00 |
@HeikoS | ah | 17:01 |
@HeikoS | yeah I see | 17:01 |
geektoni | and I cannot change the class names | 17:01 |
@HeikoS | meta examples only support SGObject subclasses | 17:01 |
geektoni | yes yes | 17:01 |
@HeikoS | because SWIG | 17:01 |
@HeikoS | only does that | 17:01 |
@HeikoS | or does SWIG map your class as well? | 17:01 |
geektoni | SWIG exposes the observer | 17:01 |
@HeikoS | because if so, then we could easily change the meta generator | 17:02 |
@HeikoS | why is it not a subclass? | 17:02 |
@HeikoS | say if you wanted to serialize it? | 17:02 |
geektoni | because it is needed by SGObject itself | 17:02 |
@HeikoS | ay | 17:03 |
@HeikoS | sure | 17:03 |
@HeikoS | ok | 17:03 |
@HeikoS | we can hack the meta generator | 17:03 |
@HeikoS | but lets do that later | 17:03 |
@HeikoS | first get the patch merged, then work on the example | 17:03 |
geektoni | sure! | 17:04 |
geektoni | btw, I was currently porting the python's one | 17:04 |
@HeikoS | and? | 17:07 |
geektoni | nothing, it was just a clarification :) because there are already some meta examples which show how to use the previous xvalidation listeners. | 17:08 |
olinguyen | HeikoS: hey, are you around? | 17:44 |
-!- geektoni [~geektoni@80.86.155.153] has quit [Remote host closed the connection] | 18:29 | |
@HeikoS | olinguyen: hi yes | 18:55 |
@HeikoS | have to go now, talk monday! | 19:23 |
-!- HeikoS [~heiko@untrust-out.swc.ucl.ac.uk] has quit [Ping timeout: 255 seconds] | 19:27 | |
--- Log closed Sat Jul 29 00:00:15 2017 |
Generated by irclog2html.py 2.10.0 by Marius Gedminas - find it at mg.pov.lt!