IRC logs of #shogun for Thursday, 2018-01-25

--- Log opened Thu Jan 25 00:00:34 2018
-!- HeikoS [~heiko@host86-129-231-92.range86-129.btcentralplus.com] has joined #shogun00:30
-!- mode/#shogun [+o HeikoS] by ChanServ00:30
@HeikoSlisitsyn: around?00:36
@sukey[https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/4116 synchronized by guruhegde00:39
-!- HeikoS [~heiko@host86-129-231-92.range86-129.btcentralplus.com] has quit [Ping timeout: 248 seconds]00:42
@sukey[https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/4119 opened by guruhegde01:50
-shogun-buildbot:#shogun- Build nightly_all #80 is complete: Failure [failed test (failure)] - http://buildbot.shogun-toolbox.org:8080/#builders/22/builds/8007:41
-!- sonne|work [~sonnenbu@business-90-187-45-1.pool2.vodafone-ip.de] has joined #shogun09:10
sonne|workwiking: just wondering - did anyone attempt to compile shogun - gpl recently?09:11
sonne|workand I see a compile failure when compiling python modular in the generated swig file: %feature("docstring") shogun::extract_value_type< X< T, Args... > > "09:15
sonne|work// File: structshogun_1_1extract__value__type_3_01X_3_01T_00_01Args_8_8_8_01_4_01_4.xml09:15
sonne|work./src/interfaces/python/shogun_doxygen.i  line 7163609:15
@wikingsonne|work, the doxygen thing is a problem09:59
@wikingheiko broke it :)09:59
sonne|workwiking: of course :)10:04
sonne|workwiking: I got shogun to compile after (2 days of trying :/)10:04
sonne|workbut not the GPL'd variant10:04
sonne|workthat is still broken10:04
sonne|worklet me try whether I can still train a simple svm o_O10:04
@wikingsonne|work, ahahaha10:07
@wikingsonne|work, if you disable doxygen10:07
@wikingit should work w/o problems10:07
sonne|workwho said that I don't need docs :-D10:07
@wikinghahaha10:08
@wikingshogun.ml/api10:08
sonne|worksrc/shogun/io/Serializable.h10:08
sonne|workline 5010:08
@wikingyeah10:08
sonne|workshould we just add some ifdef there to ignore doxygen10:08
@wikingi guess it's the c++11 magic10:08
sonne|workI forgot the name of the macro10:08
sonne|workyeah >>10:09
sonne|work> >10:09
sonne|workwhatever c++17 magic that is..10:09
@wikingafaik10:09
@wikingwe can disable the whole class10:09
sonne|work#ifndef DOXYGEN_SHOULD_SKIP_THIS10:10
sonne|work#endif10:10
sonne|workright?10:10
@wikingyes10:10
sonne|worklet me try..10:12
sonne|workbtw the GPL'd shogun doesn't compile at all10:12
sonne|workwith svmlight pr_loqo issues etc10:12
@wikingsonne|work, git submodule update --init ?10:13
@wikingthese are all http://buildbot.shogun-toolbox.org:8080/#/console gpl compiled10:13
@wikingonly the nightly bsd build is build w/o the gpl part10:14
sonne|workweird then10:18
sonne|workI guess I did sth wrong10:18
sonne|workall I have to do is checkout the code10:18
@wikingand the submodules10:18
sonne|workand then git submodule update --init right?10:18
@wikingyes10:18
sonne|workmaybe I did sth wrong in the last step10:19
@wikingdo u wanna send in the patch or shall i ?10:19
sonne|workstill compiling...10:28
shogitter(syashakash) Sorry to bother you people here. I wanted to start contributing to this repo and for that I followed the instructions in [install page](http://www.shogun-toolbox.org/install). I am trying to manually install shogun but on running the command:   `git submodule update --init` throws the error:10:36
shogitter(syashakash)  fatal: unable to connect to github.com:10:36
shogitter(syashakash) github.com: Temporary failure in name resolution10:36
shogitter(syashakash) [full message: https://gitter.im/shogun-toolbox/shogun?at=5a69a4fb517037a212f0071d]10:36
@wikingsonneseems working10:36
@wikingsonne|work, works for me10:36
@sukey[https://github.com/shogun-toolbox/shogun] New commit https://github.com/shogun-toolbox/shogun/commit/b4e9249003d1ba1320ec726b9e133489b46833da by sonney2k10:36
sonne|workyes compiled now10:36
@wikinggood thnx10:36
sonne|workwiking: sounds like you have the bigger balls :P10:36
@wiking:D10:37
sonne|work64 cores?10:37
-!- HeikoS [~heiko@host86-129-231-92.range86-129.btcentralplus.com] has joined #shogun10:54
-!- mode/#shogun [+o HeikoS] by ChanServ10:54
@HeikoSlisitsyn: jojojo10:54
@wikingsonne|work, only hedonismbot11:09
@wiking:)11:09
-shogun-buildbot:#shogun- Build deb4 - python3 #282 is complete: Success [build successful] - http://buildbot.shogun-toolbox.org:8080/#builders/28/builds/28211:18
-!- gp1308 [~gp@ip4d15fa06.dynamic.kabel-deutschland.de] has joined #shogun11:31
-!- travis-ci [~travis-ci@ec2-54-197-187-233.compute-1.amazonaws.com] has joined #shogun11:35
travis-ciit's Soeren Sonnenburg'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/33318518611:35
-!- travis-ci [~travis-ci@ec2-54-197-187-233.compute-1.amazonaws.com] has left #shogun []11:35
sonne|workwiking: :)11:37
sonne|workwiking: http://www.shogun-toolbox.org/examples/latest/search.html?q=GaussianKernel&check_keywords=yes&area=default11:37
sonne|worksearch broken?11:38
sonne|workor is this again only me??!11:38
@HeikoSgp1308: cool stuff, how are things going with it?11:38
@HeikoSsonne|work: it is broken11:39
@HeikoSgood catch11:39
@HeikoSgp1308: any major problems?11:40
gp1308I did rebase against develop. I still see some changes from #411411:40
gp1308I guess messed with git at some point.11:41
@HeikoSgp1308: you can always git reset, and then re-do your commits (make sure to do a soft reset and make sure to backup your work if you dont know what youre doing)11:43
gp1308Apart from that, everything is good. I will do that.11:44
@HeikoScool11:44
@HeikoSlooking forward to see the thing11:44
@sukey[https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/4119 merged by karlnapf11:49
@sukey[https://github.com/shogun-toolbox/shogun] karlnapf pushed 2 commits:11:49
@sukeyhttps://github.com/shogun-toolbox/shogun/commit/aece52a511204e6e91f063d1b18c883555e9ae7c11:49
@sukeyhttps://github.com/shogun-toolbox/shogun/commit/dbda8616e5346b0c13b31a6330ccb1d38924459111:49
@sukey[https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/411911:50
@sukey[https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/411911:50
@sukey[https://github.com/shogun-toolbox/shogun] Issue https://github.com/shogun-toolbox/shogun/issues/404311:58
-!- travis-ci [~travis-ci@ec2-54-224-111-228.compute-1.amazonaws.com] has joined #shogun12:01
travis-ciit's Soeren Sonnenburg'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/33318518612:01
-!- travis-ci [~travis-ci@ec2-54-224-111-228.compute-1.amazonaws.com] has left #shogun []12:01
-shogun-buildbot:#shogun- Build deb3 - interfaces #220 is complete: Success [build successful] - http://buildbot.shogun-toolbox.org:8080/#builders/37/builds/22012:03
sonne|worksigh I totally forgot how to enable the progress bar o_O12:05
@HeikoSsonne|work: there is new ways now12:06
sonne|workI want to see the new one!12:06
@HeikoSlet me dig it out12:07
@HeikoScheck PRange_unittest.cc12:07
@HeikoS./bin/shogun-unit-test --gtest_filter=PRange.progress_correct_bounds_positive12:08
sonne|workno I mean from python12:08
sonne|workis there a static sg_io obj still?12:08
-!- syashakash [7c7c2a57@gateway/web/freenode/ip.124.124.42.87] has joined #shogun12:10
-!- syashakash [7c7c2a57@gateway/web/freenode/ip.124.124.42.87] has left #shogun []12:11
sonne|workHeikoS: found it: svm.io.enable_progress()12:12
sonne|workneat :)12:12
-!- travis-ci [~travis-ci@ec2-54-197-187-233.compute-1.amazonaws.com] has joined #shogun12:23
travis-ciit's Heiko Strathmann'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/33321018112:23
-!- travis-ci [~travis-ci@ec2-54-197-187-233.compute-1.amazonaws.com] has left #shogun []12:23
gp1308HeikoS: I did rebase and resolved conflict with #4119. I run style check script now. I get style error for code in io/Serializable.h(which i didn't touch)12:25
gp1308Should i apply style fix?? please guide.12:25
-!- travis-ci [~travis-ci@ec2-54-197-145-119.compute-1.amazonaws.com] has joined #shogun12:52
travis-ciit's Heiko Strathmann'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/33321018112:52
-!- travis-ci [~travis-ci@ec2-54-197-145-119.compute-1.amazonaws.com] has left #shogun []12:52
@HeikoSgp1308: checking ..13:09
@HeikoSgp1308: only correct style for changes you made / files you touched13:11
-!- HeikoS [~heiko@host86-129-231-92.range86-129.btcentralplus.com] has quit [Ping timeout: 264 seconds]13:16
-!- gp1308 [~gp@ip4d15fa06.dynamic.kabel-deutschland.de] has quit [Quit: Lost terminal]13:29
-!- gp [~gp@ip4d15fa06.dynamic.kabel-deutschland.de] has quit [Ping timeout: 240 seconds]13:45
-!- gp [~gp@ip4d15fa06.dynamic.kabel-deutschland.de] has joined #shogun13:57
@sukey[https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/4116 synchronized by guruhegde14:06
Trixiswiking: #3612 - is my analysis correct that all this needs is to make combined kernel be able to handle subsetting of customkernels?14:18
Trixis( i need that feature, and that seems simpler than getting the director kernels to work with x-validation, so i might as well resolve that)14:22
-!- sonne|work [~sonnenbu@business-90-187-45-1.pool2.vodafone-ip.de] has quit [Quit: Leaving.]14:46
-!- sonne|work [~sonnenbu@business-90-187-45-1.pool2.vodafone-ip.de] has joined #shogun14:47
-!- sonne|work [~sonnenbu@business-90-187-45-1.pool2.vodafone-ip.de] has quit [Client Quit]14:52
-!- sonne|work [~sonnenbu@business-90-187-45-1.pool2.vodafone-ip.de] has joined #shogun14:52
-!- HeikoS [~heiko@untrust-out.swc.ucl.ac.uk] has joined #shogun14:52
-!- mode/#shogun [+o HeikoS] by ChanServ14:52
@sukey[https://github.com/shogun-toolbox/shogun] Issue https://github.com/shogun-toolbox/shogun/issues/4111 closed by karlnapf14:59
@sukey[https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/4116 merged by karlnapf15:01
@sukey[https://github.com/shogun-toolbox/shogun] karlnapf pushed 2 commits:15:01
@sukeyhttps://github.com/shogun-toolbox/shogun/commit/4e3377c48e702849d8fbccb4b7f8ae51f8f6233d15:01
@sukeyhttps://github.com/shogun-toolbox/shogun/commit/b24546c32cbcbea8292776c68801f660664175cc15:01
@sukey[https://github.com/shogun-toolbox/shogun] Issue https://github.com/shogun-toolbox/shogun/issues/4101 closed by karlnapf15:04
-!- iglesias [6cab81bc@gateway/web/freenode/ip.108.171.129.188] has joined #shogun15:09
@HeikoSiglesias: jojojo15:18
-!- iglesias [6cab81bc@gateway/web/freenode/ip.108.171.129.188] has quit [Ping timeout: 260 seconds]15:18
-!- davidite [8ca3fe9e@gateway/web/freenode/ip.140.163.254.158] has joined #shogun15:29
TrixisHeikoS: actually, same question as for wiking.15:50
@HeikoSsure15:50
TrixisHeikoS: ive been trying to find a work around for the issue with director kernel and x-validation. tried using custom kernels. found issue #3612. looked into it. Combined kernel simply skips the init of custom kernels all together. Is my assumption that simply making it subset the kernel matrix would be correct?15:52
@HeikoSTrixis: I dont know that of the top of my head, would have to read code15:52
@HeikoSbut do you have that minimal example you talked about?15:52
@HeikoSbecause then it will be much easier to see what is going on15:52
@HeikoSbut what you say sounds reasonable15:53
TrixisHeikoS: im about to look into the working example rn15:53
Trixisjust got back from lectures15:53
@HeikoSok16:02
@HeikoSTrixis: I think a good idea would be to start simple, and then slowly ramp up the complexity16:02
@HeikoSi.e. first try xvalidation16:02
@HeikoSthen put a custom kernel in16:02
@HeikoSthen the director kernel16:02
@HeikoSand somewhere in between the mkl16:03
TrixisHeikoS: oh i meant using custom kernel as work around to the director kernel issue16:03
Trixisseparate issues16:03
Trixis(that workaround is prevented by issue no. 3612)16:03
Trixisdamn shogun cloud doesnt have director kernels16:03
-!- travis-ci [~travis-ci@ec2-54-224-111-228.compute-1.amazonaws.com] has joined #shogun16:04
travis-ciit's Heiko Strathmann'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/33327543516:04
-!- travis-ci [~travis-ci@ec2-54-224-111-228.compute-1.amazonaws.com] has left #shogun []16:04
-!- davidite [8ca3fe9e@gateway/web/freenode/ip.140.163.254.158] has quit [Ping timeout: 260 seconds]16:04
@wikingargh16:15
@wikingNo other guarantees are given: type_info objects referring to different types may have the same hash_code (although the standard recommends that implementations avoid this as much as possible), and hash_code for the same type can change between invocations of the same program.16:15
@wikingHeikoS, ping?16:22
@HeikoSjo16:22
@wikingwhat's your line of thought about TSGDataType ?16:22
@wikingin the long run16:23
@wikingyou wanna kill that?16:23
@HeikoSyep16:23
@HeikoSpretty soon16:23
@wikingmmmhmm16:23
@HeikoSnot all of it though16:23
@wikingalong with EPrimitiveType EStructType EContainerType16:23
@wiking?16:23
@HeikoSthe struct itself can soon go16:23
@HeikoSthe primitive type needs some more work to be deleted16:24
@wikingok16:24
@wikingso no16:24
@wiking:)16:24
@wikingif we delete any of those16:24
@wikingwe cannot serialize16:24
@wiking:)16:24
@HeikoSno you can't16:24
@HeikoSeverything breaks16:24
@HeikoScan't even instantiate empty objects anymore16:24
@wikingyeye i mean16:24
@wikingeven if you remove16:24
@wikingparameters16:24
@wikingetc16:24
@HeikoSbut I am on it16:24
@wikingnono what i mean16:24
@wikingif u wanna remove that16:24
@wikingwe wont be able to serialize16:24
@wikingwe need an enum/struct16:25
@wikingto represent types16:25
@HeikoSyes, we do. but I think we can figure that out later16:26
@wiking?16:26
@wikingno16:26
@wikingi mean i'm currenlty workingn on this16:26
@wikinglater is not an option for me16:26
@wikingas i wanna finish up with this16:26
@wikingso what i mean is that i can drop 90% of code in Paramter.cpp16:27
@HeikoSnot yet16:27
@wiking?16:27
@HeikoSonly the save/load stuff (if you have replacement)16:28
@HeikoSnot the add_* stuff16:28
@wikingi meant the add16:28
@wikingi can drop most of it16:28
@HeikoSnope can't do that yet16:28
@wikingand replace it with something else16:28
@wikingyes i can16:28
@wikingthose lines could be simply replaced with some template hacks16:28
@wikingbut that's not the point16:29
@HeikoSmany things depend on it that are not yet working16:29
@wikingno you dont get it16:29
@wikingi meant that i can drop most of those copy-paste code16:29
@wikingand replace it with some16:29
@wikingtemplate hacks16:29
@wikingbut still16:29
@HeikoSi wouldnt bother16:29
@wikingon the end of the day16:29
@HeikoSsince the code can be deleted completely16:29
@wikingwe need the enums16:29
@HeikoSbut not yet16:29
@wikingyeah but the problem is16:29
@wikingthat for serialization16:29
@wikingyou cannot drop it completely16:29
@wikingthat's what i'm trying to say16:30
@wikingbasically the problem is that no matter what we do with the Parameters.cpp16:31
@wikingand et.all16:31
@wikingfor Any we need to be able to store16:31
@wikingthe exact type info16:31
@wikingthat TSGDataType stores16:31
@wikingi mean for writing out (serializing) is actually not a big deal... the problem starts when you wanna deserialize the stuff16:32
@wikingfor deserialization you need to be able to read that what you wanna deserialize....16:32
@wikinginto the any16:32
@HeikoSwell16:32
@wikingfor that you need to somehow store whether that is a primitive type etc16:32
@wikingbasically the whole story of TSGDataType16:33
@HeikoSthe object that you load into knows its parameters16:33
@HeikoSit knows the type16:33
@wikingfrom?16:33
@wiking:)16:33
@HeikoSfrom its constructors tag registrations16:33
@wikingno16:33
@wikingit doesnt16:33
@wiking:)16:33
@wikingand even if you would know16:33
@wikingyou would still need to store this16:33
@wikingin the file16:33
@wikingthere's no way around16:34
@wiking what you are saying would just shift around16:34
@wikingthe same logic16:34
@wikingwhat i've described16:34
@wikinghttps://pastebin.com/q6aNWynv16:35
@wikingjust an example how SGObject's serialization would work16:35
-!- travis-ci [~travis-ci@ec2-54-197-187-233.compute-1.amazonaws.com] has joined #shogun16:36
travis-ciit's Heiko Strathmann'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/33327543516:36
-!- travis-ci [~travis-ci@ec2-54-197-187-233.compute-1.amazonaws.com] has left #shogun []16:36
Trixisthere we go16:39
-!- HeikoS [~heiko@untrust-out.swc.ucl.ac.uk] has quit [Ping timeout: 240 seconds]16:40
-!- HeikoS [~heiko@eduroam-int-pat-8-164.ucl.ac.uk] has joined #shogun16:55
-!- mode/#shogun [+o HeikoS] by ChanServ16:55
@sukey[https://github.com/shogun-toolbox/shogun] Issue https://github.com/shogun-toolbox/shogun/issues/4120 opened by dhelekal16:59
Trixisthere goes16:59
TrixisHeikoS: let me know if that needs more details17:08
Trixisat least when i minimised the example it prints an error instead of segfaulting in a weird way17:08
Trixiswiking: ping me when you're around, im thinking of a few ways to deal with the crossvalidation / customkernel issue, i'd like to discuss which one you think is the best.17:27
Trixisthx17:27
@wikingTrixis, just getting dinner17:46
@wiking20m17:46
-!- HeikoS [~heiko@eduroam-int-pat-8-164.ucl.ac.uk] has quit [Ping timeout: 264 seconds]17:48
-!- HeikoS [~heiko@untrust-out.swc.ucl.ac.uk] has joined #shogun18:01
-!- mode/#shogun [+o HeikoS] by ChanServ18:01
@HeikoSwiking: i got disconnected, you saw my msgs above? 16:52?18:02
@wikingmmmm18:05
@wikingHeikoS, no18:05
@HeikoS(16:45:29) Heiko: wiking: why would you use "create_parameter" to load?18:05
@HeikoS(16:45:53) Heiko: as opposed to creating an empty instance (which has all tags registered), and then iterating through them and loading from the archive=?18:05
@HeikoS(16:46:57) Heiko: Trixis: should be ok18:05
@HeikoS(16:47:05) Heiko: Ill have a look a bit later, thx18:05
@HeikoS(16:52:29) Heiko: wiking: if you do it this way, of course you need to store the type information of the parameters18:05
@HeikoS(16:53:03) Heiko: but if you rely on the registered parameters, you don't18:05
@HeikoS(16:53:15) Heiko: clone = create_object(name, ...)18:05
@HeikoS(16:53:40) Heiko: for tag in clone.get_tags()18:05
@HeikoS(16:53:40) Heiko:   load_from_thing(tag)18:05
@wikingHeikoS, i saw messages from you  till18:05
@wiking[16:33]  <HeikoS> from its constructors tag registrations18:05
@HeikoSwiking: pasted18:06
@wikingno matter where you shift the object tie18:07
@wiking*type18:07
@wikingon the end of it18:07
@wikingyou need to be able to serialize it's actual type18:07
@wikingof that tag18:08
@wikingor value18:08
@wikingdepending where you wanna store the type info18:08
TrixisHeikoS: kk18:09
@HeikoSwiking: I guess I was talking about the most extreme case of just fixing the save/load order of things. But nevermind18:13
@HeikoSthe "create_parameter" thing I am unsure about18:13
@HeikoSbut ill leave it to you, I dont have my head in the stuff right now18:13
@wikingi mean if you say that you wanna unload the value type into tag that is fine18:13
@wikingbut still you need to be able to encode that18:14
@wikingsomehow18:14
@wikingas otherwise you dont know what you should be loading 'next'18:14
@HeikoSare these archives sequential?18:14
@wikinge.g. an sgvector/matrix, primitive or sgobj18:14
@HeikoSor container based?18:15
@HeikoSlike, is it a bytestream?18:15
@wikingi'm not so sure if i understand this question18:15
@HeikoSwiking: nevermind18:15
@HeikoSI guess we want to implement a serialization for the type information that the parameter map has18:15
@HeikoSso need to have runtype encoding18:15
@HeikoSas you said18:16
@HeikoSthe current serialization also does that18:16
@wikingi mean on the end of the day when you deserialize something18:16
@wikingyou need to know what you are reading18:16
@HeikoSit stores first the type as a string18:16
@HeikoSand then its size parameters18:16
@HeikoSand only then content18:16
@wikingyes18:16
@HeikoSbut the thing is18:16
@wikingi mean this is inevitable18:16
@HeikoSin the current format, you can change the order of the records in the file18:16
@wikingi mean the size and stuff18:16
@wikingcan be encapsulated18:16
@HeikoSif you fix the order of storage18:16
@HeikoSyou actually exactly know how to interpret it18:16
@HeikoSsince you know what parameters you had and how they were saved18:17
@HeikoSbut then the storage needs to be sequential18:17
@wikingbut even then18:17
@wikingyou need to be able to save18:17
@wikingwhat was the order18:17
@wikingand what was those types18:17
@HeikoSwell the tags map has it18:17
@wikingprimitive, primitive, sgobject, sgvector, primitive18:17
@HeikoSyou have the empty instance, which has the same tags map as the object your stored18:17
@wikingyou need to write this into the file18:17
@HeikoSloading works like this18:17
@wikingsomehow18:18
@wikingi mean encode it18:18
@HeikoS1. load class name18:18
@HeikoS2. create emtpy instance18:18
@HeikoS3. iterate over parameter map and load one by one18:18
@HeikoSand saving has to be the the same order as loading18:18
@wikingyeah i mean this is clear18:18
@HeikoSbut since you have the tags map18:18
@wikingyou are talking about CSGobject::Self::map right?18:19
@HeikoSyep18:19
@wikingok so how do you serialize that18:19
@wikingbasetag + any18:19
@HeikoSyou don't, just the content18:19
@wikingwell just the content = serialize18:19
@HeikoSmy point is you have it when you load18:19
@HeikoSyou have the populated map18:20
@HeikoSwith all type infos18:20
@wikingHeikoS, from whom?18:20
@HeikoSsince you have an empty instance18:20
@wikingby what?18:20
@HeikoScreate_object()18:20
@wikingyou have the mapy18:20
@wikingmap18:20
@wikingbut it's empty18:20
@HeikoSno18:20
@HeikoSconstructor registers parameters18:20
@HeikoSmmmh18:21
@wikingyour assumption is that actually then the actual name is18:21
@wikingserialized18:21
@wikingand that 'name' is being used18:21
@wikingto deserialize things18:21
@HeikoSyep that was my thinking18:21
@wikingi mean construct the empty instance18:21
@HeikoSbut now let me think whether that is true18:21
@HeikoSthis is how the old thing works iirc18:21
@wikingnoup18:21
@HeikoSbut on top, it also stores type info18:21
@wikingold thing works that things are serialized18:21
@wikingwith type18:21
@wikinginfo18:21
@wikinghence then enums18:22
@wikingand the whole TSGDataType18:22
@HeikoSno you have the map18:22
@HeikoSI mean check class_list18:22
@HeikoSit explicitly calls new CGaussianKernel()18:22
@HeikoSand there the tags are registered18:22
@HeikoSso you only need the name18:22
@HeikoSso if we assume the map is ordered, then one knows all types18:24
@wikingmmm btw baseTag does not give me info of type18:26
@wikingtypedef std::map<BaseTag, AnyParameter> ParametersMap;18:26
@HeikoSI think this should work just like equals18:26
@wikingi guess any any can help?18:26
@HeikoSwhere any knows how to compare itself18:26
@HeikoSsee the recent equals/clone stuff in any.h that uses decltype18:27
@HeikoSthat can be done for clone as well18:27
@HeikoSand then one needs to implement the cereal operator for all those, just like we do for ".equals", "->equals", "==" now18:27
@wikingmmm18:28
@wikingno18:28
@wikingthat wont work18:28
@HeikoSnot sure about that18:28
@HeikoSbut point is, the actual code is pushed into the data structures that any contains18:29
@HeikoSlisitsyn is the master in that18:29
@HeikoSimo, this decltype thing is the way to go, it so nice for equals ... and equals is very similar to save/load18:29
@wikingyeah that i understood quite a while ago18:29
@HeikoSor actually, clone is18:29
@wikinganyhow18:29
@HeikoSclone is not yet complete ...18:30
@HeikoSload for me is just like clone18:30
@wikingwithout having the type info somewhere... which currently is pushed into18:30
@wikingany in a way18:30
@wikingyou cannot do too much18:30
@HeikoSbut you rather than implementing "clone_from", one implements "load_from"18:30
@wikingnow if you check how this is done18:30
@wikingany serialization18:30
@wikingthen you 'll see what i mean here18:30
@wikingwhy it's not the same18:30
@wiking(boost serialization)18:30
@HeikoSbut thats more than we need I think18:31
@HeikoSthats if you want a general serialization18:31
@HeikoSbut we dont need that18:31
@wikingkk18:31
@HeikoSwe only want to store the content of the very specific parameter framework we have18:31
@wikingthis is not getting me nearer18:31
@wikingto the solution18:31
@wikingbut thnx18:31
@HeikoSI guess we should discuss with sergey as well18:31
@HeikoSyeah nw18:31
Trixiswiking: opt1 - add dummy features to combinedkernel which are subsetted appropriately, then assigned to each customkernel. opt2 - combinedkernel requires features for customkernels. opt3 - create a new init for customkernel which takes subsetstack; i.e. init(subsetstack r, subsetstack c)18:36
Trixisi personally think opt418:36
Trixis*opt318:36
@sukey[https://github.com/shogun-toolbox/shogun] Issue https://github.com/shogun-toolbox/shogun/issues/4098 closed by vigsterkr18:52
@sukey[https://github.com/shogun-toolbox/shogun] Issue https://github.com/shogun-toolbox/shogun/issues/4093 closed by vigsterkr18:53
-!- HeikoS [~heiko@untrust-out.swc.ucl.ac.uk] has quit [Ping timeout: 248 seconds]20:09
-!- shubham808 [0e8bf0fb@gateway/web/freenode/ip.14.139.240.251] has joined #shogun21:06
shubham808@heikoS i have exams this right now so can i pick #4103 where we left off later ? i will play familiarize myself with shogun meanwhile :)21:08
-!- shubham808 [0e8bf0fb@gateway/web/freenode/ip.14.139.240.251] has quit [Ping timeout: 260 seconds]21:13
Trixisnvm found better solution21:21
-!- HeikoS [~heiko@82.132.185.148] has joined #shogun21:31
-!- mode/#shogun [+o HeikoS] by ChanServ21:31
-!- HeikoS [~heiko@82.132.185.148] has quit [Ping timeout: 276 seconds]21:36
@sukey[https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/4121 opened by syashakash21:47
@sukey[https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/4121 closed by syashakash21:49
@sukey[https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/4121 reopened by syashakash21:49
@sukey[https://github.com/shogun-toolbox/shogun] Issue https://github.com/shogun-toolbox/shogun/issues/4122 opened by grg12122:21
@sukey[https://github.com/shogun-toolbox/shogun] Issue https://github.com/shogun-toolbox/shogun/issues/412222:21
@sukey[https://github.com/shogun-toolbox/shogun] Issue https://github.com/shogun-toolbox/shogun/issues/412222:21
lisitsynwiking: uhm I second what heiko said :)23:01
lisitsynyou just create your instance, populate the map and then read using some visitor maybe23:01
lisitsynyou know the required types as the object is very specific23:02
lisitsynand the map is not supposed to be empty23:02
@wikinglisitsyn, the problem with that is that you actually do externilzation23:07
@wikingand not serialization23:07
@wikingi.e. you have a factory method23:07
@wikingthat fills up then the stuff23:07
@wikingnow it's all cool but that cannot really be supported with cereal23:07
lisitsynyeah I am fine whatever you call it :)23:07
lisitsynwhy?23:08
lisitsyncan't you just visit all the parameters and read them?23:08
@wikingvisiting - i.e. writing out - is not a problem23:09
lisitsynyeah and visiting for reading?23:09
@wikingreading what?23:09
@wikinga file?23:09
lisitsynyes, open the file23:09
lisitsynname = read(string)23:10
lisitsyncreate_object(name)23:10
lisitsynfor each in map: read(each)23:10
@wikingyeah but you are talking about23:10
@wikingfactory as serialization23:10
@wikingand btw23:10
@wikingthere's no map :)23:10
@wikingthe map is not only private23:10
@wikingbut it's implementation specific23:10
lisitsynyou still can iterate over parameters anyway23:11
@wikingi.e. not exposed in the header23:11
@wikingas strings23:11
@wikingnot as types23:11
@wiking*tags23:11
lisitsynyeah but the map is populated once init is called23:11
lisitsynI suppose init should be called once we prepare object to be read23:11
@wikingyeah but the map is SGObject::Self::map23:11
lisitsynit is populated by SG_ADD now23:12
@wikingi dont care how that is populated23:12
@wikingi dont have reference to that stuff23:12
@wikingbecause a it's private23:12
@wikingb) it's implementation specify23:12
@wiking(self is forward declared)23:13
@wikingso what you want is that the factory method is actually a friend class of sgobject23:13
lisitsynyou can provide the required methods you need23:13
lisitsynor that23:13
@wikingso that you can hack aroudn23:13
@wikingbut again23:13
@wikingself is forward declared23:13
@wikingso that shit is hidden23:13
@wikingbut again23:13
@wikingeven if i expose all this stuff23:13
@wikingto the declarion23:13
@wiking*declaration23:14
lisitsynyeah this can be changed if required23:14
lisitsynI still don't really get what is so different about reading23:15
@wikingbecause ceral23:15
lisitsynis it just ar(..)?23:16
@wikingis populating the obj from inside.... i.e. just calls the init function once the given obj is created23:16
@wikingi.e. this is already created23:16
@wikingwhen you ar23:16
@wikingdoing this = factory(classname) is shooging in the leg23:17
lisitsynwhy?23:17
@wikingSGObject at that moment is this already23:17
lisitsynok if it is not factory then how would it work?23:18
lisitsynI mean what is the way for cereal to call the proper ctor?23:18
@wikingtype23:19
lisitsynwhat does it store in the file?23:19
@wikingnoup not at all23:20
lisitsynsay it is json23:20
lisitsynwhat is stored?23:20
@wikingwhat you write out23:20
lisitsynhow does it know it is gaussiankernel?23:20
@wikingthen the type jyou pass to deser23:20
@wikingwill call the right obj's deserializator23:20
@wikingafter it constructed the obj23:20
lisitsynyes but who writes the code to create gaussian kernel?23:20
@wikingi mean it doesn't know anything23:20
@wikingyou say that it's this type what i'm gonna read now23:21
@wikingand then it's just blindly reading it23:21
lisitsynbut I ask for SGObject23:21
lisitsynbut there is a gaussian kernel23:21
lisitsynI need gaussian kernel to be created23:21
@wikingsince gk is sgobj it'll call sgobj's dtor23:22
@wikingdeser23:22
@wikingi.e. SGObject() -> deser()23:22
lisitsynyes and who makes it gaussian kernel in the end?23:22
lisitsynthere always have to be some factory, no?23:23
lisitsynI mean just because we do inheritance23:23
lisitsynif that doesn't happen we read the object properly but it is different object23:25
lisitsynI see it happening either via some 'codes' for objects or just strings that create the object23:26
lisitsynthat's exactly what the create_object does23:26
@wikingmmm the current approach needs to go to the toilette23:26
@wikingas this wont work23:26
@wikingit's just not meant to do this what you expect it to do23:27
lisitsyn:)23:27
@wiking:)23:27
lisitsynI guess it can read ints and floats23:27
lisitsynbut not objects?23:27
@wikingyou can read objects23:27
@wikingthe problem is that you needs types23:27
@wikingbefore23:27
lisitsynyeah but not inherited23:27
@wikingreading it23:27
lisitsynwithout polymorphic behav23:28
lisitsynI kind of get what's the problem now23:28
@wikingwe dont have reflection23:28
@wikingthis is not that language23:29
lisitsynyeah that's why we mess with anys and shieatz23:29
@wikingyeah that's all cool23:29
@wikingbut when i wanna read from a bytestream23:30
@wikingwtf is that23:30
@wikingi need to have a way to know it before reading it23:30
@wikingand not only that23:30
lisitsynwiking: yes that's what I and Heiko was trying to say ;)23:30
lisitsynwe have parameters once we created object23:30
@wikingyes23:30
lisitsynso these parameters know how to read itself23:30
@wikingi mean23:30
lisitsynbecause they know their type23:31
@wikingyou can tell this23:31
@wiking10 more times23:31
@wikingthe fact is not going to be changed23:31
lisitsynwhich fact?23:31
@wikingthat i cannot do a factory method23:31
@wikingin the deser of the object23:31
@wikingwhich already being created23:31
@wikingthe deser is not a static method23:31
lisitsynno you mean in cereal23:31
@wikingit's this->deser()23:31
lisitsynI don't know if it is that in cereal23:32
@wikingyeah i  mean i can hack around23:32
lisitsynbut in general that's the idea that should work23:32
@wikingand create a sort of ser/deser that actually is just a factory class23:32
@wikingstill23:33
@wikingthe SGObj design23:33
@wikingwith tags23:33
@wikingis just way too opaque23:33
@wikingto do what you wanna do23:33
@wikingso yeah there's only these two problems with the approach23:34
@wikingi mean writing is pretty easy with the visitors23:34
lisitsynok but if you already have created the object23:36
lisitsyndo you agree reading is quite similar?23:36
lisitsynall we need is 'modifying' visitor then23:36
lisitsynread value put it into the pointer23:36
lisitsynI mean if we settle that we have to use factories it becomes easier, no?23:37
@wikingyeah only thing is that then the whole serialization23:38
@wikingstarts from scratch23:38
@wikingwith the apis23:38
@wikingi.e. it's almost back to square one with load/save23:38
lisitsyndon't get23:39
lisitsynsquare one?23:39
@wikingwe cannot use anything of cereal23:39
@wiking:)23:39
lisitsynahh23:39
@wikingi need to wrap the whole thing23:40
lisitsynok I see23:40
@wikingwe can use of cousre a lot of thing23:40
@wikingbut needs to be wrapped23:40
@wikingall around23:40
lisitsynwell it seems to me that23:40
lisitsynwe don't really need anything advanced for such a serialization23:40
lisitsynthat is just read/write using these visitors23:40
lisitsynit is not really cereal it can be just any custom code, it is simple anyway23:40
@wikingyeah23:41
@wikingwe can uee any23:41
@wikingCUSTOM code23:41
@wiking:)23:41
@wikingthe stress is on *CUSTOM*23:41
@wikingagain23:41
@wikingi'm not saying that it's not possible23:41
lisitsynno, it is not that bad as it sounds23:41
@wikingi'm saying that it's gonna be ugly23:41
@wikingit is23:41
@wikingeither you expose SGObject::Self23:41
lisitsynI don't really see the problem cereal solves :)23:42
lisitsynit probably solves some other problem we don't have23:42
lisitsynfrom what I get so far23:42
@wikingthe automation of not doing the whole factory story23:42
@wiking:)23:42
lisitsynah then it is not for us23:42
lisitsynbecause we have to use factories23:42
lisitsynI mean if you do inheritance you have to use some way of factorying your objects23:42
lisitsynbecause you not only load the parameters but also bind the proper functions23:43
lisitsynwhich are virtual23:43
lisitsynlike in that case of gaussian kernel23:43
lisitsynsomeone should call some method to create gaussian kernel23:43
lisitsynbut the factory story is actually 3 lines of code23:44
lisitsynit is like two-stage but I don't see it that ugly23:44
--- Log closed Fri Jan 26 00:00:35 2018

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