--- Log opened Thu Aug 10 00:00:32 2017 | ||
micmn | wiking: hey | 10:10 |
---|---|---|
@wiking | hihi | 10:11 |
micmn | did you get my mails in the past few days? | 10:11 |
@wiking | yes | 10:11 |
@wiking | I got the one | 10:11 |
@wiking | was there more than one? | 10:11 |
@wiking | i've pinged you here yesterday | 10:12 |
@wiking | but i think we've missed each otehr | 10:12 |
@wiking | *other | 10:12 |
micmn | one yesterday and one 4-5 days ago that's all | 10:12 |
micmn | mmm sorry didn't see it in the log | 10:13 |
@wiking | nevermind | 10:14 |
@wiking | i'm just having a minor ssytem crash | 10:14 |
@wiking | so backing up stuff | 10:14 |
@wiking | and trying to recover | 10:15 |
@wiking | but if you are around in 2-3 hours | 10:15 |
@wiking | we could discuss the email | 10:15 |
micmn | sure | 10:15 |
@wiking | thnx | 10:22 |
@wiking | micmn, here | 11:11 |
@wiking | so | 11:11 |
@wiking | ping me when you are around | 11:11 |
micmn | wiking: ping! | 11:13 |
@wiking | k | 11:14 |
@wiking | so let's discuss the things now about the features | 11:14 |
@wiking | lemme pull up your stuff | 11:15 |
micmn | preprocessors: as Heiko said they should either apply features on-the-fly or create a new features instance using fresh memory, right? | 11:17 |
@wiking | ok so here's a story | 11:17 |
@wiking | that is actually in a way related | 11:17 |
@wiking | micmn, so this | 11:20 |
@wiking | https://github.com/shogun-toolbox/shogun/issues/3952 | 11:20 |
@wiking | micmn, so see what sorts of troubles we might have actually :)( | 11:21 |
micmn | checking | 11:22 |
micmn | wiking: so debugging this might be useful to see how features should not be designed? is that the point? | 11:26 |
@sukey | [https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/3960 synchronized by MikeLing | 11:26 |
@wiking | micmn, indeed | 11:29 |
@wiking | micmn, lemme know when had a chance to read about it | 11:44 |
@wiking | and then let's talk a bit more | 11:44 |
micmn | wiking: ok I'm checking what's going on | 11:45 |
@wiking | i mean dont need to debug | 11:45 |
@wiking | just the problem there | 11:45 |
@wiking | to understand | 11:45 |
@wiking | honestly i'm not so sure if the exact problem is what the person says there | 11:46 |
@wiking | but there's something for sure | 11:46 |
micmn | sure I've read it | 11:47 |
@wiking | ok so i'm just wondering how would an on-the-fly solution look like? | 11:54 |
micmn | mmm | 11:56 |
micmn | speaking of iterators, they should remove mean/pruned feats before doing i.e. the dot product | 11:58 |
micmn | I think the idea is having like a stack of preprocessors | 11:59 |
micmn | applied to the features | 11:59 |
micmn | but not sure how it would work internally | 12:04 |
micmn | wiking: ok the problem is here https://github.com/micmn/shogun/blob/0b713865cf064e6a4fdc80cf4aae6c511455b34e/src/shogun/regression/LeastAngleRegression.cpp#L148-L151 | 12:12 |
micmn | my guess is: PruneStuff does features->set_num_features(m) == features.num_features = m | 12:14 |
@sukey | [https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/3960 synchronized by MikeLing | 12:15 |
micmn | then lars features->get_feature_matrix() blows everything since features->set_num_features() doesn't have any effect on the matrix | 12:16 |
micmn | in fact by adding feature_matrix.num_rows = num; to set_num_features(num) the script work | 12:36 |
@wiking | micmn, sorry man i've got ambushed by some people for some meetings | 15:42 |
micmn | nw :P | 15:42 |
@wiking | mmm ok i'm trying to see where's the problem | 15:45 |
@wiking | "in fact by adding feature_matrix.num_rows = num; to set_num_features(num) the script work" | 15:45 |
@wiking | what script? | 15:45 |
micmn | the example reported by that guy | 15:46 |
@wiking | oh man | 15:52 |
@wiking | CPruneVarSubMean | 15:52 |
@wiking | has some serious hard coded stuff as well | 15:52 |
@wiking | micmn, about SGMatrix iterators | 16:04 |
@wiking | although for the time being we'll have to go with that | 16:04 |
@wiking | but the ideas is to remove most of the functionalities from SGMatrix as that's really just a wrapper for SWIG interfaces | 16:05 |
@wiking | but yeah until we dont have a typeless Matrix | 16:05 |
@wiking | we'll have to make due with SGMatrix | 16:05 |
@wiking | i'm just wondering how would we do the on the fly mutations with preprocessors? | 16:05 |
micmn | yeah me too! | 16:05 |
@wiking | ah ok :) | 16:06 |
@wiking | yeah i mean if we could force iterator only access | 16:06 |
@wiking | that's actually not something impossible :P | 16:06 |
micmn | another point is: say we apply two preprocessors not on-the-fly | 16:07 |
micmn | what happens? one copy is useless | 16:07 |
@wiking | mm you mean preprocessor that does a copy of the feature? | 16:08 |
micmn | yeah | 16:08 |
@wiking | Prune(normalize(feature)) | 16:08 |
@wiking | ? | 16:08 |
@wiking | yeah this is the story | 16:08 |
@wiking | of eigen :) | 16:08 |
@wiking | i mean that you can optimise these things out that no need for the temporary varialb | 16:08 |
@wiking | *variable | 16:08 |
micmn | if the users do feats=...; zero_mean_feats=feats.preprocess(zero_mean_preprocessor); norm_one_feats=zero_mean_feats.preprocess(norm_one_preprocessor) | 16:09 |
@wiking | yep yep | 16:09 |
@wiking | well we should start somewhere | 16:11 |
@wiking | i mean there's not enough time to wrap up evyerhint | 16:11 |
@wiking | *everything but at least a way to go/start would be nice :) | 16:12 |
micmn | so how would you design the interaction between features and preprocessor? | 16:12 |
@wiking | yeah that's a good question | 16:12 |
@wiking | as said | 16:12 |
@wiking | if an algo | 16:12 |
@wiking | can only interract with features | 16:12 |
@wiking | via iterators | 16:12 |
@wiking | things are a bit easier | 16:12 |
@wiking | because you are just wrapping iterators right? :) | 16:13 |
@wiking | i'm just wondering if we could enforce this | 16:13 |
micmn | yeah but of course there are linalg algorithms | 16:13 |
micmn | that use svd, qr etc | 16:13 |
@wiking | :D | 16:13 |
@wiking | that work directly on the matrix :D | 16:13 |
@wiking | and than it's kabooooooom | 16:13 |
micmn | so in such a case | 16:13 |
micmn | we enforce a copy | 16:14 |
@wiking | yep | 16:14 |
@wiking | that's the only way | 16:14 |
@wiking | immutable features | 16:14 |
@wiking | :P | 16:14 |
-!- HeikoS [~heiko@host-92-0-169-11.as43234.net] has joined #shogun | 16:40 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 16:40 | |
-!- HeikoS [~heiko@host-92-0-169-11.as43234.net] has quit [Client Quit] | 16:40 | |
-!- iglesiasg [~iglesiasg@217.119.234.214] has quit [Quit: Lost terminal] | 16:40 | |
micmn | wiking: "i mean that you can optimise these things out that no need for the temporary variable", how? is it the lazy evaluation story or? | 17:14 |
@wiking | mmm compiler does it for eigen | 17:15 |
@wiking | :) | 17:15 |
-!- HeikoS [~heiko@host-92-0-169-11.as43234.net] has joined #shogun | 17:16 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 17:16 | |
-!- HeikoS [~heiko@host-92-0-169-11.as43234.net] has quit [Ping timeout: 240 seconds] | 17:20 | |
micmn | ah expression templates cool :) | 17:27 |
--- Log closed Fri Aug 11 00:00:34 2017 |
Generated by irclog2html.py 2.10.0 by Marius Gedminas - find it at mg.pov.lt!