[mlpack] Greetings and Some Question for MLPack

problemset problemset at 163.com
Thu Dec 27 07:33:27 EST 2018


Hi, Ryan,
Thank for your detailed reply. Now, I have a more clear mind to implement this part. 


Q1:  Currently, I think I will implement PER as individual class. I will look into the "policy-based-design" if I refactor this part of design.


Q2/3: Yes, exactly what I want to ask. 


Thanks,
Xiaohong

At 2018-12-27 02:46:33, "Ryan Curtin" <ryan at ratml.org> wrote:
>On Wed, Dec 26, 2018 at 11:07:48AM +0800, problemset wrote:
>> Hi Ryan and fellow Mlpack contributors,
>> 
>> Great to know this awesome community. I am Xiaohong Ji, undergraduate
>> student from Wuhan University. My research interest is machine
>> learning and deep reinforcement learning, so I am interested in
>> project reinforcement learning. Currently, I am going to implement the
>> prioritized experience replay and open a
>> [PR](https://github.com/mlpack/mlpack/pull/1614) in github. 
>
>Hi Xiaohong,
>
>I saw the PR that you opened.  Looking forward to watching it come
>together. :)
>
>> Due to a little bit unfamiliar with the codebase with this project,
>> here is some dumps question. Hope someone can help me to go though
>> them and thank you in advance.
>
>No problem---it can always be challenging to approach a new codebase, so
>I hope that the answers below are helpful.
>
>> 1: how to design class inherited from base class in mlpack ?
>> I'd like to implement PER inherited from RandomReplay, but most of
>> part attributes are private, should I redesign the structure?
>
>Actually there is no base class in mlpack.  So there is no need for
>inheritance.  Part of the reason for this is speed: the use of virtual
>functions in some cases can cause slowdowns.  For your case where you
>want to reuse functionality in RandomReplay, my suggestion might be to
>further templatize RandomReplay so that you can then have some template
>class that handles the PER-specific functionality.  That can reduce code
>duplication.
>
>The formal idea for this is called "policy-based design"; you can read
>more here:
>
>https://en.wikipedia.org/wiki/Policy-based_design
>
>In your case with PrioritizedReplay it might be simple enough (even
>though there is some code duplication) to just provide a new class
>unrelated to RandomReplay with the same API.
>
>> 2: how to build part of module, such as the reinforcement learning
>> part which I implement right now?
>> Test and build all the module maybe take a little bit long time.
>
>Right, mlpack_test can take a long time to build.  There are two ideas:
>
>1. Once you compile mlpack_test for the first time, then modify a little
>   code and rebuild, make should automatically only rebuild those files
>   that are needed.  So the second rebuild should be much faster.
>
>2. You could also comment out all the tests you don't care to build in
>   src/mlpack/tests/CMakeLists.txt, but that is a less pretty solution.
>   Sometimes that is what I do on my really underpowered ARM Chromebook
>   since the mlpack tests can take an hour or more to compile. :)
>
>> 3: how to make specific unit test, which I mean test the part which I
>> implement?
>> The reason is the same above.
>
>I'm not sure I understand this part; do you mean how to run a single
>unit test?  If you had a unit test suite named "MyTestSuite" you could
>run
>
>$ bin/mlpack_test -t MyTestSuite
>
>and that will only run the tests in that suite.
>
>> Finally,  Merry Christmas and Happy New Year.
>
>Thanks!  I hope your year end is going well and is relaxing also. :)
>
>-- 
>Ryan Curtin    | "She fell..."
>ryan at ratml.org |   - Ludvig
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://knife.lugatgt.org/pipermail/mlpack/attachments/20181227/17452c12/attachment.html>


More information about the mlpack mailing list