IRC logs of #shogun for Monday, 2018-03-12

--- Log opened Mon Mar 12 00:00:37 2018
-!- witness [uid10044@gateway/web/irccloud.com/x-qoaueyjaqdhccyka] has joined #shogun00:06
-!- witness [uid10044@gateway/web/irccloud.com/x-qoaueyjaqdhccyka] has quit [Quit: Connection closed for inactivity]02:47
-!- durovo [~durovo@cc.b7.2ea9.ip4.static.sl-reverse.com] has quit [Remote host closed the connection]07:35
-!- durovo [~durovo@cc.b7.2ea9.ip4.static.sl-reverse.com] has joined #shogun07:35
-!- wiking [~wiking@huwico/staff/wiking] has joined #shogun10:21
-!- mode/#shogun [+o wiking] by ChanServ10:21
-!- HeikoS [~heiko@host86-132-201-109.range86-132.btcentralplus.com] has joined #shogun11:21
-!- mode/#shogun [+o HeikoS] by ChanServ11:21
@sukey[https://github.com/shogun-toolbox/shogun] Issue https://github.com/shogun-toolbox/shogun/issues/3058 closed by karlnapf12:04
-!- HeikoS [~heiko@host86-132-201-109.range86-132.btcentralplus.com] has quit [Ping timeout: 240 seconds]13:21
-!- HeikoS [~heiko@host86-132-201-109.range86-132.btcentralplus.com] has joined #shogun13:34
-!- mode/#shogun [+o HeikoS] by ChanServ13:34
-!- HeikoS [~heiko@host86-132-201-109.range86-132.btcentralplus.com] has quit [Ping timeout: 268 seconds]13:42
-!- wuwei [~Vincent@202.120.19.103] has joined #shogun13:47
wuweihi13:47
-!- HeikoS [~heiko@86.132.201.109] has joined #shogun13:55
-!- mode/#shogun [+o HeikoS] by ChanServ13:55
@wikingwuwei, sup?13:56
wuweiwiking, I'm considering the propressor API13:57
@wikingwuwei, in what sense?13:58
wuweiwe want immutable features, so i think preprocessors need some redesign13:59
@wikinghahah13:59
@wikingyeah13:59
@wikingin that case that is definitely the case13:59
@wikingthe problem is that preprocessors14:00
wuweii am not sure whether it's good to support only on-the-fly preprocessors14:00
@wikingare actually part of features14:00
@wikingwhich is in case you wanna be able to support14:00
@wikingpipelines14:00
@wikingthen you would need to take care14:00
@wikingof what operator works on what14:00
@wikingfor exaple14:00
@wiking*examples14:00
@wikingperprocessors are actually have to use a very different method call etc14:01
@wikingthan machines14:01
@wikingas in case of preprocessors its always14:01
@wikingpreprocessor.init (on train set)14:01
@wikingthen train_features.add&apply_preprocessor14:01
@wikingetc etc14:01
@wikingwhereas14:01
@wikingif we would have the similar api like scikit learn14:01
@wikingthen everything is a train/apply14:01
@wikingor fit/predict14:01
@wikingwuwei, see what i mean? i mean i would stop supporting at all this preprocessor funkyness14:02
@wikingin features14:02
wuweiyeah i see14:02
@wikingof course they are in a way there14:02
@wikingbecuase of the fact of subset stack14:02
wuweiso preprocessors might have very different interface?14:03
@wikingi think it should have a machine like14:03
@wikingtrain/apply interface14:03
wuweiinit + apply14:03
@wikingyeah i mean currently that's the story14:03
@wikingyes14:03
@wikingi mean the story of preprocessors is actually14:04
@wikingthat they are stackable14:04
@wikingi.e. can have a pipeline14:04
@wikingalready14:04
@wikingif you check Features14:04
@wikingit has an add_preprocessor14:04
@wikingand you can add as much as you want14:04
wuweiyes i found it14:04
@wikingand they are actually called in sequence14:04
@wikingthat's like an initial pipeline support14:04
@wikingbut only for preprocessors14:05
@wikingit woudl be better to have the whole thing extended to14:05
@wikingthe whole library14:05
@wikingmeaning we can have pipeline of machines and preprocessors14:05
wuweii see, so everything will have a similar interface like fit and predict14:05
@wikingthat always operate over the (features, label) tupple14:06
@wiking*tuple14:06
@wikingi mean on the end of the day14:06
@wikingno matter what you do14:06
@wikingin ML you always operate over your features&labels14:06
@wikingonce you arrived having features and labels of course14:06
@wikingso yeah i would say14:07
@wikingthat lets refactor for the time being14:07
@wikingthe whole preprocessor api14:07
@wikingto train/apply14:07
wuweiyeah, for current features, as processors modify data directly, i would suggest to apply preprocessors when one call get_feature_matrix or vector, and then we can cache the result14:08
@wikingcache result?14:09
wuweifor example, in CDenseFeatures14:10
@wikingmmmm14:10
@wikingwell14:10
wuweithere is already a CCache14:10
@wikingif you wanna do immutability14:10
@wikingthen of course these things are all copied :)))14:10
@wikingbut yeah having the preprocessed output14:10
@wikingcached in one way or another would be good14:10
@wikingwuwei, i would refrain myself for using that cache14:11
@wiking:D14:11
@wikingi mean it's a cache that could be accessible from SWIG interfaces14:11
@wikingbut in this case you really dont need this14:11
@wikingyou just want to have a good cache implementation14:12
@wikingthat preferably uses standards14:12
@wikingas you dont really need to expose the cache itself to the swig14:12
@wikingjust it's content14:12
wuweii see, but what's the point of CCache14:13
@wikingwell it was used14:13
@wikingin the time when everything was actually14:13
@wikingswigable14:13
@wikingi.e. exposed to swig14:13
@wikingand as well there were not really good standards14:13
@wikingso many things had to be implemented within shogun14:14
wuweiso we should implement a better cache :)14:14
@wikingthe question is whether we really need to implement one14:14
@wikingmeaning cant we just take something off from the shelf?14:14
wuweisth like std::map14:15
wuwei?14:15
@wikingwell14:15
@wikingdunno how an std::map would be a good idea14:15
@wikingto use for feature cache :)14:15
wuweiyeah, i will think about that14:18
wuweibut does std classes work with those ref count stuff14:18
@wikingyou should wrap it with Some14:19
@wikingso for example std::vector<Some<CSGObject>>14:20
@wikingthis will make sure that the ref count is correct14:20
wuweii see14:20
wuweibtw, another thing is SGMatrix/ vector14:21
wuweithey have shadow copy ctors14:21
wuweiso one can always mutate const data by creating shadow copies14:22
wuweimy idea is to make copy-ctor deep-copy, and add move ctor that accepts rvalue reference14:24
-!- HeikoS [~heiko@86.132.201.109] has quit [Ping timeout: 248 seconds]14:40
-!- wuwei [~Vincent@202.120.19.103] has quit [Quit: wuwei]15:12
-!- HeikoS [~heiko@host86-132-201-109.range86-132.btcentralplus.com] has joined #shogun15:14
-!- mode/#shogun [+o HeikoS] by ChanServ15:14
-!- wuwei [~Vincent@59.78.1.153] has joined #shogun15:39
-!- wuwei [~Vincent@59.78.1.153] has left #shogun []15:52
@HeikoSwiking: C:\src\vcpkg> .\vcpkg install shogun16:18
@HeikoSthat works now?16:18
@wikingimo should16:19
@wikingno16:20
@wikingsorry wrong window16:20
@HeikoSwiking: cool, I will add that to the installation page then :)16:29
@HeikoSkudos!16:29
@HeikoSlisitsyn: jojo16:29
lisitsynHeikoS: hey16:34
@HeikoSlisitsyn: nice one with the clone16:35
@HeikoSlisitsyn: what about the free issue?16:35
lisitsynSG_FREE is fine16:35
@HeikoSlisitsyn: also, any more opinions on the as_binary thingi?16:35
@HeikoSlike, have it be a constructor instead16:36
lisitsynHeikoS: elaborate plz :)16:36
lisitsynsa_binary constructor?16:36
@HeikoSnew CBinaryLabels(CLabels*)16:36
lisitsyninternally?16:36
@HeikoSyes16:36
@HeikoSand then inside libsvm16:36
@HeikoSrather than16:36
lisitsynidk I am fine with copy ctor16:36
@HeikoSas_binary, we do new CBinaryLabels(m_labels)16:36
lisitsynwhat's the motivation?16:37
@HeikoSidk16:37
lisitsynyolo16:37
@HeikoSviktor suggested16:37
@HeikoSbut didnt say why16:37
lisitsynwhat was the initial approach?16:37
lisitsyncast?16:37
@HeikoSthe my suggested approach is in the PR16:38
@HeikoSthe as_binary method16:38
@HeikoSthat gives you a NEW object16:38
@HeikoSwith potentially the same vector underneath16:38
@HeikoSor a new one, if it needs to convert16:38
@HeikoSand I guess technically, that is not necessary if the passed labels are already binary labels16:38
@HeikoScould cast them16:38
lisitsynhow's that different from the other one?16:39
@HeikoSwhat is the other one?16:39
lisitsynnew BinaryLabels(other)16:39
@HeikoSis is the same thing, just different API16:39
lisitsynI am a bit lost what are the variants we choose from16:39
lisitsyn:)16:39
@HeikoSwhat is the best way in your opinon16:39
lisitsynbetween what and what?16:40
@HeikoSnot between16:40
@HeikoSjust like16:40
@HeikoSI have a CLabels member pointer16:41
@HeikoSbut I need to treat is as Binary labels16:41
@HeikoSand I want to potentially convert16:41
lisitsyn->as_binary() sounds good to me16:41
@HeikoSlisitsyn: kk16:41
lisitsynah16:41
lisitsynok wait16:41
lisitsynI think I got the idea16:41
lisitsynas_binary() violates open-closed principle16:42
lisitsyn:)16:42
@HeikoSexplain pls16:42
lisitsynevery type we should add16:42
lisitsyninto the base class16:42
@HeikoSit would16:42
lisitsynthat's why new BinaryLabels(labels) sound better16:42
lisitsynfor wiking16:42
lisitsyn(I guess)16:42
@HeikoSI mean labels are pretty finite16:43
@HeikoSbut ok16:43
lisitsynyes16:43
@HeikoSit is a point16:43
lisitsynthat's my opinion as well16:43
lisitsynbut good practice tells to do this way16:43
@HeikoSyep16:43
lisitsynthe only thing I'd change16:43
@HeikoSK_GAUSSIAN16:43
@HeikoS:D16:43
lisitsynis not new BinaryLabels16:43
lisitsynbut binary_labels(labels)16:43
@wikingimo it's stupid to define16:44
@HeikoSinside the C++ code?16:44
@wikinga new method16:44
@wikingfor soemthing that you have16:44
@wikingand as well some of those copy-ctors16:44
@wikingshould jsut be16:44
@wikingmove-s16:44
@wiking*moves16:44
@wikingas they dont need to copy the underlying16:44
@wikingdata16:44
@wikingjust interpret it differently16:44
@HeikoSso just to be clear16:45
@HeikoSwe have CBinaryLabels(CLabels *)16:45
@HeikoSand that checks the type of the passed labels and converts appropriately16:45
@HeikoS?16:45
lisitsynit is not really stupid but nevermind :P16:46
@wikingwe have already many of these16:47
@wikingas_*16:47
@wikingi. mean there's already16:47
@wikingas<WhateverSGObj>16:47
@HeikoSbut that method doesnt help here16:47
@wikingof course that's a bit different16:47
@wikingbut still16:47
@wikingit just too noisy as well16:47
@HeikoSi will put it into the ctor then16:47
@wikingHeikoS, really? :)16:47
@wikingi though we could just do .as<>16:48
@wikingand all good16:48
@wiking;D16:48
@wikingbut the problem is16:48
@HeikoSif I could overload it16:48
@wikingthat we have much more16:48
@wikingpressing matter16:48
@wikings16:48
@wikingimo16:48
@wikingthan these nitpickings16:48
@wiking:D16:48
@HeikoSwell let me put it into the ctor16:48
@HeikoSyeah sure16:48
@HeikoSjust wanna get the thing done16:48
@wikingas this is bullshit16:48
@wikingbingo16:48
@wiking:D16:48
@wikingour problem of not having a stable working cv16:49
@wikingor a pipeline16:49
@wikingis actually a more pressing issue16:49
@wikingthan any of our last prs in these months16:49
@wikingunfortunately16:49
@wiking:(16:49
@HeikoSsuch a motivation booster you are sometimes!16:49
lisitsyn:)16:49
@wikingyeah16:49
@wikingi mean this is bs bingo16:50
@wikingreally16:50
@wikingi tried 2 kernels16:50
@wikingto be written16:50
@wikingfor some simple kaggle competitions16:50
@wikingyou know for a fact16:50
@wikingthat atm it's almost impossible16:50
@wikingto do the job only16:50
@wikingwith shogun16:50
@wiking(i'm not talking now about ETL of the data in the beginning)16:50
@wikingi consider pandas or any other tool for that16:51
lisitsynhey can you assign an issue to me? :)16:51
lisitsynI have seen some16:51
@wikingthere's a shitty one16:51
@wikingabout dynamic matrix mapping16:51
@wikinglemme get it16:51
lisitsynI am in regime of doing one issue at a time, slowly, but I can resolve some if you point16:51
@wikinglisitsyn, https://stackoverflow.com/questions/45291071/passing-dynamic-eigen-matrices-to-shogun-cdensefeatures16:52
@wikingHeikoS, it's not meant to be a booster it was rather meant to be getting our priorities right16:53
@wikingimo atm that is a 'bit' off16:54
@HeikoSI think I can set my priorities myself, thanks16:54
@wikinglol16:54
@wikingi wasnt talking what your priorities should be16:54
@wikingi was talking about what shogun's priorities should be16:54
@wikingthat might not be the same thing16:55
@HeikoSsure16:55
@wikingso you can do whatever16:55
@HeikoSI will check into some of those things16:55
@wikingi really dont care16:55
@HeikoSbut I want to do one thign after another16:55
@wikingi'm just saying16:55
@wikingthat if anybody start using this tool16:55
@wikingsome very very basic stuff16:55
@HeikoSto finish stuff that I have spent time with before16:55
@wikingis super not working16:55
@wikingthat probably will just block16:56
@wikingfuther advanced use of the tool16:56
@wikingbut hey16:57
@wikingit's a free world16:57
@wikingi aint want to fuck with your shit16:57
@wikingso do what you feel is the best16:57
@wikingbut imo that's not how a group should work regarding how to go forward :)16:57
lisitsynit is not really that we don't care about the experience :)16:57
@wikingstrictly imo16:57
@wikinglisitsyn, but we drag those stuff around16:57
lisitsynthe thing is that we wanted to change a lot of things, that's why we discuss some of them16:58
lisitsynyeah I totally agree we should do first things first16:58
@wikingi mean maybe16:58
@wikingits time to throw things out16:58
@wikingbecause those r blocking a lot of progress16:58
@wikingas u keep trying to be 'backward compatible'16:58
lisitsynoh :)16:59
@wikingmeaning keep it working16:59
@wikingnot you in particular16:59
@wikingbut all of us16:59
lisitsynit is a bit different from my pov16:59
lisitsynwhen I try to keep the same behaviour16:59
lisitsynit is rather to not get away from something working at least somehow16:59
@wikingyeah17:00
lisitsynI mean getting to something compileable from broken would be exponentially harder17:00
@wikingalthough that presumption17:00
@wikingis not always true17:00
@wikingcompiles, some tests pass17:00
@wikingdoesn't necesary means that it works17:00
@wikingi can give a handful of those examples17:00
@wikingof last week17:00
@wikingthat i faced :)17:01
lisitsynthat's true but in what we've changed recently17:01
lisitsynit was rather essential to keep it compileable17:01
@wikingyea17:01
@wikingbut maybe not having it compabtilbe17:01
@wikingwould have allowed faster moving forward17:02
lisitsynI agree17:02
@wiking(i'm talking about all those prs of typedo17:02
@wikingthat Heiko did17:02
@wikinghe has spent literally days17:02
lisitsynI am a bit out of the process17:02
@wikingto get some of the interfaces in place17:02
lisitsynbut I think it is just the same thing, trying to keep it at least executing somehow17:02
lisitsyn:)17:02
lisitsynwiking: since we've refactored some things already I think I can focus on fixing something17:03
lisitsynjust let me know what's the most important/shameful not-working-thing17:03
@wikingyeah but thats the thing17:03
@wikingi would rather just break whole cv17:03
@wikingand start it from scratch17:03
@wikingand the same is for feature17:03
@wikings17:03
@wikingas we know where are the 'bad' decisions17:04
lisitsynI am a fan of implementing the same thing twice in a codebase and then do the switch17:04
lisitsynso actually implementing the other cv could be a great idea17:05
@wikingsame goes for features im17:05
@wikingo17:05
@wikingand the same io thing17:05
lisitsynI am a bit lost :)17:06
lisitsynI don't mind reworking something but you talked about the crashing/non-working scenarios17:07
@wikingwe have couple of subsystems17:07
@wikingthat known to be error-prone17:08
@wikingright?17:08
lisitsynyeah17:08
@wikingor just straight bad design17:08
@wikingthat blocks some higher level stuff17:08
lisitsynsome of them are17:08
@wiking(see preprocessors)17:08
lisitsyntrue17:08
@wikingand their usecase in pipeline17:08
@wikingif we would have a pipeline17:08
@wikingwe all agree that we should follow17:08
@wikingoperator(Features,Labels)17:09
@wikingright?17:09
@wikingi.e. train/apply or fit/predict17:09
@wikingkind of interface17:09
@wikingfor all17:09
@wikingthis is for example17:09
@wikingabout features/preprocessor17:09
@wikingthe whole CV is error-prone17:10
lisitsynyeah true true but what exactly you want to do?17:10
@wikingsame true for the IO functionality17:10
@wikingso a) these should be our highest prio to be a descent baseline ML library - IO in this case is not sooooo important17:11
@wikingb) maybe it would be better just to have these rewritten17:11
@wikinginstead of trying to patch them constantly17:11
@wikingto keep it wokring17:11
@wikingor to amend them to our new requirements17:11
lisitsynoh but I haven't spent any time working on IO17:12
lisitsynmost of the time was spent on refactoring parameters17:12
@wikingyes17:12
@wikingand thats what i tried to say17:12
@wikingthat although in the very big picture17:12
@wikingbecause of various resasons having refactored17:12
@wikingparams is a great thing17:12
@wikingbut until basic stuff17:13
lisitsynbut don't parameters matter a lot? I think it is important17:13
@wikinglike CV17:13
@wikingor being able to have a pipeline17:13
@wikingnot available17:13
@wikingparams imo are rather 2nd class citizen17:13
@wikingin this aspect17:13
lisitsynnot sure, I see them really important for model selection17:13
lisitsynCV I agree17:14
@wikingbut model selection17:14
lisitsynwe haven't spent enough time working on CV17:14
@wikingwithout CV? :)17:14
@wikingi mean we know that CV just need a redesign17:14
@wikingas thats currently a patchpatchpatch17:14
@wikinghack17:14
@wikingnot the most optimal17:14
@wikingand sometimes just fails :D17:14
@wikingsometimes = when you start using it with some random kaggle dataset :)17:15
lisitsynsince new parameters are more or less settled17:15
lisitsynwe can fix the CV then17:15
@wikingbut17:15
@wikingfor cv17:15
@wikingwe should first17:16
@wikingget the features right, right?17:16
@wikingi mean apart from these basic thing not working17:16
lisitsyndepends17:16
@wiking(lemme paste 2 issues)17:16
@wikinghttps://github.com/shogun-toolbox/shogun/issues/417517:16
@wikinghttps://github.com/shogun-toolbox/shogun/issues/416917:17
lisitsynok that's thing to be fixed indeed17:19
@wikingand those are feature-like problems17:20
@wikingsame for stacks17:20
@wikingi.e. views of features17:20
@wikingor same about preprocessor17:20
@wikingwuwei was interested in checking into preprocessors17:20
lisitsynI am not sure this is easy fixed by redesigning everything17:20
lisitsynI mean this means rewriting quite a lot of code17:20
@wikingyes17:20
@wikingunfortunatley that is the case17:20
lisitsynI am out of time to do this17:21
@wikingyes17:21
@wikingi know17:21
@wikingmaybe we are better to have u17:21
@wikingas arch in this case17:21
@wiking?17:21
@wiking*architect17:21
lisitsynI don't know17:21
lisitsynI can give some advice17:21
@wikingand then others are filling your interface17:21
lisitsynbut not sure the best ones17:21
lisitsyn:)17:21
lisitsynwe have to try a few things I believe17:21
@wikingi mean we know already most of the shortcomings17:22
@wikingof the current features design17:22
lisitsynwiking: https://github.com/shogun-toolbox/shogun/pull/4203#discussion-diff-173634612R35417:24
lisitsyncan you comment on that issue?17:24
lisitsynI put delete[] here17:24
lisitsynbut it might be wrong17:24
@wikingyes17:24
@wikingwell17:24
lisitsynHeikoS suggested SG_FREE17:24
@wikingwe override EEVERYTHING17:24
@wiking;)17:24
lisitsynwhich sound good17:24
@wikingi mean u know in memory.h17:25
@wikingwe override new/delete17:25
@wikingetc17:25
@wikingas well as new[] and delete[]17:25
@wikingso using delete[] if its allocated17:25
@wikingwithin shogun17:25
@wikingshould be using the right libraries right delete-or :)17:26
@wikingsee for example tcmalloc, jemalloc17:26
@wikingetc17:26
@wikingso essentially17:27
@wikingdelete[] is fine17:27
@wikinglisitsyn, see what i mean17:28
@wiking?17:28
@wikingonce i've tried all 3 mallocs17:30
@wikingthey worked :)17:31
@wiking(4-5 years ago)17:31
@wikingi.e. the allocators where not mixed up17:31
@wikingallocator-free-er17:31
lisitsynwiking: yeah but it has to be new[] delete[] or malloc/free17:40
lisitsynthat's why I doubt what to put here17:40
@wikinglisitsyn, yeah18:01
@wikingbut they are all using the same free :)18:01
@wikinglisitsyn, have you checked memory.cpp18:02
@wiking?18:02
-!- ayush_IITH [~androirc@106.223.108.10] has joined #shogun19:04
-!- ayush_IITH [~androirc@106.223.108.10] has quit [Ping timeout: 264 seconds]19:31
@sukey[https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/4198 synchronized by karlnapf19:57
@sukey[https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/4203 synchronized by lisitsyn20:06
@HeikoSlisitsyn: nice20:07
lisitsynHeikoS: what is? :)20:07
@HeikoSthe updated thing20:07
lisitsynah well SG_FREE should be better20:07
@wikinglisitsyn,SG_FREE -> sg_generic_free -> delete[]20:08
@wiking:)20:08
@wiking-> free20:08
lisitsynwiking: that's fine20:08
@wikingor any other lib*alloc free20:08
lisitsynwiking: the problem is that it is going to shoot one day20:08
lisitsynI mean if somebody changes that to free20:08
@wiking?20:08
lisitsynmalloc -> free20:08
lisitsynnew[] -> delete[]20:09
lisitsynthis thing20:09
@wikingyeah but atm20:09
@wikingit's the very same20:09
lisitsynwho knows what happens20:09
lisitsyn:P20:09
@wikingyeah20:10
@wikingbut the idea is that any malloc20:10
@wikingor allocation20:10
@wikingis controlled by shogun20:10
@wikingi mean whatever you use20:10
@wikingthat should be the case20:10
@wikingand you should be able to count on that20:10
lisitsynvery good idea the best idea. should use that! sad!20:11
@wiking?20:11
* lisitsyn speaks trumpian20:11
@wiking:D20:11
@wikinganyhow you should rely on the fact20:11
@wikingthat that thing wont be broken20:11
@wikingeven if anybody switches to magic allocator20:11
lisitsynyeah with SG_FREE I am fine20:11
@wikingonly thing is that they update the memory.cpp20:11
@wikingto handle that20:12
lisitsynso we use the best allocator20:12
lisitsyn:P20:12
lisitsynvery good allocator20:12
@HeikoS:D20:18
@HeikoShttps://twitter.com/deepdrumpf?lang=en20:19
@HeikoSlisitsyn, wiking20:19
@wikingcovfefe20:19
lisitsynwiking: do they have fantastic covfefe in bg?20:20
lisitsynwe need the best one20:20
lisitsyn:P20:20
@wiking?20:21
@wiking:)20:21
-!- Farouk [81617d04@gateway/web/freenode/ip.129.97.125.4] has joined #shogun20:50
FaroukHi Everyone. I am interested in the GSOC project_data_application and have an idea in mind which I am not sure is okay. I have some experience in Reinforcement learning and especially related to gaming. For example, I've coded Neural networks to play games such as Pong, and Space Invaders from scratch in Tensorflow and Keras. I would be interested in doing something similar with Shogun, perhaps build a full jupyter notebook on how to b21:20
FaroukDoes that sound like a reasonable project?21:20
@HeikoSFarouk: sadly, there is no RF present in Shogun atm21:21
@HeikoSNeither are there serious neural networks21:21
@wikingFarouk, anything is possible but that's a lot of work as HeikoS mentioned we dont have RF but more importantly: make sure that you read about requirements for gsoc participations21:21
@HeikoShowever, we have plans to add a wrapper for say Keras21:21
@wikingHeikoS, how ? :)21:22
@wikingFarouk, meaning an important part: you need to send in PRs to the library prior to your gsoc application21:22
@wikingor the latest before we would start marking your applications21:22
@HeikoSso I can imagine a project where the first half is focussing on building an interface Keras<-> Shogun, and the second half would be to re implement some well known algorithm/project using that21:22
@wiking*application21:22
@HeikoSso doing something in these lines would be a good task to get going with the library, as wiking just mentioned21:23
@wikingHeikoS, keras is python only... so i guess in this case you are rather talking of keras generated model?21:23
@HeikoSI am referring to the discussing we had in the Budapest hackathon21:23
@wikingyeah21:24
lisitsynHeikoS: do we use it for SGObject arrays?21:24
@wikingwhich one? :)21:24
@wikingi mean we can only do shogun wise21:25
@wikingsomething like tf wrapping21:25
@HeikoSlisitsyn: sadly, yes21:25
@wikingbecause as i said keras is strictly a python lib21:25
FaroukHeikoS: I looked at the API Shogun offers and I think I can build it. When I coded it in Tensorflow and Keras, I didn't use any RL tools. I only used the Dense as well as the dropout layers with a simple 2 hidden layers Feed Forward Network and it did fairly well. Looking at Shogun API, it does offer both of these no?21:25
lisitsynHeikoS: ok I'll specialize for SGObject21:25
@HeikoSFarouk: it does21:25
@HeikoSFarouk: we could also imagine adding a few minor things to the NN parts of shogun, if that is enough for the project21:26
@HeikoSFarouk: I guess then key would be to send some patches to that, and to send a PoC for what you wanna do21:26
@HeikoSFarouk: data projects can be more independent and the generated code doesnt necessarily need to go back into Shogun, however, it would be better :)21:27
@HeikoSbut the main goal is something cool to look at, a demo, somethign interactive, etc21:27
FaroukHeikoS: Great, I wouldn't mind if the project is two parts, implementing that neural network to play several Atari games, and perhaps adding some code into the Neural Network component of Shogun21:28
@HeikoSlisitsyn: I think the case array of SG* we can ignore21:28
@wikingFarouk, note that that requires some c++ coding on your side21:28
@wikingFarouk, (for extending some parts of the NN subgroup of shogun)21:29
FaroukHeikoS: That's fine. I am fairly confident in my C++ and Python.21:29
@wikinghence i'd suggest to pick up some of these tasks21:29
@HeikoSFarouk: make sure to send some pull requests with samples then :)21:29
@HeikoSi gotta grab dinner, cu21:29
@wikinghttps://github.com/shogun-toolbox/shogun/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%2221:29
FaroukHeikoS: So just as a few action points on my part, I need to 1) Fix at least one patch in the issues on Shogun before the App deadline and 2) Pull request with my project21:30
FaroukHeiskoS: Sure, have a nice dinner :)21:30
@wikingFarouk, 1) more than one preferabluy21:30
@wiking(check that link i've pasted)21:30
FaroukSure (y). Thanks for the help everyone!21:30
@wiking2) no need for a PR for your project21:30
@wikingfor your project it'd be better to have a very detailed plan21:31
@wikingwhat are your goals21:31
@wikingand a schedule21:31
@wikingover those weeks21:31
@wikingof gsoc21:31
FaroukI see, and then apply with that plan right away on the GSOC website?21:31
@wikingFarouk, check our wiki it has all the information how to submit a successful applciation21:31
@wikingFarouk, yes21:31
FaroukSure, will do. Got lots of things to do before the deadline. Thanks! :)21:32
@wikingwe usually give feedback on possible good applications before the deadline21:32
@wikingand there's always room to improve in an application21:32
@wikingso i would suggest you to have it at least couple of days before the deadline21:32
@wiking(the application) so we could suggest you some improvements21:32
FaroukSure thing. I will get started on it now :)21:33
@wikinggreat21:33
@wikinggood luck21:33
@wikingand looking forward for your prs21:33
FaroukThanks a lot for all the help!21:33
@sukey[https://github.com/shogun-toolbox/shogun] Issue https://github.com/shogun-toolbox/shogun/issues/420021:46
-!- Farouk [81617d04@gateway/web/freenode/ip.129.97.125.4] has quit [Ping timeout: 260 seconds]21:47
@sukey[https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/4203 synchronized by lisitsyn21:50
lisitsynHeikoS: addressed the thing21:51
lisitsynobjects are free'd now21:51
lisitsynunref'ed I mean :)21:52
-!- iglesias [~iglesias@f119189.upc-f.chello.nl] has joined #shogun22:16
@wikingiglesias, hello hello22:21
@wikingbut yeah lisitsyn all in all the problem is that doing Pipeline::train should not only support a DAG imo but as well we should think how that would be done when you suppord DYNLIB22:29
@wikingmeaning when the elmenents in the pipeline are some stuff that are actually implemented as a plugin22:29
@wikingor we just say that factory will take care of it?22:29
@wikingso say22:30
@wikingauto pipeline = some<Pipleline>();22:30
@wikingpipeline.add_step(preprocessor("Standardizer"))22:30
@wikingpipeline.add_step(kernel("Gaussian"))22:30
@wikingpipeline.add_step(machine("LibSVM"))22:31
@wiking?22:31
lisitsynyeah sounds good22:31
lisitsynno?22:31
@wikingand those factories will take care of dll load?22:31
lisitsynyes22:31
@wikingmmm22:31
@wikingso when it's sequential22:32
@wikingit is obvious that somehow those thing should be 'wrappable'22:32
@wikingbut say in case of a kernel22:32
@wikingi guess you wouldn't do this22:32
@wikingbut rather22:32
@wikingauto m =machine("LibSVM")22:32
lisitsynwhat's sequential? the pipeline?22:32
@wikingm.set_kernel(machine("LibSVM"))22:32
@wikingand then do22:32
@wikingpipeline.add_step(m)22:32
@wikingor?22:32
@wikingbeucase you know22:33
lisitsynyeah kernel is rather a parameter of machine22:33
@wikingwhat would be the best22:33
@wikingis that pipeline elements22:33
@wikingare operators over (labels, features) tuple22:33
@wikingright?22:33
@wikingso that you dont have to actually write a super crazy logic22:33
@wikingof how to connect different steps22:33
lisitsynsometimes I wonder if they should be the whole entity22:33
@wiking?22:34
iglesiaswiking: hola hola!22:34
lisitsynfeatures + labels22:34
@wikingah you mean as something like22:34
@wikingDataSet22:34
lisitsynwiking: yeah list<Example> where Example = Features + Label22:34
@wikingand then some elements22:35
lisitsynbecause it is sort of fragile what people do now22:35
@wikingjust ignore some parts of the datset22:35
lisitsynthey split the features and labels and rely on indices22:35
@wikingsay preprocessors mostly work over features22:35
lisitsynyeah but they can also use labels22:35
@wikingbut then machines always take the tuple etc22:36
@wikingyeah i mean that could be an option22:36
@wikingto have a dataset object22:36
lisitsynDataset = Collection<Example>22:36
@wikingyeah22:37
@wikingexample = datapooint22:37
@wiking*datapoint22:37
@wiking:)22:37
lisitsyn+ Optional<Label>22:37
@wikingbut yeah these are just semantics22:37
@wikingand i mean22:37
@wikingeven having it for test set22:37
@wikingis good22:37
@wikingbecause then in all the metrics shit22:37
@wikingyou have it there22:38
@wikingnot only the features but the labels22:38
@wikingon the other hand you shouldnt care about the features22:38
@wikingwhen you do metrics22:38
@wiking:P22:38
lisitsynwiking: I like the terminology from http://martin.zinkevich.org/rules_of_ml/rules_of_ml.pdf22:38
lisitsynI think good design would push these notions22:38
@wikingyeah sure22:38
@wikingi mean i really dont care about the semantics22:39
@wiking:)22:39
@wikingit could be even KQW and MLQ22:39
@wiking:D22:39
lisitsynyeah but it helps to make some decisions :)22:39
lisitsynKGB?22:39
@wikingyeah22:39
@wikingfsb22:39
@wiking:)22:39
@wikingwhatever22:39
@wikingi am a bit ambivalent regardint the collection<example>22:40
@wikingbut my objection is not so strong22:40
@wikingbut yeah we need oeprators over that22:40
@wikinginstead of this weird22:40
@wikingmix that we have atm22:40
@wikingah and my favouriout on top22:41
@wikingis CDistance22:41
@wiking:D22:41
@wikingno22:41
@wikingCDistribution22:41
@wiking:D22:41
lisitsynwhy?22:42
@wikingit doesnt follow anything22:42
@wiking:D22:42
lisitsynit could be a part of graphical model22:42
@wikingyea anything22:43
@wikingjust to have it covered by a standard api22:43
@wiking:)22:43
@wikingmeaming train/apply22:44
@wiking:)22:44
@wiking*meaning'22:44
lisitsynwe had some discussion about that22:45
lisitsynI don't remember exactly22:45
lisitsynbut we had some good idea22:45
lisitsynah22:45
lisitsynDistribution is something that is both machine and something22:46
@wikingyeah22:54
@wikinganyhow22:54
@wikingit could train22:54
@wiking:D22:54
@wikingand it can apply22:54
@sukey[https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/4196 synchronized by syashakash22:59
--- Log closed Tue Mar 13 00:00:39 2018

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