IRC logs of #shogun for Tuesday, 2018-05-01

--- Log opened Tue May 01 00:00:47 2018
-!- HeikoS [~heiko@host86-128-122-53.range86-128.btcentralplus.com] has joined #shogun00:32
-!- mode/#shogun [+o HeikoS] by ChanServ00:32
-!- HeikoS [~heiko@host86-128-122-53.range86-128.btcentralplus.com] has quit [Ping timeout: 248 seconds]00:44
-!- tctara_ [~quassel@irc.redcorelinux.org] has quit [Read error: Connection reset by peer]08:30
-!- tctara [~quassel@irc.redcorelinux.org] has joined #shogun08:30
-!- HeikoS [~heiko@host86-128-122-53.range86-128.btcentralplus.com] has joined #shogun10:12
-!- mode/#shogun [+o HeikoS] by ChanServ10:12
-!- lambday [31cf37b6@gateway/web/freenode/ip.49.207.55.182] has joined #shogun10:42
-!- mode/#shogun [+o lambday] by ChanServ10:42
@HeikoSlambday: jojo10:49
@lambdayHeikoS: hey10:51
@lambdayHeikoS: gonna try with native python one more time... if it doesn't work this time I'm gonna switch to docker10:51
@HeikoSok!10:51
@lambdayjust upgraded my system10:51
-!- lambday [31cf37b6@gateway/web/freenode/ip.49.207.55.182] has quit []11:02
-!- lambday [31cf37b6@gateway/web/freenode/ip.49.207.55.182] has joined #shogun11:06
-!- mode/#shogun [+o lambday] by ChanServ11:06
@lambdayHeikoS: so, for starters, I was thinking I'm gonna drop all the convenient ctors in the testing framework... put a global factory method, say, mmd(...)11:16
@lambdaynext step can be to drop all specialized methods from the impl classes... and replace them with get/put ...11:17
-!- HeikoS [~heiko@host86-128-122-53.range86-128.btcentralplus.com] has quit [Ping timeout: 260 seconds]12:00
-!- HeikoS [~heiko@host86-128-122-53.range86-128.btcentralplus.com] has joined #shogun12:03
-!- mode/#shogun [+o HeikoS] by ChanServ12:04
-!- lambday [31cf37b6@gateway/web/freenode/ip.49.207.55.182] has quit [Ping timeout: 260 seconds]12:04
-!- lambday [31cf37b6@gateway/web/freenode/ip.49.207.55.182] has joined #shogun12:11
-!- mode/#shogun [+o lambday] by ChanServ12:12
@HeikoSlambday: hi, sorry was out for a moment12:18
@HeikoSI say yes to droppeing the ctors12:18
@HeikoSfactory should be hypothesis test I think12:18
@HeikoSthat can be a base class next to CMachine12:18
@HeikoSso it would be12:18
@HeikoSmmd = hypothesis_test("QuadraticTimeMMD")12:19
@HeikoSlambday: btw12:19
@HeikoSyou dont need to drop the ctors for now12:19
@HeikoSkeep them12:19
@HeikoSjust add the factory and change the examples12:19
@HeikoSlambday: minimal code edit changes12:19
@HeikoSmakes things faster and we can do more important stuff (dropping can be done later)12:19
@HeikoSlisitsyn: any news on those lazy get calls?12:19
@HeikoSlambday: let me know if that makes sense12:21
@HeikoSlambday: btw12:25
@HeikoSyou can also work on hedosimnbot if that helps12:25
@HeikoSwe have et installed there, so might help a potentially unstable connection12:26
@lambdayHeikoS: I already dropped the ctors... unit-tests and the meta examples work without them12:54
@lambdayI mean, they compile....12:54
@lambdayrunning them now12:54
@lambdayHeikoS: yeah hypothesis_test makes more sense than mmd....12:54
@HeikoSlambday: you can keep on having them removed, was just sayinfg to save you some work12:55
@HeikoSlambday: yeah its a mindset shift: no more spedcialised classes in the API12:55
@HeikoSI think introducing a "test" class makes sense12:55
@lambdayHeikoS: I was also thinking, maybe we can remove 'set_p', 'set_q' things and use put('features_p', features_p) instead... then we won't need different classes for tests invoking 1-2-3-more distributions12:55
@HeikoSthough we can simplify this even further later12:56
@HeikoSlambday: yes absolutely12:56
@HeikoSthese methods should go, no setters in the api12:56
@HeikoSagain, no need to remove them12:56
@HeikoSjust make the .put work12:56
@HeikoSthe user will just do12:56
@HeikoSmmd.put("features_p" ,bla)12:56
@lambdayyeah12:57
@HeikoSand if he tries to set soething that is not registered, he will get an error12:57
@HeikoSso this will cover all cases of 1,2,3 distribution tests12:57
@lambdayyeah that's what I was thinking12:57
@HeikoSlambday: furthermore, I am currently working on a method "add"12:57
@HeikoSfor repeated parameters that are stored in an array12:57
@HeikoSlike the multiple kernels12:57
@HeikoSso it will be12:58
@HeikoSmm=test("multikernelMMDBLA")12:58
@HeikoSmm.add("kernels", kernel("GaussianKernel"))12:58
@HeikoSsee the point?12:58
@HeikoSthis will be useful for your stuff as well12:58
@HeikoSwhat you can do to prepare is to register the kernel array12:59
@lambdayHeikoS: yeah this sounds pretty neat12:59
@HeikoSstd::vector should be ok12:59
@HeikoSyou can register that using "watch_param"12:59
@HeikoSat least I think so12:59
@HeikoSas it is not done yet (the add method), leave the setters in for now12:59
@HeikoSall thats needed is to make put work via registering all parameters13:00
@HeikoSand you can test using the meta examples13:00
@HeikoSvery non-invasive changes13:00
@lambdayHeikoS: let me first send the ctor patch... then in a separate patch I'm gonna push the setter/getter changes13:00
@HeikoSlambday: sure13:01
@HeikoSlambday: again, no need to touch the getter/setters13:01
@HeikoSlambday: all thats needed is to use put/get in the example13:01
@lambdayya ya..13:01
@HeikoSand for that to work, you need to inherit from CSGObject and register13:01
@HeikoSlambday: sorry for being repetitive, it took me a while to get it myself :D13:01
@lambdayHeikoS: haha I need some time as well.. dw :)13:03
@lambdaybrb13:03
-!- HeikoS [~heiko@host86-128-122-53.range86-128.btcentralplus.com] has quit [Ping timeout: 256 seconds]13:08
-!- HeikoS [~heiko@host86-128-122-53.range86-128.btcentralplus.com] has joined #shogun13:09
-!- mode/#shogun [+o HeikoS] by ChanServ13:09
@lambdayHeikoS: there?13:45
@HeikoSy13:45
@lambdayHeikoS: for the two-distro tests that I have, I am not storing the features directory in a member attributes... I'm storing them directly inside the data manager13:46
@HeikoSyes I know13:46
@lambdayHeikoS: I can make it lazy but it then would require some sort of init(...) call13:46
@HeikoSnot sure what you mean by lazy13:47
@HeikoSyou will need to register them somehow in the CSGObject API class13:47
@HeikoSwatch_param13:47
@lambdayHeikoS: I mean, I store them in member attrib... those would be registered.... then when the computation starts, I populate them in data_mgr and do the job..13:48
@HeikoSah13:48
@HeikoSyeah thats an idea13:48
@lambdaydata_mgr uses a vector to store those guys13:48
@lambdayso, can't use the locations until I populate in there13:48
@HeikoSyou can register things in vectors13:49
@HeikoSbut then you cannot change the vector anymore13:49
@HeikoSthat that doesnt make sense13:49
@lambdayya13:49
@HeikoSyeah so you could make those things members or the API class13:49
@HeikoSinitialised and registered in constructor13:49
@HeikoSand then pass them on in the train methods13:49
@HeikoSor compute or how it is called13:50
@HeikoSlambday: think that works?13:50
@lambdayHeikoS: thinking... there are multiple 'compute' methods.. compute_statistic, compute_variance, sample_null ....13:51
@lambdayif I need to pass them on to one, I'd need to pass to every one of them13:52
@HeikoSyeah thats an issue of lazy13:52
@HeikoSI guess there could be a "prepare" method or something?13:52
@lambdayHeikoS: yeah that's easiest but that would change the API13:53
@HeikoSit's the de-tached design of those classes that bites back now13:53
@HeikoSchange the API?13:53
@HeikoSno I mean an internal method13:53
@HeikoSand all the API methods call this before they start13:53
@lambdayHeikoS: yeah that's an idea...13:54
@HeikoSsome machines do this as well13:54
@HeikoSsee my big PR13:54
@lambdaythat's what I was also thinking... prepare(...) or init(...) method13:54
@HeikoSthere was something on multiclass machines13:54
@HeikoSinit_strategy13:54
@HeikoScan only be called once we have training features13:54
@lambdayI see13:55
@HeikoSbut those are only available within the training call13:55
@HeikoSso have to be lazy13:55
@HeikoSand every multiclass machine needs to call this in train_machine13:55
@HeikoSotherwise it segfaults13:55
@HeikoSinit_strategy was called in ctor before13:55
@HeikoS(the ctor where features were available)13:55
@HeikoSso it is the same kind of problem13:55
@HeikoSlambday: i think it should work13:56
@lambdayHeikoS: yeah that would work... another, a bit cleaner design IMO would be so introduce a TestConfiguration class and register that... every subclass of HypothesisTest would register its own config... the 'compute_stuff' methods would then pass this immutable instance to a compute module.. which would put it in whatever and it its job... and sends the result back13:59
@HeikoSlambday: I think that would be nicer, however13:59
@HeikoSthis would not be shogun-like design13:59
@HeikoSwe actually dont want to do this kind of stuff, as it creates all these bridging problems14:00
@HeikoSinstead, we would prefer to operate within the framework itself14:00
@HeikoSusing the same patterns everywhere14:00
@lambdayHeikoS: yeah I see the point... would be better to understand and change14:00
@lambdaylet me go by the init thing then14:00
@HeikoSeven though maybe the design patterns are not the nicest, things then are a bit more general, and we dont need to introduce all these classes/code for every part of the framework14:01
@HeikoSlambday: I think it is also possible to do with via an abstract base class and specialised methods14:01
@HeikoSi.e. you force that the init method is called14:01
@HeikoSbut I think for this case here, we wanna minimise the number of code changes (it is just some rerfactoring)14:01
@HeikoSso simple works :)14:02
@lambdayHeikoS: yeah let me think how to achieve this with minimal code changes14:02
@HeikoSimo, an init method that sets up the data structures of your testing code should do it14:03
@HeikoSanother option might be14:03
@HeikoSto actually register the contents of those data-structures, and not allow the user to change them after14:03
@HeikoSbut that might be more risky that initialisig them everytime14:03
@HeikoSand also I think the API methods are not called in high throughput loops anyways14:04
@HeikoSso re-initialising is ok14:04
@HeikoSjust liek "train"14:04
@lambdayHeikoS: yeah that can also be done14:06
@HeikoSlambday: are the vectors changed at any point?14:06
@HeikoSor did you just make it a vector to use the same manager for all cases?14:06
@HeikoSor is there a user interaction going on? idr this14:07
@HeikoSbecause if the number of features in the vector are fixed per test class, why not put the member pointers into the vector in the ctor?14:07
@HeikoSand then put just changes the poiner, which is stored in your data manager vector14:08
@HeikoSlambday: ?14:08
-!- lambday [31cf37b6@gateway/web/freenode/ip.49.207.55.182] has quit [Ping timeout: 260 seconds]14:10
-!- witness [uid10044@gateway/web/irccloud.com/x-kcvicylabzhbudpt] has quit []14:16
-!- lambday [31cf37b6@gateway/web/freenode/ip.49.207.55.182] has joined #shogun14:23
-!- mode/#shogun [+o lambday] by ChanServ14:23
@sukey[https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/4268 opened by lambday14:35
@sukey[https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/426814:35
wuweihi heiko, I'm refactoring ipython notebook, as said in email, features should be created via factory method, how about others like distance, machine, should I update them with factories?14:50
@HeikoSwuwei: let's start with features16:05
@HeikoSsince it is a lot of changes otherwise16:05
@HeikoSwhere needed or easy, you can update the others as well16:05
@HeikoSbut we are aiming for features first16:06
@HeikoSwuwei: thanks for getting into tit16:06
wuweiok, great!16:06
@sukey[https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/4268 merged by karlnapf16:15
@sukey[https://github.com/shogun-toolbox/shogun] New commit https://github.com/shogun-toolbox/shogun/commit/b85020ce3cf7f441e356227dc11c01042948d87c by karlnapf16:15
@sukey[https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/4269 opened by vinx1317:06
wuweiheiko: could you review this pr before I proceed furthur. the problem is, there are many irrevalent changes when contents are automically converted to the new notebook format, which can make it hard to review17:09
-!- travis-ci [~travis-ci@ec2-54-242-251-1.compute-1.amazonaws.com] has joined #shogun17:15
travis-ciit's Soumyajit De's turn to pay the next round of drinks for the massacre he caused in shogun-toolbox/shogun: https://travis-ci.org/shogun-toolbox/shogun/builds/37348433217:15
-!- travis-ci [~travis-ci@ec2-54-242-251-1.compute-1.amazonaws.com] has left #shogun []17:15
-!- durovo1 [~durovo@37.8f.559e.ip4.static.sl-reverse.com] has quit [Remote host closed the connection]17:30
-!- durovo [~durovo@37.8f.559e.ip4.static.sl-reverse.com] has joined #shogun17:30
-!- travis-ci [~travis-ci@ec2-54-242-251-1.compute-1.amazonaws.com] has joined #shogun17:36
travis-ciit's Soumyajit De's turn to pay the next round of drinks for the massacre he caused in shogun-toolbox/shogun: https://travis-ci.org/shogun-toolbox/shogun/builds/37348433217:36
-!- travis-ci [~travis-ci@ec2-54-242-251-1.compute-1.amazonaws.com] has left #shogun []17:36
@sukey[https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/4270 opened by karlnapf18:29
@sukey[https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/427018:29
-!- travis-ci [~travis-ci@ec2-54-92-229-93.compute-1.amazonaws.com] has joined #shogun18:45
travis-ciit's Soumyajit De's turn to pay the next round of drinks for the massacre he caused in shogun-toolbox/shogun: https://travis-ci.org/shogun-toolbox/shogun/builds/37348433218:45
-!- travis-ci [~travis-ci@ec2-54-92-229-93.compute-1.amazonaws.com] has left #shogun []18:45
@sukey[https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/4270 synchronized by karlnapf18:56
-!- lambday [31cf37b6@gateway/web/freenode/ip.49.207.55.182] has quit [Ping timeout: 260 seconds]20:15
-!- HeikoS [~heiko@host86-128-122-53.range86-128.btcentralplus.com] has quit [Ping timeout: 255 seconds]20:16
-!- HeikoS [~heiko@host86-128-122-53.range86-128.btcentralplus.com] has joined #shogun20:21
-!- mode/#shogun [+o HeikoS] by ChanServ20:21
-!- travis-ci [~travis-ci@ec2-54-92-229-93.compute-1.amazonaws.com] has joined #shogun20:45
travis-ciit's Shubham Shukla's turn to pay the next round of drinks for the massacre he caused in shubham808/shogun: https://travis-ci.org/shubham808/shogun/builds/37359469420:45
-!- travis-ci [~travis-ci@ec2-54-92-229-93.compute-1.amazonaws.com] has left #shogun []20:45
@sukey[https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/4236 synchronized by shubham80820:52
-!- travis-ci [~travis-ci@ec2-54-157-240-91.compute-1.amazonaws.com] has joined #shogun22:12
travis-ciit's Shubham Shukla's turn to pay the next round of drinks for the massacre he caused in shubham808/shogun: https://travis-ci.org/shubham808/shogun/builds/37359908622:12
-!- travis-ci [~travis-ci@ec2-54-157-240-91.compute-1.amazonaws.com] has left #shogun []22:12
-!- travis-ci [~travis-ci@ec2-54-242-251-1.compute-1.amazonaws.com] has joined #shogun22:37
travis-ciit's Shubham Shukla's turn to pay the next round of drinks for the massacre he caused in shubham808/shogun: https://travis-ci.org/shubham808/shogun/builds/37359908622:37
-!- travis-ci [~travis-ci@ec2-54-242-251-1.compute-1.amazonaws.com] has left #shogun []22:37
--- Log closed Wed May 02 00:00:49 2018

Generated by irclog2html.py 2.10.0 by Marius Gedminas - find it at mg.pov.lt!