--- Log opened Thu Jan 25 00:00:34 2018 | ||
-!- HeikoS [~heiko@host86-129-231-92.range86-129.btcentralplus.com] has joined #shogun | 00:30 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 00:30 | |
@HeikoS | lisitsyn: around? | 00:36 |
---|---|---|
@sukey | [https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/4116 synchronized by guruhegde | 00: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 guruhegde | 01:50 |
-shogun-buildbot:#shogun- Build nightly_all #80 is complete: Failure [failed test (failure)] - http://buildbot.shogun-toolbox.org:8080/#builders/22/builds/80 | 07:41 | |
-!- sonne|work [~sonnenbu@business-90-187-45-1.pool2.vodafone-ip.de] has joined #shogun | 09:10 | |
sonne|work | wiking: just wondering - did anyone attempt to compile shogun - gpl recently? | 09:11 |
sonne|work | and 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.xml | 09:15 |
sonne|work | ./src/interfaces/python/shogun_doxygen.i line 71636 | 09:15 |
@wiking | sonne|work, the doxygen thing is a problem | 09:59 |
@wiking | heiko broke it :) | 09:59 |
sonne|work | wiking: of course :) | 10:04 |
sonne|work | wiking: I got shogun to compile after (2 days of trying :/) | 10:04 |
sonne|work | but not the GPL'd variant | 10:04 |
sonne|work | that is still broken | 10:04 |
sonne|work | let me try whether I can still train a simple svm o_O | 10:04 |
@wiking | sonne|work, ahahaha | 10:07 |
@wiking | sonne|work, if you disable doxygen | 10:07 |
@wiking | it should work w/o problems | 10:07 |
sonne|work | who said that I don't need docs :-D | 10:07 |
@wiking | hahaha | 10:08 |
@wiking | shogun.ml/api | 10:08 |
sonne|work | src/shogun/io/Serializable.h | 10:08 |
sonne|work | line 50 | 10:08 |
@wiking | yeah | 10:08 |
sonne|work | should we just add some ifdef there to ignore doxygen | 10:08 |
@wiking | i guess it's the c++11 magic | 10:08 |
sonne|work | I forgot the name of the macro | 10:08 |
sonne|work | yeah >> | 10:09 |
sonne|work | > > | 10:09 |
sonne|work | whatever c++17 magic that is.. | 10:09 |
@wiking | afaik | 10:09 |
@wiking | we can disable the whole class | 10:09 |
sonne|work | #ifndef DOXYGEN_SHOULD_SKIP_THIS | 10:10 |
sonne|work | #endif | 10:10 |
sonne|work | right? | 10:10 |
@wiking | yes | 10:10 |
sonne|work | let me try.. | 10:12 |
sonne|work | btw the GPL'd shogun doesn't compile at all | 10:12 |
sonne|work | with svmlight pr_loqo issues etc | 10:12 |
@wiking | sonne|work, git submodule update --init ? | 10:13 |
@wiking | these are all http://buildbot.shogun-toolbox.org:8080/#/console gpl compiled | 10:13 |
@wiking | only the nightly bsd build is build w/o the gpl part | 10:14 |
sonne|work | weird then | 10:18 |
sonne|work | I guess I did sth wrong | 10:18 |
sonne|work | all I have to do is checkout the code | 10:18 |
@wiking | and the submodules | 10:18 |
sonne|work | and then git submodule update --init right? | 10:18 |
@wiking | yes | 10:18 |
sonne|work | maybe I did sth wrong in the last step | 10:19 |
@wiking | do u wanna send in the patch or shall i ? | 10:19 |
sonne|work | still 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 resolution | 10:36 |
shogitter | (syashakash) [full message: https://gitter.im/shogun-toolbox/shogun?at=5a69a4fb517037a212f0071d] | 10:36 |
@wiking | sonneseems working | 10:36 |
@wiking | sonne|work, works for me | 10:36 |
@sukey | [https://github.com/shogun-toolbox/shogun] New commit https://github.com/shogun-toolbox/shogun/commit/b4e9249003d1ba1320ec726b9e133489b46833da by sonney2k | 10:36 |
sonne|work | yes compiled now | 10:36 |
@wiking | good thnx | 10:36 |
sonne|work | wiking: sounds like you have the bigger balls :P | 10:36 |
@wiking | :D | 10:37 |
sonne|work | 64 cores? | 10:37 |
-!- HeikoS [~heiko@host86-129-231-92.range86-129.btcentralplus.com] has joined #shogun | 10:54 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 10:54 | |
@HeikoS | lisitsyn: jojojo | 10:54 |
@wiking | sonne|work, only hedonismbot | 11: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/282 | 11:18 | |
-!- gp1308 [~gp@ip4d15fa06.dynamic.kabel-deutschland.de] has joined #shogun | 11:31 | |
-!- travis-ci [~travis-ci@ec2-54-197-187-233.compute-1.amazonaws.com] has joined #shogun | 11:35 | |
travis-ci | it'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/333185186 | 11:35 |
-!- travis-ci [~travis-ci@ec2-54-197-187-233.compute-1.amazonaws.com] has left #shogun [] | 11:35 | |
sonne|work | wiking: :) | 11:37 |
sonne|work | wiking: http://www.shogun-toolbox.org/examples/latest/search.html?q=GaussianKernel&check_keywords=yes&area=default | 11:37 |
sonne|work | search broken? | 11:38 |
sonne|work | or is this again only me??! | 11:38 |
@HeikoS | gp1308: cool stuff, how are things going with it? | 11:38 |
@HeikoS | sonne|work: it is broken | 11:39 |
@HeikoS | good catch | 11:39 |
@HeikoS | gp1308: any major problems? | 11:40 |
gp1308 | I did rebase against develop. I still see some changes from #4114 | 11:40 |
gp1308 | I guess messed with git at some point. | 11:41 |
@HeikoS | gp1308: 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 |
gp1308 | Apart from that, everything is good. I will do that. | 11:44 |
@HeikoS | cool | 11:44 |
@HeikoS | looking forward to see the thing | 11:44 |
@sukey | [https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/4119 merged by karlnapf | 11:49 |
@sukey | [https://github.com/shogun-toolbox/shogun] karlnapf pushed 2 commits: | 11:49 |
@sukey | https://github.com/shogun-toolbox/shogun/commit/aece52a511204e6e91f063d1b18c883555e9ae7c | 11:49 |
@sukey | https://github.com/shogun-toolbox/shogun/commit/dbda8616e5346b0c13b31a6330ccb1d389244591 | 11:49 |
@sukey | [https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/4119 | 11:50 |
@sukey | [https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/4119 | 11:50 |
@sukey | [https://github.com/shogun-toolbox/shogun] Issue https://github.com/shogun-toolbox/shogun/issues/4043 | 11:58 |
-!- travis-ci [~travis-ci@ec2-54-224-111-228.compute-1.amazonaws.com] has joined #shogun | 12:01 | |
travis-ci | it'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/333185186 | 12: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/220 | 12:03 | |
sonne|work | sigh I totally forgot how to enable the progress bar o_O | 12:05 |
@HeikoS | sonne|work: there is new ways now | 12:06 |
sonne|work | I want to see the new one! | 12:06 |
@HeikoS | let me dig it out | 12:07 |
@HeikoS | check PRange_unittest.cc | 12:07 |
@HeikoS | ./bin/shogun-unit-test --gtest_filter=PRange.progress_correct_bounds_positive | 12:08 |
sonne|work | no I mean from python | 12:08 |
sonne|work | is there a static sg_io obj still? | 12:08 |
-!- syashakash [7c7c2a57@gateway/web/freenode/ip.124.124.42.87] has joined #shogun | 12:10 | |
-!- syashakash [7c7c2a57@gateway/web/freenode/ip.124.124.42.87] has left #shogun [] | 12:11 | |
sonne|work | HeikoS: found it: svm.io.enable_progress() | 12:12 |
sonne|work | neat :) | 12:12 |
-!- travis-ci [~travis-ci@ec2-54-197-187-233.compute-1.amazonaws.com] has joined #shogun | 12:23 | |
travis-ci | it'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/333210181 | 12:23 |
-!- travis-ci [~travis-ci@ec2-54-197-187-233.compute-1.amazonaws.com] has left #shogun [] | 12:23 | |
gp1308 | HeikoS: 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 |
gp1308 | Should i apply style fix?? please guide. | 12:25 |
-!- travis-ci [~travis-ci@ec2-54-197-145-119.compute-1.amazonaws.com] has joined #shogun | 12:52 | |
travis-ci | it'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/333210181 | 12:52 |
-!- travis-ci [~travis-ci@ec2-54-197-145-119.compute-1.amazonaws.com] has left #shogun [] | 12:52 | |
@HeikoS | gp1308: checking .. | 13:09 |
@HeikoS | gp1308: only correct style for changes you made / files you touched | 13: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 #shogun | 13:57 | |
@sukey | [https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/4116 synchronized by guruhegde | 14:06 |
Trixis | wiking: #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 #shogun | 14: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 #shogun | 14:52 | |
-!- HeikoS [~heiko@untrust-out.swc.ucl.ac.uk] has joined #shogun | 14:52 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 14:52 | |
@sukey | [https://github.com/shogun-toolbox/shogun] Issue https://github.com/shogun-toolbox/shogun/issues/4111 closed by karlnapf | 14:59 |
@sukey | [https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/4116 merged by karlnapf | 15:01 |
@sukey | [https://github.com/shogun-toolbox/shogun] karlnapf pushed 2 commits: | 15:01 |
@sukey | https://github.com/shogun-toolbox/shogun/commit/4e3377c48e702849d8fbccb4b7f8ae51f8f6233d | 15:01 |
@sukey | https://github.com/shogun-toolbox/shogun/commit/b24546c32cbcbea8292776c68801f660664175cc | 15:01 |
@sukey | [https://github.com/shogun-toolbox/shogun] Issue https://github.com/shogun-toolbox/shogun/issues/4101 closed by karlnapf | 15:04 |
-!- iglesias [6cab81bc@gateway/web/freenode/ip.108.171.129.188] has joined #shogun | 15:09 | |
@HeikoS | iglesias: jojojo | 15: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 #shogun | 15:29 | |
Trixis | HeikoS: actually, same question as for wiking. | 15:50 |
@HeikoS | sure | 15:50 |
Trixis | HeikoS: 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 |
@HeikoS | Trixis: I dont know that of the top of my head, would have to read code | 15:52 |
@HeikoS | but do you have that minimal example you talked about? | 15:52 |
@HeikoS | because then it will be much easier to see what is going on | 15:52 |
@HeikoS | but what you say sounds reasonable | 15:53 |
Trixis | HeikoS: im about to look into the working example rn | 15:53 |
Trixis | just got back from lectures | 15:53 |
@HeikoS | ok | 16:02 |
@HeikoS | Trixis: I think a good idea would be to start simple, and then slowly ramp up the complexity | 16:02 |
@HeikoS | i.e. first try xvalidation | 16:02 |
@HeikoS | then put a custom kernel in | 16:02 |
@HeikoS | then the director kernel | 16:02 |
@HeikoS | and somewhere in between the mkl | 16:03 |
Trixis | HeikoS: oh i meant using custom kernel as work around to the director kernel issue | 16:03 |
Trixis | separate issues | 16:03 |
Trixis | (that workaround is prevented by issue no. 3612) | 16:03 |
Trixis | damn shogun cloud doesnt have director kernels | 16:03 |
-!- travis-ci [~travis-ci@ec2-54-224-111-228.compute-1.amazonaws.com] has joined #shogun | 16:04 | |
travis-ci | it'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/333275435 | 16: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 | |
@wiking | argh | 16:15 |
@wiking | No 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 |
@wiking | HeikoS, ping? | 16:22 |
@HeikoS | jo | 16:22 |
@wiking | what's your line of thought about TSGDataType ? | 16:22 |
@wiking | in the long run | 16:23 |
@wiking | you wanna kill that? | 16:23 |
@HeikoS | yep | 16:23 |
@HeikoS | pretty soon | 16:23 |
@wiking | mmmhmm | 16:23 |
@HeikoS | not all of it though | 16:23 |
@wiking | along with EPrimitiveType EStructType EContainerType | 16:23 |
@wiking | ? | 16:23 |
@HeikoS | the struct itself can soon go | 16:23 |
@HeikoS | the primitive type needs some more work to be deleted | 16:24 |
@wiking | ok | 16:24 |
@wiking | so no | 16:24 |
@wiking | :) | 16:24 |
@wiking | if we delete any of those | 16:24 |
@wiking | we cannot serialize | 16:24 |
@wiking | :) | 16:24 |
@HeikoS | no you can't | 16:24 |
@HeikoS | everything breaks | 16:24 |
@HeikoS | can't even instantiate empty objects anymore | 16:24 |
@wiking | yeye i mean | 16:24 |
@wiking | even if you remove | 16:24 |
@wiking | parameters | 16:24 |
@wiking | etc | 16:24 |
@HeikoS | but I am on it | 16:24 |
@wiking | nono what i mean | 16:24 |
@wiking | if u wanna remove that | 16:24 |
@wiking | we wont be able to serialize | 16:24 |
@wiking | we need an enum/struct | 16:25 |
@wiking | to represent types | 16:25 |
@HeikoS | yes, we do. but I think we can figure that out later | 16:26 |
@wiking | ? | 16:26 |
@wiking | no | 16:26 |
@wiking | i mean i'm currenlty workingn on this | 16:26 |
@wiking | later is not an option for me | 16:26 |
@wiking | as i wanna finish up with this | 16:26 |
@wiking | so what i mean is that i can drop 90% of code in Paramter.cpp | 16:27 |
@HeikoS | not yet | 16:27 |
@wiking | ? | 16:27 |
@HeikoS | only the save/load stuff (if you have replacement) | 16:28 |
@HeikoS | not the add_* stuff | 16:28 |
@wiking | i meant the add | 16:28 |
@wiking | i can drop most of it | 16:28 |
@HeikoS | nope can't do that yet | 16:28 |
@wiking | and replace it with something else | 16:28 |
@wiking | yes i can | 16:28 |
@wiking | those lines could be simply replaced with some template hacks | 16:28 |
@wiking | but that's not the point | 16:29 |
@HeikoS | many things depend on it that are not yet working | 16:29 |
@wiking | no you dont get it | 16:29 |
@wiking | i meant that i can drop most of those copy-paste code | 16:29 |
@wiking | and replace it with some | 16:29 |
@wiking | template hacks | 16:29 |
@wiking | but still | 16:29 |
@HeikoS | i wouldnt bother | 16:29 |
@wiking | on the end of the day | 16:29 |
@HeikoS | since the code can be deleted completely | 16:29 |
@wiking | we need the enums | 16:29 |
@HeikoS | but not yet | 16:29 |
@wiking | yeah but the problem is | 16:29 |
@wiking | that for serialization | 16:29 |
@wiking | you cannot drop it completely | 16:29 |
@wiking | that's what i'm trying to say | 16:30 |
@wiking | basically the problem is that no matter what we do with the Parameters.cpp | 16:31 |
@wiking | and et.all | 16:31 |
@wiking | for Any we need to be able to store | 16:31 |
@wiking | the exact type info | 16:31 |
@wiking | that TSGDataType stores | 16:31 |
@wiking | i mean for writing out (serializing) is actually not a big deal... the problem starts when you wanna deserialize the stuff | 16:32 |
@wiking | for deserialization you need to be able to read that what you wanna deserialize.... | 16:32 |
@wiking | into the any | 16:32 |
@HeikoS | well | 16:32 |
@wiking | for that you need to somehow store whether that is a primitive type etc | 16:32 |
@wiking | basically the whole story of TSGDataType | 16:33 |
@HeikoS | the object that you load into knows its parameters | 16:33 |
@HeikoS | it knows the type | 16:33 |
@wiking | from? | 16:33 |
@wiking | :) | 16:33 |
@HeikoS | from its constructors tag registrations | 16:33 |
@wiking | no | 16:33 |
@wiking | it doesnt | 16:33 |
@wiking | :) | 16:33 |
@wiking | and even if you would know | 16:33 |
@wiking | you would still need to store this | 16:33 |
@wiking | in the file | 16:33 |
@wiking | there's no way around | 16:34 |
@wiking | what you are saying would just shift around | 16:34 |
@wiking | the same logic | 16:34 |
@wiking | what i've described | 16:34 |
@wiking | https://pastebin.com/q6aNWynv | 16:35 |
@wiking | just an example how SGObject's serialization would work | 16:35 |
-!- travis-ci [~travis-ci@ec2-54-197-187-233.compute-1.amazonaws.com] has joined #shogun | 16:36 | |
travis-ci | it'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/333275435 | 16:36 |
-!- travis-ci [~travis-ci@ec2-54-197-187-233.compute-1.amazonaws.com] has left #shogun [] | 16:36 | |
Trixis | there we go | 16: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 #shogun | 16:55 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 16:55 | |
@sukey | [https://github.com/shogun-toolbox/shogun] Issue https://github.com/shogun-toolbox/shogun/issues/4120 opened by dhelekal | 16:59 |
Trixis | there goes | 16:59 |
Trixis | HeikoS: let me know if that needs more details | 17:08 |
Trixis | at least when i minimised the example it prints an error instead of segfaulting in a weird way | 17:08 |
Trixis | wiking: 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 |
Trixis | thx | 17:27 |
@wiking | Trixis, just getting dinner | 17:46 |
@wiking | 20m | 17: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 #shogun | 18:01 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 18:01 | |
@HeikoS | wiking: i got disconnected, you saw my msgs above? 16:52? | 18:02 |
@wiking | mmmm | 18:05 |
@wiking | HeikoS, no | 18: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 ok | 18:05 |
@HeikoS | (16:47:05) Heiko: Ill have a look a bit later, thx | 18:05 |
@HeikoS | (16:52:29) Heiko: wiking: if you do it this way, of course you need to store the type information of the parameters | 18:05 |
@HeikoS | (16:53:03) Heiko: but if you rely on the registered parameters, you don't | 18: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 |
@wiking | HeikoS, i saw messages from you till | 18:05 |
@wiking | [16:33] <HeikoS> from its constructors tag registrations | 18:05 |
@HeikoS | wiking: pasted | 18:06 |
@wiking | no matter where you shift the object tie | 18:07 |
@wiking | *type | 18:07 |
@wiking | on the end of it | 18:07 |
@wiking | you need to be able to serialize it's actual type | 18:07 |
@wiking | of that tag | 18:08 |
@wiking | or value | 18:08 |
@wiking | depending where you wanna store the type info | 18:08 |
Trixis | HeikoS: kk | 18:09 |
@HeikoS | wiking: I guess I was talking about the most extreme case of just fixing the save/load order of things. But nevermind | 18:13 |
@HeikoS | the "create_parameter" thing I am unsure about | 18:13 |
@HeikoS | but ill leave it to you, I dont have my head in the stuff right now | 18:13 |
@wiking | i mean if you say that you wanna unload the value type into tag that is fine | 18:13 |
@wiking | but still you need to be able to encode that | 18:14 |
@wiking | somehow | 18:14 |
@wiking | as otherwise you dont know what you should be loading 'next' | 18:14 |
@HeikoS | are these archives sequential? | 18:14 |
@wiking | e.g. an sgvector/matrix, primitive or sgobj | 18:14 |
@HeikoS | or container based? | 18:15 |
@HeikoS | like, is it a bytestream? | 18:15 |
@wiking | i'm not so sure if i understand this question | 18:15 |
@HeikoS | wiking: nevermind | 18:15 |
@HeikoS | I guess we want to implement a serialization for the type information that the parameter map has | 18:15 |
@HeikoS | so need to have runtype encoding | 18:15 |
@HeikoS | as you said | 18:16 |
@HeikoS | the current serialization also does that | 18:16 |
@wiking | i mean on the end of the day when you deserialize something | 18:16 |
@wiking | you need to know what you are reading | 18:16 |
@HeikoS | it stores first the type as a string | 18:16 |
@HeikoS | and then its size parameters | 18:16 |
@HeikoS | and only then content | 18:16 |
@wiking | yes | 18:16 |
@HeikoS | but the thing is | 18:16 |
@wiking | i mean this is inevitable | 18:16 |
@HeikoS | in the current format, you can change the order of the records in the file | 18:16 |
@wiking | i mean the size and stuff | 18:16 |
@wiking | can be encapsulated | 18:16 |
@HeikoS | if you fix the order of storage | 18:16 |
@HeikoS | you actually exactly know how to interpret it | 18:16 |
@HeikoS | since you know what parameters you had and how they were saved | 18:17 |
@HeikoS | but then the storage needs to be sequential | 18:17 |
@wiking | but even then | 18:17 |
@wiking | you need to be able to save | 18:17 |
@wiking | what was the order | 18:17 |
@wiking | and what was those types | 18:17 |
@HeikoS | well the tags map has it | 18:17 |
@wiking | primitive, primitive, sgobject, sgvector, primitive | 18:17 |
@HeikoS | you have the empty instance, which has the same tags map as the object your stored | 18:17 |
@wiking | you need to write this into the file | 18:17 |
@HeikoS | loading works like this | 18:17 |
@wiking | somehow | 18:18 |
@wiking | i mean encode it | 18:18 |
@HeikoS | 1. load class name | 18:18 |
@HeikoS | 2. create emtpy instance | 18:18 |
@HeikoS | 3. iterate over parameter map and load one by one | 18:18 |
@HeikoS | and saving has to be the the same order as loading | 18:18 |
@wiking | yeah i mean this is clear | 18:18 |
@HeikoS | but since you have the tags map | 18:18 |
@wiking | you are talking about CSGobject::Self::map right? | 18:19 |
@HeikoS | yep | 18:19 |
@wiking | ok so how do you serialize that | 18:19 |
@wiking | basetag + any | 18:19 |
@HeikoS | you don't, just the content | 18:19 |
@wiking | well just the content = serialize | 18:19 |
@HeikoS | my point is you have it when you load | 18:19 |
@HeikoS | you have the populated map | 18:20 |
@HeikoS | with all type infos | 18:20 |
@wiking | HeikoS, from whom? | 18:20 |
@HeikoS | since you have an empty instance | 18:20 |
@wiking | by what? | 18:20 |
@HeikoS | create_object() | 18:20 |
@wiking | you have the mapy | 18:20 |
@wiking | map | 18:20 |
@wiking | but it's empty | 18:20 |
@HeikoS | no | 18:20 |
@HeikoS | constructor registers parameters | 18:20 |
@HeikoS | mmmh | 18:21 |
@wiking | your assumption is that actually then the actual name is | 18:21 |
@wiking | serialized | 18:21 |
@wiking | and that 'name' is being used | 18:21 |
@wiking | to deserialize things | 18:21 |
@HeikoS | yep that was my thinking | 18:21 |
@wiking | i mean construct the empty instance | 18:21 |
@HeikoS | but now let me think whether that is true | 18:21 |
@HeikoS | this is how the old thing works iirc | 18:21 |
@wiking | noup | 18:21 |
@HeikoS | but on top, it also stores type info | 18:21 |
@wiking | old thing works that things are serialized | 18:21 |
@wiking | with type | 18:21 |
@wiking | info | 18:21 |
@wiking | hence then enums | 18:22 |
@wiking | and the whole TSGDataType | 18:22 |
@HeikoS | no you have the map | 18:22 |
@HeikoS | I mean check class_list | 18:22 |
@HeikoS | it explicitly calls new CGaussianKernel() | 18:22 |
@HeikoS | and there the tags are registered | 18:22 |
@HeikoS | so you only need the name | 18:22 |
@HeikoS | so if we assume the map is ordered, then one knows all types | 18:24 |
@wiking | mmm btw baseTag does not give me info of type | 18:26 |
@wiking | typedef std::map<BaseTag, AnyParameter> ParametersMap; | 18:26 |
@HeikoS | I think this should work just like equals | 18:26 |
@wiking | i guess any any can help? | 18:26 |
@HeikoS | where any knows how to compare itself | 18:26 |
@HeikoS | see the recent equals/clone stuff in any.h that uses decltype | 18:27 |
@HeikoS | that can be done for clone as well | 18:27 |
@HeikoS | and then one needs to implement the cereal operator for all those, just like we do for ".equals", "->equals", "==" now | 18:27 |
@wiking | mmm | 18:28 |
@wiking | no | 18:28 |
@wiking | that wont work | 18:28 |
@HeikoS | not sure about that | 18:28 |
@HeikoS | but point is, the actual code is pushed into the data structures that any contains | 18:29 |
@HeikoS | lisitsyn is the master in that | 18:29 |
@HeikoS | imo, this decltype thing is the way to go, it so nice for equals ... and equals is very similar to save/load | 18:29 |
@wiking | yeah that i understood quite a while ago | 18:29 |
@HeikoS | or actually, clone is | 18:29 |
@wiking | anyhow | 18:29 |
@HeikoS | clone is not yet complete ... | 18:30 |
@HeikoS | load for me is just like clone | 18:30 |
@wiking | without having the type info somewhere... which currently is pushed into | 18:30 |
@wiking | any in a way | 18:30 |
@wiking | you cannot do too much | 18:30 |
@HeikoS | but you rather than implementing "clone_from", one implements "load_from" | 18:30 |
@wiking | now if you check how this is done | 18:30 |
@wiking | any serialization | 18:30 |
@wiking | then you 'll see what i mean here | 18:30 |
@wiking | why it's not the same | 18:30 |
@wiking | (boost serialization) | 18:30 |
@HeikoS | but thats more than we need I think | 18:31 |
@HeikoS | thats if you want a general serialization | 18:31 |
@HeikoS | but we dont need that | 18:31 |
@wiking | kk | 18:31 |
@HeikoS | we only want to store the content of the very specific parameter framework we have | 18:31 |
@wiking | this is not getting me nearer | 18:31 |
@wiking | to the solution | 18:31 |
@wiking | but thnx | 18:31 |
@HeikoS | I guess we should discuss with sergey as well | 18:31 |
@HeikoS | yeah nw | 18:31 |
Trixis | wiking: 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 |
Trixis | i personally think opt4 | 18:36 |
Trixis | *opt3 | 18:36 |
@sukey | [https://github.com/shogun-toolbox/shogun] Issue https://github.com/shogun-toolbox/shogun/issues/4098 closed by vigsterkr | 18:52 |
@sukey | [https://github.com/shogun-toolbox/shogun] Issue https://github.com/shogun-toolbox/shogun/issues/4093 closed by vigsterkr | 18: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 #shogun | 21: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 | |
Trixis | nvm found better solution | 21:21 |
-!- HeikoS [~heiko@82.132.185.148] has joined #shogun | 21:31 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 21: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 syashakash | 21:47 |
@sukey | [https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/4121 closed by syashakash | 21:49 |
@sukey | [https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/4121 reopened by syashakash | 21:49 |
@sukey | [https://github.com/shogun-toolbox/shogun] Issue https://github.com/shogun-toolbox/shogun/issues/4122 opened by grg121 | 22:21 |
@sukey | [https://github.com/shogun-toolbox/shogun] Issue https://github.com/shogun-toolbox/shogun/issues/4122 | 22:21 |
@sukey | [https://github.com/shogun-toolbox/shogun] Issue https://github.com/shogun-toolbox/shogun/issues/4122 | 22:21 |
lisitsyn | wiking: uhm I second what heiko said :) | 23:01 |
lisitsyn | you just create your instance, populate the map and then read using some visitor maybe | 23:01 |
lisitsyn | you know the required types as the object is very specific | 23:02 |
lisitsyn | and the map is not supposed to be empty | 23:02 |
@wiking | lisitsyn, the problem with that is that you actually do externilzation | 23:07 |
@wiking | and not serialization | 23:07 |
@wiking | i.e. you have a factory method | 23:07 |
@wiking | that fills up then the stuff | 23:07 |
@wiking | now it's all cool but that cannot really be supported with cereal | 23:07 |
lisitsyn | yeah I am fine whatever you call it :) | 23:07 |
lisitsyn | why? | 23:08 |
lisitsyn | can't you just visit all the parameters and read them? | 23:08 |
@wiking | visiting - i.e. writing out - is not a problem | 23:09 |
lisitsyn | yeah and visiting for reading? | 23:09 |
@wiking | reading what? | 23:09 |
@wiking | a file? | 23:09 |
lisitsyn | yes, open the file | 23:09 |
lisitsyn | name = read(string) | 23:10 |
lisitsyn | create_object(name) | 23:10 |
lisitsyn | for each in map: read(each) | 23:10 |
@wiking | yeah but you are talking about | 23:10 |
@wiking | factory as serialization | 23:10 |
@wiking | and btw | 23:10 |
@wiking | there's no map :) | 23:10 |
@wiking | the map is not only private | 23:10 |
@wiking | but it's implementation specific | 23:10 |
lisitsyn | you still can iterate over parameters anyway | 23:11 |
@wiking | i.e. not exposed in the header | 23:11 |
@wiking | as strings | 23:11 |
@wiking | not as types | 23:11 |
@wiking | *tags | 23:11 |
lisitsyn | yeah but the map is populated once init is called | 23:11 |
lisitsyn | I suppose init should be called once we prepare object to be read | 23:11 |
@wiking | yeah but the map is SGObject::Self::map | 23:11 |
lisitsyn | it is populated by SG_ADD now | 23:12 |
@wiking | i dont care how that is populated | 23:12 |
@wiking | i dont have reference to that stuff | 23:12 |
@wiking | because a it's private | 23:12 |
@wiking | b) it's implementation specify | 23:12 |
@wiking | (self is forward declared) | 23:13 |
@wiking | so what you want is that the factory method is actually a friend class of sgobject | 23:13 |
lisitsyn | you can provide the required methods you need | 23:13 |
lisitsyn | or that | 23:13 |
@wiking | so that you can hack aroudn | 23:13 |
@wiking | but again | 23:13 |
@wiking | self is forward declared | 23:13 |
@wiking | so that shit is hidden | 23:13 |
@wiking | but again | 23:13 |
@wiking | even if i expose all this stuff | 23:13 |
@wiking | to the declarion | 23:13 |
@wiking | *declaration | 23:14 |
lisitsyn | yeah this can be changed if required | 23:14 |
lisitsyn | I still don't really get what is so different about reading | 23:15 |
@wiking | because ceral | 23:15 |
lisitsyn | is it just ar(..)? | 23:16 |
@wiking | is populating the obj from inside.... i.e. just calls the init function once the given obj is created | 23:16 |
@wiking | i.e. this is already created | 23:16 |
@wiking | when you ar | 23:16 |
@wiking | doing this = factory(classname) is shooging in the leg | 23:17 |
lisitsyn | why? | 23:17 |
@wiking | SGObject at that moment is this already | 23:17 |
lisitsyn | ok if it is not factory then how would it work? | 23:18 |
lisitsyn | I mean what is the way for cereal to call the proper ctor? | 23:18 |
@wiking | type | 23:19 |
lisitsyn | what does it store in the file? | 23:19 |
@wiking | noup not at all | 23:20 |
lisitsyn | say it is json | 23:20 |
lisitsyn | what is stored? | 23:20 |
@wiking | what you write out | 23:20 |
lisitsyn | how does it know it is gaussiankernel? | 23:20 |
@wiking | then the type jyou pass to deser | 23:20 |
@wiking | will call the right obj's deserializator | 23:20 |
@wiking | after it constructed the obj | 23:20 |
lisitsyn | yes but who writes the code to create gaussian kernel? | 23:20 |
@wiking | i mean it doesn't know anything | 23:20 |
@wiking | you say that it's this type what i'm gonna read now | 23:21 |
@wiking | and then it's just blindly reading it | 23:21 |
lisitsyn | but I ask for SGObject | 23:21 |
lisitsyn | but there is a gaussian kernel | 23:21 |
lisitsyn | I need gaussian kernel to be created | 23:21 |
@wiking | since gk is sgobj it'll call sgobj's dtor | 23:22 |
@wiking | deser | 23:22 |
@wiking | i.e. SGObject() -> deser() | 23:22 |
lisitsyn | yes and who makes it gaussian kernel in the end? | 23:22 |
lisitsyn | there always have to be some factory, no? | 23:23 |
lisitsyn | I mean just because we do inheritance | 23:23 |
lisitsyn | if that doesn't happen we read the object properly but it is different object | 23:25 |
lisitsyn | I see it happening either via some 'codes' for objects or just strings that create the object | 23:26 |
lisitsyn | that's exactly what the create_object does | 23:26 |
@wiking | mmm the current approach needs to go to the toilette | 23:26 |
@wiking | as this wont work | 23:26 |
@wiking | it's just not meant to do this what you expect it to do | 23:27 |
lisitsyn | :) | 23:27 |
@wiking | :) | 23:27 |
lisitsyn | I guess it can read ints and floats | 23:27 |
lisitsyn | but not objects? | 23:27 |
@wiking | you can read objects | 23:27 |
@wiking | the problem is that you needs types | 23:27 |
@wiking | before | 23:27 |
lisitsyn | yeah but not inherited | 23:27 |
@wiking | reading it | 23:27 |
lisitsyn | without polymorphic behav | 23:28 |
lisitsyn | I kind of get what's the problem now | 23:28 |
@wiking | we dont have reflection | 23:28 |
@wiking | this is not that language | 23:29 |
lisitsyn | yeah that's why we mess with anys and shieatz | 23:29 |
@wiking | yeah that's all cool | 23:29 |
@wiking | but when i wanna read from a bytestream | 23:30 |
@wiking | wtf is that | 23:30 |
@wiking | i need to have a way to know it before reading it | 23:30 |
@wiking | and not only that | 23:30 |
lisitsyn | wiking: yes that's what I and Heiko was trying to say ;) | 23:30 |
lisitsyn | we have parameters once we created object | 23:30 |
@wiking | yes | 23:30 |
lisitsyn | so these parameters know how to read itself | 23:30 |
@wiking | i mean | 23:30 |
lisitsyn | because they know their type | 23:31 |
@wiking | you can tell this | 23:31 |
@wiking | 10 more times | 23:31 |
@wiking | the fact is not going to be changed | 23:31 |
lisitsyn | which fact? | 23:31 |
@wiking | that i cannot do a factory method | 23:31 |
@wiking | in the deser of the object | 23:31 |
@wiking | which already being created | 23:31 |
@wiking | the deser is not a static method | 23:31 |
lisitsyn | no you mean in cereal | 23:31 |
@wiking | it's this->deser() | 23:31 |
lisitsyn | I don't know if it is that in cereal | 23:32 |
@wiking | yeah i mean i can hack around | 23:32 |
lisitsyn | but in general that's the idea that should work | 23:32 |
@wiking | and create a sort of ser/deser that actually is just a factory class | 23:32 |
@wiking | still | 23:33 |
@wiking | the SGObj design | 23:33 |
@wiking | with tags | 23:33 |
@wiking | is just way too opaque | 23:33 |
@wiking | to do what you wanna do | 23:33 |
@wiking | so yeah there's only these two problems with the approach | 23:34 |
@wiking | i mean writing is pretty easy with the visitors | 23:34 |
lisitsyn | ok but if you already have created the object | 23:36 |
lisitsyn | do you agree reading is quite similar? | 23:36 |
lisitsyn | all we need is 'modifying' visitor then | 23:36 |
lisitsyn | read value put it into the pointer | 23:36 |
lisitsyn | I mean if we settle that we have to use factories it becomes easier, no? | 23:37 |
@wiking | yeah only thing is that then the whole serialization | 23:38 |
@wiking | starts from scratch | 23:38 |
@wiking | with the apis | 23:38 |
@wiking | i.e. it's almost back to square one with load/save | 23:38 |
lisitsyn | don't get | 23:39 |
lisitsyn | square one? | 23:39 |
@wiking | we cannot use anything of cereal | 23:39 |
@wiking | :) | 23:39 |
lisitsyn | ahh | 23:39 |
@wiking | i need to wrap the whole thing | 23:40 |
lisitsyn | ok I see | 23:40 |
@wiking | we can use of cousre a lot of thing | 23:40 |
@wiking | but needs to be wrapped | 23:40 |
@wiking | all around | 23:40 |
lisitsyn | well it seems to me that | 23:40 |
lisitsyn | we don't really need anything advanced for such a serialization | 23:40 |
lisitsyn | that is just read/write using these visitors | 23:40 |
lisitsyn | it is not really cereal it can be just any custom code, it is simple anyway | 23:40 |
@wiking | yeah | 23:41 |
@wiking | we can uee any | 23:41 |
@wiking | CUSTOM code | 23:41 |
@wiking | :) | 23:41 |
@wiking | the stress is on *CUSTOM* | 23:41 |
@wiking | again | 23:41 |
@wiking | i'm not saying that it's not possible | 23:41 |
lisitsyn | no, it is not that bad as it sounds | 23:41 |
@wiking | i'm saying that it's gonna be ugly | 23:41 |
@wiking | it is | 23:41 |
@wiking | either you expose SGObject::Self | 23:41 |
lisitsyn | I don't really see the problem cereal solves :) | 23:42 |
lisitsyn | it probably solves some other problem we don't have | 23:42 |
lisitsyn | from what I get so far | 23:42 |
@wiking | the automation of not doing the whole factory story | 23:42 |
@wiking | :) | 23:42 |
lisitsyn | ah then it is not for us | 23:42 |
lisitsyn | because we have to use factories | 23:42 |
lisitsyn | I mean if you do inheritance you have to use some way of factorying your objects | 23:42 |
lisitsyn | because you not only load the parameters but also bind the proper functions | 23:43 |
lisitsyn | which are virtual | 23:43 |
lisitsyn | like in that case of gaussian kernel | 23:43 |
lisitsyn | someone should call some method to create gaussian kernel | 23:43 |
lisitsyn | but the factory story is actually 3 lines of code | 23:44 |
lisitsyn | it is like two-stage but I don't see it that ugly | 23: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!