--- Log opened Fri Apr 05 00:00:22 2019 | ||
-!- ankor [9aa00a39@gateway/web/freenode/ip.154.160.10.57] has joined #shogun | 01:41 | |
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun | 02:01 | |
-!- mode/#shogun [+o wiking] by ChanServ | 02:01 | |
-!- ankor [9aa00a39@gateway/web/freenode/ip.154.160.10.57] has quit [Ping timeout: 256 seconds] | 02:04 | |
-!- wiking [~wiking@huwico/staff/wiking] has quit [Ping timeout: 250 seconds] | 02:05 | |
-!- wiking [~wiking@c-185-45-237-122.customer.ggaweb.ch] has joined #shogun | 06:21 | |
-!- wiking [~wiking@c-185-45-237-122.customer.ggaweb.ch] has quit [Changing host] | 06:21 | |
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun | 06:21 | |
-!- mode/#shogun [+o wiking] by ChanServ | 06:21 | |
-!- wiking [~wiking@huwico/staff/wiking] has quit [Remote host closed the connection] | 07:00 | |
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun | 07:10 | |
-!- mode/#shogun [+o wiking] by ChanServ | 07:10 | |
-!- ussdd95[m] [ussdd95mat@gateway/shell/matrix.org/x-zaqgzauwmzginwyp] has quit [Remote host closed the connection] | 08:31 | |
-!- wuwei[m] [wuweilinma@gateway/shell/matrix.org/x-zjlpldhlbsckqobs] has quit [Remote host closed the connection] | 08:32 | |
-!- wuwei[m] [wuweilinma@gateway/shell/matrix.org/x-lbmilfzxgdsirjwy] has joined #shogun | 08:40 | |
-!- ussdd95[m] [ussdd95mat@gateway/shell/matrix.org/x-kauckamytvmvafya] has joined #shogun | 08:47 | |
-!- wiking [~wiking@huwico/staff/wiking] has quit [Remote host closed the connection] | 09:38 | |
-!- wiking [~wiking@c-185-45-237-122.customer.ggaweb.ch] has joined #shogun | 09:45 | |
-!- wiking [~wiking@c-185-45-237-122.customer.ggaweb.ch] has quit [Changing host] | 09:45 | |
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun | 09:45 | |
-!- mode/#shogun [+o wiking] by ChanServ | 09:45 | |
-!- wiking [~wiking@huwico/staff/wiking] has quit [Remote host closed the connection] | 09:51 | |
-!- gf712 [9052085b@gateway/web/freenode/ip.144.82.8.91] has joined #shogun | 09:54 | |
-!- wiking [~wiking@c-185-45-237-122.customer.ggaweb.ch] has joined #shogun | 09:58 | |
-!- wiking [~wiking@c-185-45-237-122.customer.ggaweb.ch] has quit [Changing host] | 09:58 | |
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun | 09:58 | |
-!- mode/#shogun [+o wiking] by ChanServ | 09:58 | |
-!- wiking [~wiking@huwico/staff/wiking] has quit [Ping timeout: 245 seconds] | 10:03 | |
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun | 10:14 | |
-!- mode/#shogun [+o wiking] by ChanServ | 10:14 | |
-!- wiking [~wiking@huwico/staff/wiking] has quit [Ping timeout: 244 seconds] | 10:18 | |
-!- wiking [~wiking@bmi-airport-1.inf.ethz.ch] has joined #shogun | 10:30 | |
-!- wiking [~wiking@bmi-airport-1.inf.ethz.ch] has quit [Changing host] | 10:30 | |
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun | 10:30 | |
-!- mode/#shogun [+o wiking] by ChanServ | 10:30 | |
gf712 | wiking: ping | 10:38 |
---|---|---|
@wiking | pong | 10:40 |
gf712 | wiking: do you know if it is to initialise a vector with specific values in the meta language? | 10:41 |
gf712 | ie. RealVector c1_param([1,2,3]) | 10:42 |
gf712 | right now I do this: | 10:42 |
gf712 | RealVector c1_param(3) | 10:42 |
gf712 | c1_param[0] = 0.1 | 10:42 |
gf712 | c1_param[1] = 1 | 10:42 |
gf712 | .. | 10:42 |
@wiking | yeah | 10:45 |
@wiking | i dont think there's a construct for initlizer list | 10:46 |
gf712 | ok, thanks! | 10:50 |
-!- ussdd95[m] [ussdd95mat@gateway/shell/matrix.org/x-kauckamytvmvafya] has quit [Remote host closed the connection] | 11:54 | |
-!- wuwei[m] [wuweilinma@gateway/shell/matrix.org/x-lbmilfzxgdsirjwy] has quit [Read error: Connection reset by peer] | 11:54 | |
-!- wuwei[m] [wuweilinma@gateway/shell/matrix.org/x-lgsgmigkinrrucnl] has joined #shogun | 12:01 | |
-!- ussdd95[m] [ussdd95mat@gateway/shell/matrix.org/x-gghaxbfxefmljigt] has joined #shogun | 12:07 | |
-!- HeikoS [~heiko@37.pool85-52-163.static.orange.es] has joined #shogun | 12:31 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 12:31 | |
-!- wiking [~wiking@huwico/staff/wiking] has quit [Remote host closed the connection] | 12:35 | |
gf712 | HeikoS: ping | 12:44 |
-!- wiking [~wiking@c-185-45-237-122.customer.ggaweb.ch] has joined #shogun | 12:46 | |
-!- wiking [~wiking@c-185-45-237-122.customer.ggaweb.ch] has quit [Changing host] | 12:46 | |
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun | 12:46 | |
-!- mode/#shogun [+o wiking] by ChanServ | 12:46 | |
gf712 | wiking: ping? | 12:46 |
-!- wiking [~wiking@huwico/staff/wiking] has quit [Ping timeout: 264 seconds] | 12:51 | |
@HeikoS | gf712: hi | 13:05 |
gf712 | HeikoS: just saw that you reviewed the PR, let me have a look | 13:06 |
@HeikoS | yes | 13:06 |
gf712 | I have an issue with clone, I think | 13:06 |
@HeikoS | we should discuss a few things | 13:06 |
gf712 | there seems to be a ref count issue | 13:06 |
@HeikoS | whats the issue? | 13:06 |
@HeikoS | ah I see | 13:06 |
gf712 | I get leaks when I clone | 13:06 |
@HeikoS | well | 13:07 |
gf712 | in my case the labels ref count isn't increased... | 13:07 |
gf712 | I think | 13:07 |
@HeikoS | I am not surprised :) | 13:07 |
gf712 | the rest I refcount myself, so it doesn't seem to leak | 13:07 |
@HeikoS | nobody ever checked the clone does things properly with complicated nested objects | 13:07 |
@HeikoS | does it block you? | 13:07 |
@HeikoS | or just leak? | 13:07 |
gf712 | ill try to fix it | 13:07 |
gf712 | I think its causing issues in python | 13:07 |
gf712 | but the cpp example works fine | 13:08 |
gf712 | ill send you a gist | 13:08 |
@HeikoS | I wouldnt worry about this for now | 13:08 |
@HeikoS | if it doesnt block | 13:08 |
@HeikoS | we can fix that later | 13:08 |
@HeikoS | since the PR is getting out of control otherwise :) | 13:08 |
gf712 | https://gist.github.com/gf712/5bc697cdd19a32648fbdd12529673922 | 13:09 |
gf712 | yea I agree | 13:09 |
gf712 | I just need to be sure if it is an issue with clone | 13:09 |
gf712 | my Valgrind skills aren't the best :p | 13:09 |
@HeikoS | it is a messy tool :) | 13:09 |
gf712 | HeikoS: the list init makes it cleaner | 13:09 |
gf712 | in the gist example | 13:10 |
gf712 | but would have to change yet another thing in the meta language... | 13:10 |
@HeikoS | yes | 13:11 |
@HeikoS | but can do later | 13:11 |
@HeikoS | we can just exploit that most langs have list initializers | 13:11 |
@HeikoS | but it doesnt matter for now | 13:11 |
@HeikoS | so the "train" thingi made be stubmle a bit | 13:11 |
@HeikoS | see comments | 13:11 |
gf712 | the python script I use to validate https://gist.github.com/gf712/c6a98704bae6fa22026f1e03148173ab | 13:11 |
gf712 | ok, ill see no | 13:12 |
gf712 | now | 13:12 |
gf712 | HeikoS: for a class to be used in a factory does it have to be derived from SGObject? | 13:13 |
@HeikoS | no | 13:13 |
@HeikoS | gf712: I mean the problem will be the wrap | 13:14 |
@HeikoS | that doesnt work for non SGObjects | 13:14 |
gf712 | yea, so it needs to inherit from the counter class? | 13:14 |
gf712 | but might not need sgobject? | 13:14 |
@HeikoS | we can specialize the template | 13:14 |
@HeikoS | or rather define it for SGObject and for others | 13:15 |
@HeikoS | actually, doesnt it work for non SGObject? | 13:15 |
@HeikoS | template <class T> | 13:15 |
@HeikoS | SG_FORCED_INLINE T wrap(const T& value) | 13:15 |
@HeikoS | { | 13:15 |
@HeikoS | return value; | 13:15 |
@HeikoS | } | 13:15 |
@HeikoS | ah here we go | 13:16 |
@HeikoS | template <class T> | 13:16 |
@HeikoS | SG_FORCED_INLINE Some<T> wrap(T* ptr) | 13:16 |
@HeikoS | { | 13:16 |
@HeikoS | return Some<T>::from_raw(ptr); | 13:16 |
@HeikoS | } | 13:16 |
@HeikoS | this one needs to be simply restricted to pointers that are subclasses of SGO | 13:16 |
@HeikoS | std::is_base_of< | 13:16 |
@HeikoS | CSGObject, typename std::remove_pointer<T>::type>::value | 13:16 |
@HeikoS | something like that | 13:16 |
@HeikoS | gf712: but actually | 13:17 |
@HeikoS | this is also lower priority | 13:17 |
gf712 | but you still need a ref method no? | 13:17 |
@HeikoS | biggest thing is the API now I would say | 13:17 |
gf712 | OK, I am open to suggestions, shouldn't be too hard to implement | 13:18 |
@HeikoS | so did you see my comment about the modular strucutre? | 13:18 |
gf712 | the core seems to be done, and it can be flexible | 13:18 |
@HeikoS | I think the final usage should be in the lines of | 13:19 |
@HeikoS | params = modelselection_instance.learn(features, labels) | 13:19 |
@HeikoS | params.to_model().train(data, labels) | 13:20 |
@HeikoS | and scores can be extracted with an observer | 13:20 |
@HeikoS | the stuff that giovanni is working on | 13:20 |
gf712 | what does .learn do? | 13:20 |
@HeikoS | depends on the strategy | 13:20 |
@HeikoS | in grid-search it has one big loop over all combinations | 13:21 |
@HeikoS | and inside it calls .evaluate() | 13:21 |
@HeikoS | keeps track of the returned score | 13:21 |
@HeikoS | and updates the best-yet score | 13:21 |
@HeikoS | (for early stopping) | 13:21 |
@HeikoS | for gradient-search | 13:21 |
@HeikoS | it would be different, no big loop over parameters | 13:21 |
gf712 | and params.to_model() is the best model? | 13:22 |
@HeikoS | yeah | 13:22 |
@HeikoS | I mean either the .learn() returns the parameters or the instantiated model | 13:22 |
gf712 | ok, I see! | 13:22 |
@HeikoS | but the point is | 13:22 |
@HeikoS | that it should all be fully against abstract APIs | 13:22 |
@HeikoS | so that we can exchange the scoring criterion (auc, etc), the evaluation (xval, etc), the way new parameters are generated (grid, random, gradient), | 13:23 |
@HeikoS | check out the old code a bit, it can actually do that | 13:23 |
@HeikoS | so for example | 13:23 |
gf712 | ok, but the parameter generator is a separate class that is passed to model selection? | 13:23 |
@HeikoS | the gradient learning on the marginal likelihood of gps | 13:23 |
@HeikoS | there criterion=marginalLikelihood, strategy=gradient | 13:24 |
@HeikoS | No the way it was done is that the modelselection class implements the parameter generator | 13:24 |
@HeikoS | thus we have "RandomSearchModelSelection", "GridSearchModelSelection", etc | 13:25 |
@HeikoS | that is not how we need to do it, just saying how it was until now | 13:25 |
gf712 | I see | 13:25 |
gf712 | let me think about how I can bring what I have now closer to that | 13:26 |
gf712 | I had in mind ParameterTree -> GridParameters -> GridSearchEngine | 13:26 |
gf712 | ParameterTree can hold scalar values | 13:26 |
@HeikoS | http://www.shogun-toolbox.org/api/latest/classshogun_1_1CModelSelection.html | 13:27 |
gf712 | GridParameters holds vectors | 13:27 |
gf712 | and then would have a RandomParameters structure that samples from a distribution? | 13:27 |
gf712 | the final engine is common | 13:28 |
@HeikoS | this kind of stuff for me is more background implementation stuff, not really part of the API | 13:28 |
gf712 | So how does the user build the tree? | 13:28 |
@HeikoS | but the api is just either I give some grid parameters or I say "please use gradient" or "sample something" | 13:28 |
@HeikoS | well for grid search the user of course needs to build it | 13:29 |
gf712 | but also for random search no? | 13:29 |
@HeikoS | one option is that yes, the other is to just give boundaries for a uniform distribution, or even some other way of specifying a distribution | 13:29 |
@HeikoS | but that is maybe future stuff | 13:31 |
@HeikoS | for now we just need to keep in mind that this would have to be a possibility | 13:32 |
gf712 | OK, just going through the docs quickly to see how it works | 13:33 |
@HeikoS | main methods are | 13:33 |
@HeikoS | virtual CParameterCombination * select_model (bool print_state=false)=0 | 13:33 |
@HeikoS | oh btw the gradient stuff was added later so some of the design doesnt really look clean | 13:34 |
gf712 | hmm, I'll have to think about how to implement that | 13:34 |
gf712 | because I am not using pure virtual functions | 13:35 |
@HeikoS | like this | 13:35 |
@HeikoS | CGradientModelSelection (CMachineEvaluation *machine_eval, CModelSelectionParameters *model_parameters=NULL) | 13:35 |
gf712 | because of the way I designed it causes issues | 13:35 |
@HeikoS | also note the use of "MachineEvaluation" | 13:35 |
@HeikoS | yeah sure that is not a problem | 13:35 |
gf712 | because a node can construct further nodes | 13:35 |
@HeikoS | ah | 13:35 |
@HeikoS | mmh | 13:35 |
@HeikoS | well the question is whether modelselection is ever used from a higher level | 13:35 |
@HeikoS | so that we need to have a base type | 13:36 |
gf712 | because the whole design is that it mimics the model | 13:36 |
gf712 | and uses that to checks what params can be added and so on | 13:36 |
@HeikoS | I see | 13:36 |
gf712 | I can add a further abstraction | 13:36 |
@HeikoS | imo it will be important to somehow unify the different model selection approaches | 13:37 |
@HeikoS | maybe we dont need an abstract base class | 13:37 |
@HeikoS | but it has to be modular in some sense | 13:37 |
@HeikoS | I gotta run now, will be back later and can discuss then though | 13:37 |
@HeikoS | will you be around in an hour? | 13:37 |
gf712 | yea, I'll be here all afternoon | 13:38 |
@HeikoS | ok ill try to be back later then :) see you! | 13:38 |
gf712 | can discuss later | 13:38 |
gf712 | ok, see you later! | 13:38 |
-!- HeikoS [~heiko@37.pool85-52-163.static.orange.es] has quit [Ping timeout: 252 seconds] | 13:42 | |
-!- shoaib98libra [56603892@gateway/web/freenode/ip.86.96.56.146] has joined #shogun | 15:41 | |
shoaib98libra | Hey Everyone! I just joined this channel so I thought I'll get to know and introduce myself | 15:46 |
shoaib98libra | My name is Mohammed Shoaib, 3rd year CS student | 15:47 |
shoaib98libra | You guys can check out my GitHub here: https://github.com/Mohammed-Shoaib | 15:47 |
-!- TheMoatman [~Moatman@pool-96-255-151-151.washdc.fios.verizon.net] has quit [Read error: Connection reset by peer] | 16:04 | |
-!- shoaib98libra [56603892@gateway/web/freenode/ip.86.96.56.146] has quit [Quit: Page closed] | 16:11 | |
-!- shoaib98libra [56603892@gateway/web/freenode/ip.86.96.56.146] has joined #shogun | 16:12 | |
-!- shoaib98libra [56603892@gateway/web/freenode/ip.86.96.56.146] has quit [Client Quit] | 16:12 | |
-!- gf712 [9052085b@gateway/web/freenode/ip.144.82.8.91] has quit [Ping timeout: 256 seconds] | 18:21 | |
-!- PS [6ee1d5db@gateway/web/freenode/ip.110.225.213.219] has joined #shogun | 20:09 | |
-!- PS [6ee1d5db@gateway/web/freenode/ip.110.225.213.219] has quit [Ping timeout: 256 seconds] | 20:39 | |
--- Log closed Sat Apr 06 00:00:24 2019 |
Generated by irclog2html.py 2.10.0 by Marius Gedminas - find it at mg.pov.lt!