Open in new window / Try shogun cloud
--- Log opened Tue May 30 00:00:51 2017
-!- sonney2k_ [] has quit [Ping timeout: 240 seconds]05:57
-!- sonney2k [] has joined #shogun05:57
-!- geektoni [] has joined #shogun08:44
mikelingwiking: ping08:50
mikelinglisitsyn: ping08:53
mikelingwiking: hi, the SG_REF is about to count how many references been pointed to this object?09:00
mikelingfor example
mikelingafter we use std::map to instead of shogun::CMap, is that mean we could just remove those SG_REF and SG_UNREF?09:01
mikelingor we want to use shared_ptr?09:01
@wikingthat's a good question09:03
@wikingi mean DynArray had no such thing09:03
@wikingbut DynamicObjectArray does09:03
@wikingmikeling, Clist is the same right?09:04
@wikingi.e. it ++ the ref coutner09:04
mikelinghmmm, I haven't check that09:04
mikelingbut CMap does09:04
mikelingbecause I'm working on it09:05
@wikingso the thing is then09:05
@wikingwe cannot do this change09:05
@wikinguntil we dont have autoref counter09:05
@wikinglike shared_ptr09:05
mikelingalright, so I won't touch anyplace related to SG_REF09:06
mikelingor SG_UNREF09:06
mikelinguntil this summer :)09:06
@wikingok yeah once we are done with the transition09:06
geektoniwiking: can we add a new branch to Shogun repository called 'feature/progress'? So that I can make pull requests directly against it instead of 'develop'.09:38
@wikingsure thig09:38
@wikinglemme do it09:38
geektonithanks :D09:39
@sukeyNew Commit "Merge pull request #3810 from MikeLing/kernel_machine_clean_up09:39
@sukeyPort kernelMachine to openmp" to shogun-toolbox/shogun by vigsterkr:
@sukeyNew branch feature/progress created on shogun-toolbox/shogun09:39
@sukeyPull Request #3745 "Add PRange class to replace old SG_PROGRESS (WIP)" -
@sukeyPull Request #3824 "Replace DynArray with std::vector for io module"  synchronized by MikeLing -
-!- travis-ci [] has joined #shogun10:35
travis-ciit's Viktor Gal's turn to pay the next round of drinks for the massacre he caused in shogun-toolbox/shogun:
-!- travis-ci [] has left #shogun []10:35
-!- TingMiao [uid229534@gateway/web/] has joined #shogun11:01
@wikingmikeling, micmn TingMiao geektoni olinguyen daily updates :) (so far i've got it from micmn geektoni)11:10
mikelingsure, I will do it ASAP :)11:11
mikelingwiking: what's the granularity for DynArray?11:28
@wikingwhat sense?11:29
mikelingwiking: here
mikelingthe granularity11:29
-!- Netsplit *.net <-> *.split quits: mikeling11:30
-!- Netsplit *.net <-> *.split quits: lisitsyn, ironstark, @besser82, tctara_, olinguyen, TingMiao, sonney2k, gideonite, CaBa, micmn11:30
-!- Netsplit *.net <-> *.split quits: geektoni, @wiking, Saurabh7_11:30
-!- Netsplit *.net <-> *.split quits: @ChanServ, @sukey, rcurtin11:30
-!- iglesiasg [~iglesiasg@] has joined #shogun12:16
-!- Netsplit over, joins: TingMiao, geektoni, sonney2k, olinguyen, @besser82, mikeling, micmn, CaBa, tctara_, @sukey (+4 more)12:16
-!- ServerMode/#shogun [+oooo iglesiasg besser82 sukey wiking] by verne.freenode.net12:16
-!- Netsplit over, joins: ironstark, lisitsyn, @ChanServ12:16
@iglesiasgshogun-buildbot shogun-toolbox shogitter1 welcome guys12:37
@wikingshogun-buildbot: dance13:23
@iglesiasgshogun-buildbot: it makes me happy to see you happy14:12
geektoniwiking: ping15:12
geektonihey, do you remember the discussion about adding a boolean flag to the progress?15:12
geektoniI run into a small problem.15:13
@wikingtell me15:13
@wikingyes i remembe15:13
geektonithis boolean flag should be evaluated each time we increment the iterator15:13
geektoniif a do something like this progress(range(1, 10), io, i<30)15:14
geektonithe predicate i<30 is evaluated and I will only receive the evaluated value15:14
geektoniso, how can I pass a predicate as a parameter of a function?15:15
geektoniis that possible using C++?15:15
@sukeyPull Request #3824 "Replace DynArray with std::vector for io module"  synchronized by MikeLing -
geektoniwiking: I mean, we could simply write:  for (auto i=progress(...).begin(); i != progress(...).end() && condition; i++)15:26
geektonibut it is less concise15:27
@wikingthe thing is that the predicate in a way should be a function ptr :P15:28
@wikingi.e. std::function15:28
geektoniso, when I need to add a condition to a loop I also need to write manually the function I have to use?15:30
@wikingyeah like a lambda? :)15:30
@wikingi mean it's not such a bad thing that you expect there a lambda expression, or?15:30
@wikingso you expect there a function that returns a bool15:31
geektoniyeah exactly15:31
@wikingand has vararg function args ;p15:31
@wikingso that you can stuff any number of argument into the predicate15:32
geektonimmh what about these guys -->
@wikinggeektoni, operator class?15:32
geektonino no, apparently inside stl there is already a library which gives you all the function object to perform simple logical operations15:33
@wikingbut i mean what if you want some custom predicate15:34
@wikingi mean something that not only depends on the i (the range variable)15:35
@wikingbut some other external things15:35
geektonimmh yeah sure.15:35
@wikinglike: bool earlyStop15:35
@wikingprogress(range(1, 10), io, [](bool) { /* complex predicate */ } )15:36
geektonithat's a way to do it15:36
geektonibut I don't like it very much15:36
@iglesiasggeektoni: why not?15:36
geektoni"aesthetic reasons". I prefer to have methods which don't require lambdas.15:37
geektoniI mean15:38
geektoniif there is no other way15:38
geektoniI'm fine with it15:38
@wikingbtw i was wrong it should be progress(range(1, 10), io, []() -> bool { /* complex predicate */ } )15:38
@wikingi mean this way it can be compact15:38
@iglesiasgI think using a lambda would be a way of using progress15:38
@wikingof course if your predicate is more complicated15:38
@iglesiasgbut it could also be done with std::bind and std::function15:38
@wikingyou can put that out into a function15:38
@iglesiasgas wiking said before15:39
@iglesiasgso, I think it wouldn't really be like progress requires a lambda15:39
@wikingon the other hand15:39
@wikingwould this be the usual case?15:39
@iglesiasgbut rather that it can be used with a lambda (or with std::function/bind)15:39
@wikingto have some custom predicate?15:40
@wikingi mean i understand it's not the nicest15:40
@wikingalthough the lambda part i actually like15:40
@wikingquestion is that whether this is the common way to use progress?15:40
@wikingor rather the corner case?15:40
geektoniI would say it is a corner case15:41
@wikingbecause yeah i like smooth apis as well15:42
@wikingbut i reckon if it's not the general usecase15:42
@wikinghaving the above should be fine :P15:42
@wikingi know15:42
@wikingi will regret this sentence15:42
@wikingin like 1 year time15:42
@wikingbut if we dont have a better ide15:42
@wikingthen i would say lets go with this? :P15:42
@wikingi mean i dont have a crystal ball15:43
@wikingand i'm not james gosling nor dennis ritchie15:44
@wikingso i cannot come up with a nice api atm :P15:44
geektoniok then, std::function/lambdas approved!15:44
@wikinghehe cool15:45
@wikingbut i mean if you have a nicer smoother way15:45
@wikingi'm all ears :)15:45
geektoniI don't think there is a smoother way :P15:46
geektoniI will use the less troublesome15:46
geektonibtw wiking, could you restart Travis on this one ?15:48
geektonithanks :D15:49
@wikinglemme try15:50
mikelingwiking: why the default granularity is 128?16:36
-!- leagoetz [] has joined #shogun16:40
mikelingso if I use resize_array(5), I'm actually create a array with 138 length?16:43
mikelinglisitsyn: ping16:45
-!- iglesiasg [~iglesiasg@] has quit [Quit: leaving]16:46
@wikingmikeling, lisitsyn is on holiday16:58
@wikingmikeling, nono... but you shouldn't care about this16:58
@wikingas this is solved within std::vector16:58
@wikingresize_array(5) -> create a memory of 128 items16:58
@wikingbut if you have resize_array(129) then it's 25616:58
@wikingbecause that's the granurality16:59
@wikingand there's a variable that is maintained that basically takes care of how many actual elements are being stored in the DynArray16:59
mikelingwiking: mmm, so I just ignore the places have set_granularity() or so?16:59
mikelingdue to we are going to use std::vector17:00
mikelinggot it17:00
geektoniwiking: ok, I've reached this result
geektoniDo you think we have to give the possibility to supply also lambdas with parameters? (e.g [](int & a) {/**/} )17:12
geektonior we can live on only with lambda's capture list?17:13
-!- wang [uid231047@gateway/web/] has joined #shogun17:47
-!- wang is now known as Guest2939917:48
-!- Guest29399 is now known as WangWang17:48
@wikinggeektoni, mmm17:50
@wikinggeektoni, yeah that's why i thought that the arg of the function should be vararg17:50
@wikingthis way there's no limitation for what you can pass to the function17:51
geektonimmh ok17:51
@wikingif you use lambda17:51
@wikingthen of course you have all the [] params as well17:51
geektonicurrently I'm using std::function to specify the function type we want17:52
geektonifor example progress(.... std::function<bool()> condition)17:52
-!- thebishop [~thebishop@2603:301d:b05:e400:842:e126:4b40:7f4] has joined #shogun18:22
-!- thebishop [~thebishop@2603:301d:b05:e400:842:e126:4b40:7f4] has quit [Read error: Connection reset by peer]18:26
-!- leagoetz [] has quit []18:49
-!- gideonite [] has quit [Ping timeout: 240 seconds]19:52
-!- gideonite [] has joined #shogun19:53
olinguyenwiking: I started a week earlier so I have a blog post up now: I fixed some editing, and fixed a bug I was having with random forests. Today, I'll look into a bug with crossvalidation, start on a patch for making random forest more explicit when crashing because of null values20:16
-!- geektoni [] has left #shogun []20:21
-!- mikeling [uid89706@gateway/web/] has quit [Quit: Connection closed for inactivity]20:31
-!- geektoni [] has joined #shogun20:39
-!- geektoni [] has left #shogun []20:48
--- Log closed Wed May 31 00:00:53 2017