| --- Log opened Wed Mar 27 00:00:09 2019 | ||
| -!- sighingnow_ [~sighingno@2001:da8:203:81:28db:2637:2de1:25fa] has joined #shogun | 06:28 | |
| -!- sighingnow_ [~sighingno@2001:da8:203:81:28db:2637:2de1:25fa] has quit [Remote host closed the connection] | 07:34 | |
| -!- sighingnow [~sighingno@2001:da8:203:81:6dfb:4249:eea9:6b43] has quit [Read error: Connection reset by peer] | 07:34 | |
| -!- HeikoS [~heiko@70.pool85-52-163.static.orange.es] has joined #shogun | 09:00 | |
| -!- mode/#shogun [+o HeikoS] by ChanServ | 09:00 | |
| -!- gf712 [9052085a@gateway/web/freenode/ip.144.82.8.90] has joined #shogun | 09:03 | |
| gf712 | HeikoS: hey | 09:04 | 
|---|---|---|
| @wiking | lisitsyn: pityputy | 09:45 | 
| @wiking | :) | 09:45 | 
| @wiking | gf712: yo | 09:45 | 
| -!- geektoni [973e46de@gateway/web/freenode/ip.151.62.70.222] has joined #shogun | 10:10 | |
| @wiking | geektoni: yoza | 10:16 | 
| @wiking | geektoni: got a second? | 10:16 | 
| geektoni | wiking: hi there, sure | 10:17 | 
| @wiking | ok so | 10:17 | 
| @wiking | i wanna do a simple demo with param observers | 10:17 | 
| @wiking | say i have liblinear | 10:17 | 
| @wiking | and i wanna observe w and b | 10:18 | 
| @wiking | (weight vector and bias) | 10:18 | 
| @wiking | HELP! :D | 10:18 | 
| geektoni | ahah okay, straight to the point | 10:18 | 
| geektoni | so | 10:18 | 
| @wiking | and can i do it in develop or atm its only in branches? | 10:19 | 
| @wiking | and there's a twist in this one but that you'll see later ;) | 10:19 | 
| @wiking | btw anybody works with reactjs here? | 10:19 | 
| @wiking | i need a stupid react extension for drawing plots | 10:19 | 
| geektoni | I guess you can do it in develop since it is all there atm | 10:19 | 
| @wiking | ok so | 10:19 | 
| @wiking | tell me then | 10:19 | 
| @wiking | what are the sgobj methods | 10:19 | 
| geektoni | wiking: https://github.com/shogun-toolbox/shogun/pull/4592/files#diff-bf63664b191d73bbd6c8ac7f1ed127a1R96 | 10:20 | 
| geektoni | that is the method needed | 10:20 | 
| geektoni | currently, you need to manually add those lines to the algos you want to observe | 10:20 | 
| @wiking | aha | 10:21 | 
| geektoni | we are trying to extend put() to do it manually | 10:21 | 
| @wiking | ok that's no biggy for me | 10:21 | 
| @wiking | as it's demo | 10:21 | 
| geektoni | cool then | 10:21 | 
| @wiking | ok and how do i subscribe? | 10:21 | 
| @wiking | i mean observe | 10:21 | 
| @wiking | and then this might be the jackshit | 10:21 | 
| geektoni | let me dig out the example | 10:21 | 
| @wiking | thnx | 10:22 | 
| gf712 | wiking: hey | 10:22 | 
| @wiking | gf712: reactjs? >) | 10:22 | 
| @wiking | or no? ) | 10:22 | 
| gf712 | nope :D | 10:22 | 
| gf712 | you mean if I know anything? | 10:23 | 
| geektoni | wiking: https://github.com/shogun-toolbox/shogun/blob/develop/examples/meta/src/evaluation/cross_validation_multiple_kernel_learning_weights_storage.sg#L36 | 10:23 | 
| @wiking | subscribe_to_parameters is sgobject? | 10:23 | 
| @wiking | ye | 10:23 | 
| @wiking | ok | 10:23 | 
| @wiking | lemme see now if i can do that :))) | 10:23 | 
| @wiking | as i'm in javascript :) | 10:23 | 
| @wiking | ok i need then ParameterObserverInterface | 10:24 | 
| @wiking | so i need to implement my own paramobserver | 10:25 | 
| @wiking | that's fine | 10:25 | 
| geektoni | wiking: btw those methods are gonna change pretty soon | 10:25 | 
| @wiking | okok no worries | 10:25 | 
| geektoni | yeah, if you need custom things yes | 10:25 | 
| @wiking | i mean i just need to emit stuff | 10:25 | 
| @wiking | that is observed | 10:25 | 
| @wiking | and since its an interface | 10:26 | 
| @wiking | i need an implementation | 10:26 | 
| geektoni | the emit thing is done already by the SGObject, the observers just receive the emitted values and they does things with it | 10:27 | 
| @wiking | yeah i mean i just need the values | 10:28 | 
| @wiking | sgobjects to a ParameterObserverInterface | 10:28 | 
| @wiking | no? | 10:28 | 
| geektoni | not sure I understand | 10:29 | 
| @wiking | porco dio | 10:30 | 
| @wiking | so | 10:30 | 
| @wiking | i need the emitted values | 10:30 | 
| @wiking | i get those by adding to the sgobj a ParameterObserverInterface right? | 10:30 | 
| @wiking | or the emitted values could be received somehow else | 10:31 | 
| @wiking | ? | 10:31 | 
| @wiking | btw | 10:32 | 
| @wiking | class CParameterObserverCV : public ParameterObserverInterface, | 10:32 | 
| @wiking | public CSGObject | 10:32 | 
| @wiking | this should be addressed in the next refactor | 10:32 | 
| @wiking | as i dunno how that thing (meta exmaple) works in java/c# | 10:32 | 
| geektoni | yeah, that's how it works. You can only "receive" it using a ParameterObserverInterface | 10:33 | 
| geektoni | the multiple inheritance mess is already solved in a PR which needs a bit of refactoring before it gets merged | 10:33 | 
| geektoni | ;) | 10:33 | 
| @wiking | kk | 10:34 | 
| @wiking | cool | 10:34 | 
| @wiking | ok lemme see if i can do this | 10:34 | 
| @wiking | geektoni: btw why is that multi inheritance? | 11:06 | 
| @wiking | meaning if i would need that as well | 11:06 | 
| @wiking | for my inheritance | 11:06 | 
| @wiking | or it's more for swig? | 11:07 | 
| geektoni | wiking: i think it was for SWIG and for making some unit-tests pass | 11:25 | 
| @wiking | ok | 11:30 | 
| @wiking | but the paramobserverinterface doesnt need it | 11:31 | 
| @wiking | it'll just call the on_next etc | 11:31 | 
| @wiking | lets see :)))) | 11:31 | 
| @wiking | if this works | 11:33 | 
| @wiking | what i'm trying now i'll shit my pants | 11:33 | 
| @wiking | :D | 11:33 | 
| geektoni | wiking: lol best of luck then | 11:36 | 
| @wiking | almost :) | 11:44 | 
| geektoni | wiking: did it almost work? | 11:47 | 
| @wiking | yeah typedefs are missing from js | 11:47 | 
| @wiking | need to generate more code :s | 11:49 | 
| @wiking | but maybe some will be a bit of a problem :( | 11:49 | 
| @wiking | :S typedef std::pair<Some<ObservedValue>, time_point> TimedObservedValue; | 11:50 | 
| geektoni | those should be hidden from swig | 11:51 | 
| geektoni | I mean, they are just internal representation | 11:51 | 
| @wiking | eh? | 11:51 | 
| @wiking | no | 11:51 | 
| @wiking | virtual void on_next(const TimedObservedValue& value) = 0; | 11:51 | 
| @wiking | but i'm not working with swig | 11:51 | 
| @wiking | so it's ok | 11:51 | 
| @wiking | :) | 11:51 | 
| @wiking | i wanna have ObservedValue | 11:51 | 
| @wiking | :DDD | 11:51 | 
| geektoni | ahh I see | 11:51 | 
| geektoni | I thought you were trying to build an observer using js :/ | 11:52 | 
| @wiking | yes | 11:52 | 
| @wiking | but i'm not using js | 11:52 | 
| @wiking | i mean | 11:52 | 
| @wiking | swig for js | 11:52 | 
| @wiking | :D | 11:52 | 
| geektoni | i see isee :D | 11:52 | 
| @wiking | its native js my friend ;) | 11:53 | 
| @wiking | ok so i either hackomacko | 11:53 | 
| @wiking | the interface | 11:53 | 
| @wiking | and all the way down there | 11:53 | 
| @wiking | :) | 11:53 | 
| @wiking | or i try to do some binding for this typedef | 11:53 | 
| @wiking | :) | 11:53 | 
| @wiking | geektoni: how hard is it to change the interface u think? | 11:54 | 
| @wiking | *what do u think | 11:54 | 
| @wiking | i mean that paramobserver now just passes an observevalue | 11:54 | 
| @wiking | to on_next | 11:54 | 
| @wiking | ah no fucker! | 11:54 | 
| @wiking | i think i can do a crazy stuff | 11:54 | 
| @wiking | geektoni: wait wait | 12:01 | 
| @wiking | i get back the value in Any? :) | 12:01 | 
| geektoni | wiking: you can use get<the_correct_type>("value") to extract the value contained inside ObservedValue. | 12:08 | 
| geektoni | because ObservedValue uses the Tag framework to store the emitted value | 12:08 | 
| @wiking | yeye | 12:09 | 
| @wiking | i know | 12:09 | 
| @wiking | it's just makes things more complex :) | 12:09 | 
| geektoni | regarding the interface, if you want to get rid of that typedef it shouldn't be a big deal | 12:09 | 
| geektoni | we wanted to have everything with a uniform interface in the end :) | 12:09 | 
| @wiking | lets see | 12:10 | 
| @wiking | i did a hack now | 12:10 | 
| @wiking | maybe works | 12:10 | 
| geektoni | no more getters/setters | 12:10 | 
| @wiking | in python we have getVector i guess | 12:11 | 
| @wiking | right? | 12:11 | 
| geektoni | mmh maybe get_RealVector? | 12:12 | 
| geektoni | but yeah, there is some utility indeed | 12:12 | 
| @wiking | lets see if my haxor at least helped the timedobserved shit | 12:14 | 
| geektoni | lol | 12:14 | 
| geektoni | need to go now | 12:14 | 
| geektoni | wiking: keep me updated ;) | 12:15 | 
| -!- geektoni [973e46de@gateway/web/freenode/ip.151.62.70.222] has quit [Quit: Page closed] | 12:16 | |
| @wiking | \o/ | 12:21 | 
| @wiking | works | 12:21 | 
| -!- gf712 [9052085a@gateway/web/freenode/ip.144.82.8.90] has quit [Ping timeout: 256 seconds] | 13:01 | |
| -!- HeikoS [~heiko@70.pool85-52-163.static.orange.es] has quit [Ping timeout: 250 seconds] | 13:14 | |
| -!- HeikoS [~heiko@152.pool85-52-163.static.orange.es] has joined #shogun | 13:49 | |
| -!- mode/#shogun [+o HeikoS] by ChanServ | 13:49 | |
| -!- wiking [~wiking@huwico/staff/wiking] has quit [Remote host closed the connection] | 13:50 | |
| -!- wiking [~wiking@huwico/staff/wiking] has joined #shogun | 14:04 | |
| -!- mode/#shogun [+o wiking] by ChanServ | 14:04 | |
| -!- gf712 [9052085a@gateway/web/freenode/ip.144.82.8.90] has joined #shogun | 14:07 | |
| @wiking | toooni! | 14:14 | 
| @wiking | HeikoS: | 14:15 | 
| @wiking | do u have a pingable endpoint for Toni? | 14:16 | 
| @wiking | i need him | 14:16 | 
| -!- HeikoS [~heiko@152.pool85-52-163.static.orange.es] has quit [Quit: Leaving.] | 14:18 | |
| -!- gf712 [9052085a@gateway/web/freenode/ip.144.82.8.90] has quit [Ping timeout: 256 seconds] | 14:57 | |
| -!- geektoni [973e46de@gateway/web/freenode/ip.151.62.70.222] has joined #shogun | 14:58 | |
| geektoni | wiking: here | 14:59 | 
| @wiking | ok | 14:59 | 
| @wiking | so | 14:59 | 
| @wiking | it all works | 14:59 | 
| @wiking | :D | 14:59 | 
| @wiking | but | 14:59 | 
| @wiking | may be it's the algo's fault | 15:00 | 
| @wiking | but i'm getting sometimes undefined stuff | 15:00 | 
| @wiking | got 0.43298082219779355 | 15:00 | 
| @wiking | vector=[-0.98559447595784222,0.559442371132646166] | 15:00 | 
| @wiking | got undefined | 15:00 | 
| @wiking | got 1.0000000000000007 | 15:00 | 
| geektoni | mmh | 15:00 | 
| geektoni | what are you trying to get? just vectors? | 15:00 | 
| @wiking | nono | 15:01 | 
| @wiking | it's 1 vector | 15:01 | 
| @wiking | and one double | 15:01 | 
| @wiking | but the other shitty part is this | 15:01 | 
| @wiking | on_next: function(v) { | 15:01 | 
| @wiking | if (v.value().get_string("name") == "bias") { | 15:01 | 
| @wiking | console.log(`got ${v.value().get_any().asDouble()}`); | 15:01 | 
| @wiking | } else if (v.value().get_string("name") == "w") { | 15:01 | 
| @wiking | console.log(`got ${v.value().get_any().asRealVector()}`); | 15:01 | 
| @wiking | } | 15:01 | 
| @wiking | 15:01 | |
| @wiking | } | 15:01 | 
| @wiking | this is my js observerinterface implementation for onnext | 15:01 | 
| @wiking | it's a bit shitty :S | 15:01 | 
| @wiking | especially coz of the strcmp | 15:02 | 
| @wiking | :) | 15:02 | 
| @wiking | anyhow | 15:02 | 
| @wiking | i'll do a debugging why sometimes either the vector or the double is undefined | 15:02 | 
| @wiking | :S | 15:02 | 
| geektoni | ideally you can pass a list of names to the observer to obtain only ObservedValues with a specific name | 15:03 | 
| geektoni | but yeah | 15:03 | 
| geektoni | if you want to do it all together | 15:03 | 
| geektoni | that is what happens :/ | 15:03 | 
| @wiking | ah | 15:03 | 
| @wiking | ok yeah so | 15:03 | 
| @wiking | 1 observer per value | 15:03 | 
| geektoni | anyway, for the undefined, it may be the algo's fault | 15:03 | 
| @wiking | or something | 15:03 | 
| @wiking | that's fine | 15:03 | 
| @wiking | other shitty stuff | 15:03 | 
| @wiking | unsubscribe | 15:04 | 
| @wiking | ;D | 15:04 | 
| @wiking | i cannot unscubscribe | 15:04 | 
| @wiking | *unsubscribe | 15:04 | 
| geektoni | lol | 15:04 | 
| @wiking | and if my subscriber is fucked up | 15:04 | 
| @wiking | then i need to create a new obj | 15:04 | 
| geektoni | i guess we need to add an helper to SGObject | 15:04 | 
| @wiking | yes | 15:04 | 
| @wiking | :) | 15:04 | 
| @wiking | this is all then | 15:06 | 
| @wiking | :) | 15:06 | 
| @wiking | thnx for coming around | 15:06 | 
| @wiking | i'll share u the reactjs app when its ready | 15:06 | 
| @wiking | :P | 15:06 | 
| geektoni | cool! Looking forward to seeing it ;) | 15:07 | 
| @wiking | man | 15:08 | 
| @wiking | i'm super suprised | 15:08 | 
| @wiking | that this works | 15:08 | 
| @wiking | look at this | 15:08 | 
| @wiking | var JSParamObserver = Module.ParameterObserverInterface.extend("ParameterObserverInterface", { | 15:08 | 
| @wiking | // __construct and __destruct are optional. They are included | 15:08 | 
| @wiking | // in this example for illustration purposes. | 15:08 | 
| @wiking | // If you override __construct or __destruct, don't forget to | 15:08 | 
| @wiking | // call the parent implementation! | 15:08 | 
| @wiking | __construct: function() { | 15:08 | 
| @wiking | this.__parent.__construct.call(this); | 15:08 | 
| @wiking | }, | 15:08 | 
| @wiking | __destruct: function() { | 15:08 | 
| @wiking | this.__parent.__destruct.call(this); | 15:08 | 
| @wiking | }, | 15:08 | 
| @wiking | on_next: function(v) { | 15:08 | 
| @wiking | if (v.value().get_string("name") == "bias") { | 15:08 | 
| @wiking | console.log(`got ${v.value().get_any().asDouble()}`); | 15:08 | 
| @wiking | } else if (v.value().get_string("name") == "w") { | 15:08 | 
| @wiking | console.log(`got ${v.value().get_any().asRealVector()}`); | 15:08 | 
| @wiking | } | 15:08 | 
| @wiking | 15:09 | |
| @wiking | }, | 15:09 | 
| @wiking | on_error: function() { | 15:09 | 
| @wiking | console.log("error"); | 15:09 | 
| @wiking | }, | 15:09 | 
| @wiking | on_complete: function() { | 15:09 | 
| @wiking | console.log("complete"); | 15:09 | 
| @wiking | }, | 15:09 | 
| @wiking | }); | 15:09 | 
| @wiking | this is a js observer | 15:09 | 
| @wiking | for shogun objects | 15:09 | 
| @wiking | and it works! | 15:09 | 
| @wiking | :) | 15:09 | 
| geektoni | I am a bit surprised too! | 15:10 | 
| @wiking | wasm man wasm | 15:10 | 
| @wiking | :) | 15:10 | 
| -!- wiking [~wiking@huwico/staff/wiking] has quit [Remote host closed the connection] | 15:11 | |
| geektoni | since I've never tested the idea of coding observers in a target language != C++ | 15:11 | 
| -!- geektoni [973e46de@gateway/web/freenode/ip.151.62.70.222] has quit [Ping timeout: 256 seconds] | 15:15 | |
| -!- wiking [~wiking@huwico/staff/wiking] has joined #shogun | 15:18 | |
| -!- mode/#shogun [+o wiking] by ChanServ | 15:18 | |
| -!- wiking [~wiking@huwico/staff/wiking] has quit [Ping timeout: 268 seconds] | 15:23 | |
| -!- wiking [~wiking@2001:67c:10ec:5784:8000::3ff] has joined #shogun | 15:26 | |
| -!- wiking [~wiking@2001:67c:10ec:5784:8000::3ff] has quit [Changing host] | 15:26 | |
| -!- wiking [~wiking@huwico/staff/wiking] has joined #shogun | 15:26 | |
| -!- mode/#shogun [+o wiking] by ChanServ | 15:26 | |
| -!- wiking_ [~wiking@bmi-airport-1.inf.ethz.ch] has joined #shogun | 16:59 | |
| -!- wiking [~wiking@huwico/staff/wiking] has quit [Ping timeout: 240 seconds] | 17:02 | |
| -!- wiking_ [~wiking@bmi-airport-1.inf.ethz.ch] has quit [Remote host closed the connection] | 17:44 | |
| -!- wiking [~wiking@c-185-45-237-122.customer.ggaweb.ch] has joined #shogun | 17:56 | |
| -!- wiking [~wiking@c-185-45-237-122.customer.ggaweb.ch] has quit [Changing host] | 17:56 | |
| -!- wiking [~wiking@huwico/staff/wiking] has joined #shogun | 17:56 | |
| -!- mode/#shogun [+o wiking] by ChanServ | 17:56 | |
| -!- wiking [~wiking@huwico/staff/wiking] has quit [Client Quit] | 17:56 | |
| -!- wiking [~wiking@c-185-45-237-122.customer.ggaweb.ch] has joined #shogun | 18:32 | |
| -!- wiking [~wiking@c-185-45-237-122.customer.ggaweb.ch] has quit [Changing host] | 18:32 | |
| -!- wiking [~wiking@huwico/staff/wiking] has joined #shogun | 18:32 | |
| -!- mode/#shogun [+o wiking] by ChanServ | 18:32 | |
| -!- HeikoS [~heiko@108.pool85-52-163.static.orange.es] has joined #shogun | 21:57 | |
| -!- mode/#shogun [+o HeikoS] by ChanServ | 21:57 | |
| -!- wiking_ [~wiking@c-185-45-237-122.customer.ggaweb.ch] has joined #shogun | 22:31 | |
| -!- wiking [~wiking@huwico/staff/wiking] has quit [Read error: Connection reset by peer] | 22:31 | |
| -!- HeikoS [~heiko@108.pool85-52-163.static.orange.es] has quit [Ping timeout: 246 seconds] | 23:00 | |
| --- Log closed Thu Mar 28 00:00:11 2019 | ||
Generated by irclog2html.py 2.10.0 by Marius Gedminas - find it at mg.pov.lt!