rcurtin_irc changed the topic of #mlpack to: mlpack: a scalable machine learning library (https://www.mlpack.org/) -- channel logs: https://libera.irclog.whitequark.org/mlpack -- NOTE: messages sent here might not be seen by bridged users on matrix, gitter, or slack
<zoq[m]1> <turska79turska79> "> <@turska79-5fa54a47d73408ce4ff..." <- That's why I ask what the target value should be because if you like to solve the pendulum task, there is no target vector, that is why we use the Empty loss function.
<zoq[m]1> zoq[m]1: So until I know what you are trying to solve I can't provide much input besides you don't need to explicitly set the target type, you can use `learningQ1Network.Backward(input, arma::mat("-1"), gradQ);`
<zoq[m]1> zoq[m]1: Also this is not completely correct because the target vector size has to match with the input vector size, so if the input vector is of size 2 the target should be `arma::mat("1 2")`
<jonpsy[m]> heyyy what's good?
<turska79turska79> im making snake game clone
<turska79turska79> for self educating
<turska79turska79> i was trying to use ready made code from mlpack and seems that i need to implement own version of SAC
<turska79turska79> input vector is about 30
<zoq[m]1> <jonpsy[m]> "heyyy what's good?" <- Hey, no major news here, we will soon send out an email asking for interest in GSoC mentoring.
<jonpsy[m]> Well, atleast someone replied :)
<jonpsy[m]> that sounds good, i wanted to ask about the topic for the next meet
<zoq[m]1> Sounds good maybe we can have a call next week before the meeting to discuss some ideas?
<jonpsy[m]> nothing too extensive, so I invited over couple of my friends for the next meet
<zoq[m]1> <turska79turska79> "input vector is about 30" <- Is there a reason to change the loss function to MSE?
<jonpsy[m]> so I'm trying to get them hooked for GSoC, but my main goal is set them up for open-source
<zoq[m]1> Nice, we can share some details and talk about our experience from both sides mentor and "student".
<jonpsy[m]> Sounds good, yes!
<jonpsy[m]> I wanted to stress about why open source mattetrs
<jonpsy[m]> because here, people care more for "cracking" GSoC rather than "experiencing" it
<zoq[m]1> Ohh yeah, I guess we can share some stories why open-source is important.
<zoq[m]1> So everyone keep your calendar free for the next Friday :)
<jonpsy[m]> Perfect, I'll try to make them attend this meeting :)
<rcurtin[m]> it's funny, the incentives of students and mentors actually don't quite align for GSoC---since GSoC is so prestigious and such a nice thing to have on a CV, students want to get accepted to use it as a 'springboard' to internships, grad school, and jobs; but mentors are often looking for long-term contributors and students who enjoy contributing to open source for its own sake
<rcurtin[m]> there are often lots of talks at the mentor summit about 'how to keep students engaged' and 'how to make students long-term contributors' and this type of thing
<rcurtin[m]> anyway, no deep thoughts there, just an observation 😄
<jonpsy[m]> Exactly the point I'm trying to confront. Want them to "experience" GSoC not "crack" it.
<zoq[m]1> Yeah, but I think you can both as well, participate for your CV and because you are interested in open-source.
<jonpsy[m]> To contribute, GSoC or otherwise.
<zoq[m]1> * you can do both as
<rcurtin[m]> agreed with zoq ; I think it's definitely possible to do both (and not every student needs to become a long-term contributor! personally I think the more important thing is that students get some exposure to large-scale software engineering and the concerns that go into code maintainability, code design, etc.)
<jonpsy[m]> The irony is, open-source library are more well maintained compared to company codes.
<rcurtin[m]> that has been my experience, yeah 😄
<rcurtin[m]> (on the other hand, open-source software projects generally have the luxury of taking however long they need to do things right---for instance, our ANN refactoring has been going on for a long time now!---but inside of a company, being slow can mean the death of the company if they can't get the software to market before they run out of funding)
<jonpsy[m]> Although true, I think having "well maintained, clean code" is at the top of their list in the first place.
<jonpsy[m]> * code" is not at the
<zoq[m]1> Also, not sure you can say that about each open-source or closed-source code.
<zoq[m]1> Windows is well maintained.
<jonpsy[m]> zoq[m]1: how do you know? :)))
<zoq[m]1> Well I guess depends on how we define maintained.
<zoq[m]1> But they release security patches and improve it over time.
<rcurtin[m]> Microsoft is also not desperately trying to find product-market fit before they run out of VC money, admittedly 😄
<kuries[m]> Hey, so I was trying to remove the boost::heap in this [issue](https://github.com/mlpack/mlpack/issues/3095) and I realised that the priority_queue in STL dosen't have an iterator which is necessary for this part of [code](https://github.com/mlpack/mlpack/blob/master/src/mlpack/core/tree/cosine_tree/cosine_tree.cpp#L380).
<kuries[m]> I've tried looking at other alternatives like using a vector with functions push_heap and pop_heap to maintain the heap structure like the one mentioned [here](https://stackoverflow.com/questions/22368627/iterate-and-modify-c-priority-queue), but we wont get them in order if we simply traverse it.
<kuries[m]> So, if we want to get the elements in order we might have to empty the whole priority_queue and insert it again which can be computationally heavy 😅.
<kuries[m]> Can anyone give some suggestions or advice on this?
<kuries[m]> > <@kuries:matrix.org> Hey, so I was trying to remove the boost::heap in this [issue](https://github.com/mlpack/mlpack/issues/3095) and I realised that the priority_queue in STL dosen't have an iterator which is necessary for this part of [code](https://github.com/mlpack/mlpack/blob/master/src/mlpack/core/tree/cosine_tree... (full message at https://libera.ems.host/_matrix/media/r0/download/libera.chat/7232c598be08a0853de998f4939e7c9931362f65)
<rcurtin[m]> Binesh Munukurthi: no worries! couldn't you just use `top()` and `pop()` to get the elements in order? maybe I overlooked something
<kuries[m]> But then we'll have to send the priority queue (treeQueue) as a copy into the function instead of a reference since it affects the original one, right?
<rcurtin[m]> oh, I see, interesting, let me think ...
<kuries[m]> also in the previous case, we used to access all the elements in O(n) time but by popping all the elements it will lead to O(nlogn) time
<kuries[m]> s/time/./
<rcurtin[m]> yeah, true (although I wouldn't expect that to be a noticeable performance hit)
<rcurtin[m]> I suppose this is the reason we went with boost's implementation in the first place 😄
<rcurtin[m]> it seems like the best solution here may unfortunately be a little tedious if the STL isn't providing the kind of data structure that we need
<rcurtin[m]> you *could* use `std::map` here, and I think it would be fine---you'd need to just make sure that the elements sort by priority
<rcurtin[m]> that may incur some extra O(log N) overhead for some operations, but I don't think it's so huge an issue (I'm also not sure anyone has ever complained about the runtime of the cosine tree)
<kuries[m]> Can we use `std::set` here instead since we are only dealing with single elements?
<rcurtin[m]> yeah, I suppose so---all you need is a sorted iterable structure
<kuries[m]> I was mostly fixated on how to use the priority queue in STL and didn't think much about the other data structures.
<kuries[m]> Thanks for the help! 👍️
<rcurtin[m]> sure! 👍️
<turska79turska79> Thanks a lot for your input