| --- 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!