--- Log opened Tue Jul 25 00:00:10 2017 | ||
-!- olinguyen [81615ad9@gateway/web/freenode/ip.129.97.90.217] has quit [Quit: Page closed] | 00:54 | |
-!- geektoni [~geektoni@93-34-234-212.ip52.fastwebnet.it] has joined #shogun | 09:09 | |
-!- iglesiasg [~iglesiasg@217.119.234.214] has joined #shogun | 10:30 | |
-!- mode/#shogun [+o iglesiasg] by ChanServ | 10:30 | |
-!- zxtx [~zxtx@sunnythinking.org] has quit [Ping timeout: 260 seconds] | 10:40 | |
-!- zxtx [~zxtx@sunnythinking.org] has joined #shogun | 10:43 | |
-!- HeikoS [~heiko@untrust-out.swc.ucl.ac.uk] has joined #shogun | 10:49 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 10:49 | |
@sukey | [https://github.com/shogun-toolbox/shogun] Pull Request https://github.com/shogun-toolbox/shogun/pull/3951 opened by geektoni | 11:24 |
---|---|---|
@HeikoS | geektoni: still around? | 11:44 |
@HeikoS | geektoni: cool to catch you | 11:46 |
@HeikoS | so how is the error going? | 11:46 |
geektoni | HeikoS: not good | 11:46 |
geektoni | I don't understand why it happens | 11:46 |
@HeikoS | geektoni: can you explain me very briefly the mechanics of what is happening? | 11:46 |
geektoni | do you mean the new CrossValidation? | 11:47 |
@HeikoS | yes | 11:47 |
@HeikoS | like how you store things | 11:47 |
@HeikoS | how they are emmited | 11:47 |
geektoni | basically, each time you do a cross validation run | 11:47 |
geektoni | a CrossValidationStorage object is created | 11:47 |
@HeikoS | is that something that was there before? | 11:48 |
geektoni | this object has a vector which will contains the results of each fold evaluation. | 11:48 |
@HeikoS | or did you create it? | 11:48 |
geektoni | I created it | 11:48 |
@HeikoS | ok cool | 11:48 |
@HeikoS | and the error comes from a double free? | 11:49 |
geektoni | nope, it came from a code region where it should not throw any error | 11:50 |
@HeikoS | what exactly happens? | 11:50 |
@HeikoS | what is the error? | 11:50 |
geektoni | https://github.com/geektoni/shogun/blob/parameter_observers_cross_validation/src/shogun/evaluation/CrossValidation.cpp#L193 | 11:51 |
geektoni | this line cause the memory error. | 11:51 |
@HeikoS | ah | 11:51 |
@HeikoS | and what is it? | 11:52 |
@HeikoS | the error? | 11:52 |
geektoni | https://gist.github.com/geektoni/f376b5c411dca9be884734dae7ee6354#file-backtrace | 11:52 |
@HeikoS | thx | 11:52 |
geektoni | from the backtrace, I can see there is something with TParameters | 11:53 |
geektoni | but yeah, I don't understand why :P | 11:53 |
@HeikoS | what does valgrind say to that? | 11:53 |
@HeikoS | if you don't store the indices, then it doesnt happen? | 11:53 |
@HeikoS | maybe the indices are freed somewhere when they shouldnt | 11:54 |
geektoni | yeah, if I remove these lines https://github.com/geektoni/shogun/blob/parameter_observers_cross_validation/src/shogun/evaluation/CrossValidationStorage.cpp#L34 | 11:55 |
geektoni | the error disappear | 11:55 |
geektoni | but then valgrind says that there are many memory leaks | 11:55 |
@HeikoS | btw | 11:55 |
@HeikoS | https://github.com/geektoni/shogun/blob/parameter_observers_cross_validation/src/shogun/evaluation/CrossValidationStorage.cpp#L101 | 11:55 |
@HeikoS | you need to REF here as well no? | 11:56 |
@HeikoS | also no need to NULL check | 11:56 |
@HeikoS | SG_UNREF does that | 11:56 |
@HeikoS | also | 11:56 |
@HeikoS | always REF before UNREF to avoid memory error when new/old objects are the same | 11:56 |
@HeikoS | in fact, I think it might be forgotten REF the memory error | 11:56 |
geektoni | kk, I didn't add the SG_REF because I read that the clone() method does it for me :P | 11:56 |
@HeikoS | clone returns object with ref counter set to 1? | 11:57 |
@HeikoS | well ok, but in a method where you receive a pointer, you dont know that riht? | 11:57 |
@HeikoS | so you need to REF it definitely | 11:57 |
geektoni | mmh, but it's ref counter will be still set to 1 right? | 11:58 |
@HeikoS | it might be that after having called the method, you will have to UNREF (if clone returns object with counter set to 1) | 11:58 |
@HeikoS | but that is style | 11:58 |
@HeikoS | but there might be a problem | 11:58 |
@HeikoS | imagine m_test_true_result == results | 11:58 |
@HeikoS | and the ref counter is 1 | 11:58 |
@HeikoS | und then you unref | 11:58 |
@HeikoS | then it gets deleted | 11:59 |
@HeikoS | and then you assign it to itself | 11:59 |
@HeikoS | and boom | 11:59 |
geektoni | mmh | 11:59 |
geektoni | ok, I'll try to add SG_REF to the setters | 12:00 |
@HeikoS | I mean check if that might cause problems | 12:01 |
@HeikoS | but add it anyways, to avoid problems in the future | 12:01 |
geektoni | kk | 12:01 |
@HeikoS | geektoni: and can you use valgrind to find out where the memory was freed? | 12:01 |
geektoni | HeikoS: mmh, actually I've never tried to use it that way | 12:02 |
@HeikoS | I think it should tell you on a bad read | 12:02 |
@HeikoS | "memory freed by" | 12:02 |
geektoni | ohh, that would be nice | 12:03 |
geektoni | so, I'll let you know what I'll find out | 12:04 |
geektoni | maybe is just a matter of SG_REF | 12:04 |
geektoni | I still don't understand why it fails on a train_locked() method, though :/ | 12:05 |
@HeikoS | because that is the first place where the labels are used | 12:05 |
@HeikoS | (my hypothesis) | 12:06 |
geektoni | mmh | 12:07 |
geektoni | well, I'll try and we'll ses how it goes. | 12:07 |
@HeikoS | let me know | 12:07 |
@HeikoS | will grab a coffee and then check back | 12:08 |
geektoni | HeikoS: I'll be back in a few hours with some news | 12:08 |
-!- geektoni [~geektoni@93-34-234-212.ip52.fastwebnet.it] has quit [Remote host closed the connection] | 12:09 | |
@wiking | elias! | 12:25 |
@wiking | HeikoS, ping | 12:26 |
@HeikoS | wiking: pong | 12:34 |
@wiking | sup? | 12:34 |
@wiking | got a second? | 12:34 |
@HeikoS | wiking: sure! | 12:34 |
@HeikoS | all good here, and you? | 12:34 |
@wiking | so-so | 12:34 |
@wiking | busy | 12:34 |
@wiking | although i shoulnd't be :) | 12:35 |
@wiking | but yeah getting better | 12:35 |
@wiking | anyhow so i was wondering | 12:35 |
@wiking | what we should do with those cases | 12:35 |
@wiking | where we test fixtures | 12:35 |
@wiking | for a specific seed | 12:35 |
@HeikoS | yeah! | 12:35 |
@HeikoS | like meta integration | 12:35 |
@wiking | whichi will cause a lot of headache now with | 12:35 |
@HeikoS | or also fixtures | 12:35 |
@wiking | c++11 random | 12:35 |
@wiking | yep indeed | 12:35 |
@HeikoS | yes | 12:35 |
@wiking | meta is currently a major problem | 12:35 |
@wiking | with GMM | 12:36 |
@wiking | etc | 12:36 |
@HeikoS | meta is a problem indeed | 12:36 |
@HeikoS | for the unit tests with fixtures | 12:36 |
@HeikoS | I think we can put in a deterministic drop in replacement for the random stream | 12:36 |
@HeikoS | the numbers it outputs might not be "correct" | 12:36 |
@HeikoS | but this is not the point in those tests anyways | 12:36 |
@wiking | ah you mean that instead of using some blob generator | 12:37 |
@wiking | that actually uses prng | 12:37 |
@wiking | just have a stream of precreated array of doubleS? | 12:37 |
@HeikoS | yeah nonsense numbers | 12:37 |
@HeikoS | I would still use the blobs | 12:37 |
@HeikoS | but the blobs random input is fixed | 12:37 |
@HeikoS | so all the transformations are still at place | 12:37 |
@wiking | 'random input'? | 12:37 |
@HeikoS | of blobs | 12:37 |
@HeikoS | i.e. randn | 12:37 |
@wiking | aaah yeah yeah | 12:38 |
@wiking | i see what you mean | 12:38 |
@wiking | mmm | 12:38 |
@wiking | it's gonna be tricky | 12:38 |
@HeikoS | this would only work for unit tests | 12:38 |
@wiking | somehow mock it :P | 12:38 |
@wiking | that's really not easy to do | 12:38 |
@wiking | that | 12:38 |
@wiking | actually | 12:38 |
@HeikoS | cant we just replace all the CRandom instances with CFakeRandom automatically? | 12:38 |
@wiking | because you would actually need to mock | 12:38 |
@wiking | std::uniform_int_distribution() | 12:38 |
@HeikoS | like make that a feature of the random class | 12:38 |
@wiking | nono we do not have CRandom anymore | 12:38 |
@wiking | that's the point | 12:38 |
@HeikoS | random->enable_deterministic_test_mode() | 12:38 |
@HeikoS | yeah or the individual rngs | 12:39 |
@wiking | those are all std:: | 12:39 |
@wiking | we do not wrap them anymore | 12:39 |
@HeikoS | I see | 12:39 |
@wiking | that is the point | 12:39 |
@HeikoS | okok | 12:39 |
@HeikoS | then mock yes | 12:39 |
@wiking | because wrapping all the possible distrib | 12:39 |
@HeikoS | but thats not easy indeed | 12:39 |
@wiking | would be just cumbersome | 12:39 |
@HeikoS | I dont know then :( | 12:39 |
@HeikoS | it isnt possible to set the state of the std:: rng? | 12:40 |
@HeikoS | it is | 12:40 |
@HeikoS | but the transformations are not portable | 12:40 |
@HeikoS | thats the problem right? | 12:40 |
@wiking | yeah the prng is actually good | 12:40 |
@wiking | it's portable | 12:40 |
@wiking | the transforms aren't | 12:40 |
@HeikoS | what is the community suggestion to solve this? | 12:40 |
@wiking | none :) | 12:40 |
@HeikoS | and what platforms are outliers? | 12:40 |
@wiking | this is really depending on the actual | 12:41 |
@wiking | libstdc++ implementation | 12:41 |
@HeikoS | sigh | 12:41 |
@wiking | so gnu would have one | 12:41 |
@wiking | clang has it's own | 12:41 |
@wiking | msvc obviously | 12:41 |
@HeikoS | okok | 12:41 |
@wiking | but yeah as many libstdc++ | 12:41 |
@HeikoS | lets think more | 12:41 |
@HeikoS | this is just for testing | 12:41 |
@wiking | yes | 12:41 |
@HeikoS | unit testing of fixed seeds | 12:41 |
@wiking | well i mean in this case | 12:41 |
@HeikoS | so I mean we are not loosing any functionality or introduce bugs | 12:41 |
@wiking | it doesn't matter | 12:41 |
@wiking | if you fix the seed or not :P | 12:41 |
@wiking | nono | 12:42 |
@HeikoS | so why dont we disable the tests on non-gnu? | 12:42 |
@wiking | mmm because who knows :D | 12:42 |
@wiking | i mean we cannot be 100% certain | 12:42 |
@wiking | that this is the only difference | 12:42 |
@wiking | or gonna be ever | 12:42 |
@HeikoS | true | 12:42 |
@HeikoS | we still have other unit tests | 12:42 |
@HeikoS | for things that are not random | 12:42 |
@HeikoS | (like most things ) | 12:42 |
@wiking | yes | 12:42 |
@wiking | most of them are good | 12:42 |
@wiking | see the pr | 12:42 |
@wiking | only about 5 tests fail | 12:43 |
@wiking | or 6 | 12:43 |
@HeikoS | I think then we have to compromise | 12:43 |
@wiking | out of which most of them are actual meta tests | 12:43 |
@HeikoS | yeah the integration testing | 12:43 |
@HeikoS | so then we have to accept that that is not portable and rely on unit tests on those cases | 12:43 |
@HeikoS | travis still catches errors when someone fucks up an algorithm | 12:43 |
@HeikoS | but people with the "disabled test" os will have to rely on travis or buildbot, or something | 12:44 |
@HeikoS | not nice | 12:44 |
@HeikoS | but what can we do | 12:44 |
@HeikoS | lisitsyn: you there? | 12:44 |
@HeikoS | wiking: btw we can release bsd pretty soon I guess | 12:45 |
@wiking | HeikoS, that is awesomeo | 12:45 |
@wiking | question when | 12:45 |
@HeikoS | just needs lisitsyn to change the headers | 12:45 |
@wiking | do we wait end of aug | 12:45 |
@wiking | or before? | 12:45 |
@HeikoS | doesnt matter | 12:45 |
@wiking | k | 12:45 |
@HeikoS | next release | 12:45 |
@HeikoS | and develop as soon as its done | 12:45 |
@HeikoS | so with the headers | 12:45 |
@wiking | yeah ok... that is fine | 12:46 |
@HeikoS | need some sed magic that kills all the GPL ones in their different formats and stuff | 12:46 |
@HeikoS | and replaces with BSD with the authors from git history | 12:46 |
@HeikoS | my preference would be a "This is BSD3, see LICENSE.md" but I think that is borderline | 12:46 |
@HeikoS | https://github.com/SheffieldML/GPy/blob/devel/GPy/core/gp.py#L1 | 12:47 |
@wiking | mmm idk | 12:47 |
@HeikoS | but whatever | 12:47 |
@wiking | lets do the same thing as facebook | 12:47 |
@wiking | bsd + patent :D | 12:47 |
@wiking | that way anybody who uses shogun | 12:48 |
@wiking | we have their licenses :))) | 12:48 |
@wiking | and pattents | 12:48 |
@HeikoS | hahaha :D | 12:48 |
@wiking | *patents | 12:48 |
@wiking | joking | 12:48 |
@HeikoS | yes ok | 12:48 |
@HeikoS | so yeah all that is missing is those headers, and all the corner cases that go with that | 12:48 |
@HeikoS | and then a final grep GPL in the repository to check | 12:48 |
@HeikoS | and gogo | 12:48 |
@wiking | cool | 12:49 |
@wiking | btw how does sklearn handle this story of different randoms? | 12:49 |
@wiking | or they have some common random in py | 12:49 |
@wiking | ? | 12:49 |
@HeikoS | I think you can pass rng instances in there | 12:51 |
@HeikoS | by defaultl they use np.random | 12:51 |
@wiking | http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html | 12:51 |
@wiking | If int, random_state is the seed used by the random number generator; If RandomState instance, random_state is the random number generator; If None, the random number generator is the RandomState instance used by np.random. | 12:51 |
@wiking | ic | 12:51 |
@HeikoS | wiking: oh that reminds me | 12:52 |
@HeikoS | oli needs probability outputs for RF | 12:52 |
@HeikoS | and that is a nice c++ task for him | 12:52 |
@HeikoS | but I am not too sure how that works in the bagging machine setup | 12:52 |
@HeikoS | "The predicted class probabilities of an input sample are computed as the mean predicted class probabilities of the trees in the forest" | 12:52 |
@HeikoS | this is what skl does | 12:52 |
@HeikoS | wiking: is that, I just pass the MeanRule and all good? | 12:53 |
@wiking | i mean there are all those | 12:53 |
@wiking | CCombinationRule stuff | 12:54 |
@wiking | you can pass MeanRule instead of the MajorityVote | 12:54 |
@wiking | HeikoS, we use MeanRule for regression | 12:58 |
@wiking | but of course you can use that for classification as well | 12:58 |
@HeikoS | ok, I sent oli an email and explained this to hium | 12:59 |
@HeikoS | telling that he needs to dive into the code a bit and understand the dynamics in there | 12:59 |
@HeikoS | thx | 12:59 |
@wiking | rand_forest=RandomForest(feats_train,train_labels,20,1) | 13:05 |
@wiking | rand_forest.set_feature_types(ft) | 13:05 |
@wiking | rand_forest.set_machine_problem_type(PT_REGRESSION) | 13:05 |
@wiking | rand_forest.set_combination_rule(MeanRule()) | 13:05 |
@wiking | so you can still have rand_forest.set_combination_rule(MeanRule()) | 13:05 |
@wiking | for classification imo | 13:05 |
@HeikoS | ok cool | 13:06 |
@HeikoS | what would be even nicer | 13:06 |
@HeikoS | if you build a RF | 13:06 |
@HeikoS | that it automatically does that for you, i.e. the labels contain both the class labels as well as the averaged ones | 13:06 |
@HeikoS | like in SVM containing the distance and the label | 13:06 |
@HeikoS | Ill ask him to do so | 13:06 |
@wiking | ah | 13:07 |
@wiking | yeah that could be done imo easily | 13:07 |
Trixis | "SerializableXmlFile.java:34: error: cannot find symbol modshogunJNI.delete_SerializableXmlFile(swigCPtr)" build error :| | 14:31 |
-!- geektoni [~geektoni@93-34-128-40.ip49.fastwebnet.it] has joined #shogun | 15:06 | |
-!- HeikoS [~heiko@untrust-out.swc.ucl.ac.uk] has quit [Ping timeout: 248 seconds] | 15:07 | |
@wiking | Trixis, moooo | 15:10 |
Trixis | wiking: hey | 15:10 |
@wiking | Trixis, did u compile it with xml support? | 15:11 |
Trixis | turned xml off by accdient | 15:11 |
Trixis | recompiling now | 15:11 |
-!- wiking_ [~wiking@huwico/staff/wiking] has joined #shogun | 15:36 | |
-!- mode/#shogun [+o wiking_] by ChanServ | 15:36 | |
-!- wiking [~wiking@huwico/staff/wiking] has quit [Read error: Connection reset by peer] | 15:37 | |
-!- wiking_ is now known as wiking | 15:37 | |
-!- iglesiasg [~iglesiasg@217.119.234.214] has quit [Quit: leaving] | 15:38 | |
Trixis | wiking: "java.lang.UnsatisfiedLinkError: /homes/dhelekal/shogun/build/src/interfaces/java_modular/libmodshogun.so: /usr/lib64/libgomp.so.1: version `GOMP_4.0' not found (required by /homes/dhelekal/shogun/build/src/interfaces/java_modular/libmodshogun.so)" | 16:17 |
Trixis | still | 16:17 |
Trixis | even after i disabled all the libraries | 16:17 |
Trixis | wiking: whats weird is that the library you gave me, and the library i just compiled are linked to the same libgomp as per ldd "libgomp.so.1 => /sw/opt/gcc-4.9.3/lib64/libgomp.so.1 (0x00007f4943be2000)" | 16:24 |
@sukey | [https://github.com/shogun-toolbox/shogun] Issue https://github.com/shogun-toolbox/shogun/issues/3952 opened by lacava | 16:29 |
@sukey | [https://github.com/shogun-toolbox/shogun] Issue https://github.com/shogun-toolbox/shogun/issues/3952 | 16:29 |
@wiking | Trixis, ok so i read about it a bit | 16:49 |
@wiking | unfortunately there needs to be some additional stuff | 16:49 |
@wiking | that'll get you the libgomp.a into the shared lib | 16:50 |
@wiking | (libmodshogun.so) | 16:50 |
Trixis | wiking: also after running make install, i now have both libmodshogun.so and libshogun.so in ~/lib/shogun/cli | 16:51 |
@wiking | Trixis, https://stackoverflow.com/a/27689387 | 16:51 |
Trixis | hm | 16:53 |
Trixis | shit | 16:53 |
-!- olinguyen [81615ad9@gateway/web/freenode/ip.129.97.90.217] has joined #shogun | 16:58 | |
@wiking | hhehe yeah | 17:02 |
Trixis | wiking: also why did the one you gave me run without that? | 17:05 |
@wiking | :o | 17:06 |
@wiking | dunno really :D | 17:06 |
@wiking | what makes me really mad | 17:10 |
@wiking | that cmake does not do it for us | 17:10 |
Trixis | ye | 17:13 |
Trixis | i personally hate cmake (one of the reasons why i avoid c++ despite being able to write in it at an OK level) | 17:13 |
@wiking | use babel | 17:14 |
@wiking | no | 17:14 |
@wiking | what is that | 17:14 |
@wiking | bSOMETHING | 17:14 |
@wiking | from google | 17:14 |
@wiking | :D | 17:14 |
Trixis | babel is a cheminformatics toolkit, lol | 17:15 |
Trixis | wiking: one of the reasons why i prefer java, because maven makes builds easy... (and its not as slow as python) | 17:15 |
@wiking | buscar | 17:15 |
@wiking | bazel | 17:16 |
@wiking | :D | 17:16 |
@wiking | mmm | 17:16 |
@wiking | https://github.com/shogun-toolbox/shogun/issues/3952 | 17:16 |
@wiking | puzzled by this error | 17:16 |
@wiking | :D | 17:16 |
Trixis | wiking: the issue im getting seems to be something weird with the way the cluster is configured... | 17:51 |
Trixis | i tried running my program on the login node | 17:51 |
Trixis | works fine | 17:51 |
Trixis | (obviously i had to kill it right after the library got loaded) | 17:51 |
Trixis | (+ the login node has no computational power at all) | 17:51 |
-!- HeikoS [~heiko@host-92-0-169-11.as43234.net] has joined #shogun | 18:24 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 18:24 | |
Trixis | wiking: so yeah, i'm quite mad at our IT :\ | 18:46 |
-!- HeikoS [~heiko@host-92-0-169-11.as43234.net] has quit [Ping timeout: 240 seconds] | 19:00 | |
-!- olinguyen [81615ad9@gateway/web/freenode/ip.129.97.90.217] has quit [Quit: Page closed] | 19:20 | |
-!- geektoni [~geektoni@93-34-128-40.ip49.fastwebnet.it] has quit [Quit: Leaving.] | 19:34 | |
-!- geektoni [~geektoni@93-34-128-40.ip49.fastwebnet.it] has joined #shogun | 19:34 | |
-!- HeikoS [~heiko@host-92-0-169-11.as43234.net] has joined #shogun | 19:54 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 19:55 | |
-!- geektoni [~geektoni@93-34-128-40.ip49.fastwebnet.it] has quit [Ping timeout: 260 seconds] | 19:55 | |
-!- HeikoS [~heiko@host-92-0-169-11.as43234.net] has quit [Ping timeout: 255 seconds] | 20:04 | |
-!- olinguyen [81615ad9@gateway/web/freenode/ip.129.97.90.217] has joined #shogun | 20:10 | |
-!- HeikoS [~heiko@host-92-0-169-11.as43234.net] has joined #shogun | 21:45 | |
-!- mode/#shogun [+o HeikoS] by ChanServ | 21:45 | |
-!- HeikoS [~heiko@host-92-0-169-11.as43234.net] has quit [Ping timeout: 268 seconds] | 22:15 | |
-!- micmn [~micmn@ec2-54-67-24-92.us-west-1.compute.amazonaws.com] has quit [Ping timeout: 260 seconds] | 23:14 | |
-!- micmn [~micmn@ec2-54-67-24-92.us-west-1.compute.amazonaws.com] has joined #shogun | 23:15 | |
--- Log closed Wed Jul 26 00:00:11 2017 |
Generated by irclog2html.py 2.10.0 by Marius Gedminas - find it at mg.pov.lt!