Hello Konstantin,

thanks for getting back.

> Since we have to make several different augmented RNN models, I think it is a
> good idea to make a namespace mlpacK::ann::augmented and a class BaseAugmented
> (will be useful for benchmarking later).

Putting different networks under a unified namespace is a good idea. Regarding
the BaseAugmented class, we should avoid inheritance (or, at least, virtual
inheritance) in deference to templates. This is because virtual functions incur
runtime overhead. In this case I don't see a compelling reason to introduce a
BaseAugmented class, maybe I missed something? We could do:

Code:
=====

class CopyTask
{
  template<typename ModelType>
  void Evaluate(ModelType& model)
  {
    // Call model.Train() using the generated copy task data.
    // Call model.Evaluate
  }
}

Usage:
======

NTM ntm;
CopyTask.Evaluate(ntm);

What do you think about the design?

> P.S. Some questions that arose while trying to get in grips with mlpack:
> - What resources can you advice to brush up *advanced/modern* C++? (e.g., 
> templates, && in functions)

There are some really nice books that might help to refresh your knowledge:

- "Modern C++ Design, Generic Programming and Design Patterns Applied" by 
Andrei Alexandrescu
- "Effective C++" by Scott Meyers
- "Effective STL" by Scott Meyers

There are also some references on http://mlpack.org/gsoc.html

> - Can you show me the working example of mlpack::ann::FFN compatible with
> current upstream C++ API?

Not sure what you mean, can you elaborate more?

I hope this is helpful, let us know if you have any more questions.

Thanks,
Marcus

> On 5 Mar 2017, at 10:12, Сидоров Константин <[email protected]> wrote:
> 
> Hello Marcus!
> Right now, I'm thinking quite a lot on "Augmented RNNs" project. For example, 
> I'm trying to convert ideas from project description to something more 
> concrete and mlpack-specific. Here is my first shot at C++ API for NTM.
> Disclaimer: I haven't written on C++ for ~10 months. My last experience of 
> C++ coding is our (Russian) national programming olympiad (April '16), after 
> which I've been coding almost exclusively on Python.
> Since we have to make several different augmented RNN models, I think it is a 
> good idea to make a namespace mlpacK::ann::augmented and a class 
> BaseAugmented (will be useful for benchmarking later).
> Inside it, we can define class NTM< OutputLayerType, InitializationRuleType > 
> : BaseAugmented with standard mlpack interface:
> - template<typename NetworkType, typename Lambda> NTM(NetworkType controller, 
> arma::mat &memory, Lambda similarity)
> - Predict (arma::mat &predictors, arma::mat &responses)
> - Train (const arma::mat &predictors, const arma::mat &responses)
> For benchmarking, we can define class mlpack::ann:augmented::BaseBenchmark 
> with interface:
> - BaseBenchmark() = 0
> - Evaluate() = 0 (the method that will accept task parameters as arguments 
> and run the augmented model)
> As an example, an API of CopyBenchmark : BaseBenchmark:
> - CopyBenchmark()
> - Evaluate(BaseAugmented model, int maxLength = 5, int repeats = 1) // 
> repeats is a parameter to convert copy to repeat-copy task.
> So, that's some kind of API. I would be interested to discuss and analyze it 
> with you.
>  
> P.S. Some questions that arose while trying to get in grips with mlpack:
> - What resources can you advice to brush up *advanced/modern* C++? (e.g., 
> templates, && in functions)
> - Can you show me the working example of mlpack::ann::FFN compatible with 
> current upstream C++ API?
>  
> 28.02.2017, 16:43, "Marcus Edel" <[email protected] 
> <mailto:[email protected]>>:
>> Hello Konstantin,
>>  
>>  
>>> My name is Konstantin Sidorov, and I am an undergraduate student in 
>>> Astrakhan
>>> State University (Russia). I’m glad to know that mlpack was accepted in 
>>> GSoC’17
>>> – as a side note, congratulations :)
>>  
>> thanks and welcome!
>>  
>>  
>>> I’m already fairly familiar with deep learning. For example, recently I
>>> implemented optimality tightening from “Learning to play in a day”
>>> (https://arxiv.org/abs/1611.01606 <https://arxiv.org/abs/1611.01606>) for 
>>> the AgentNet (“Deep Reinforcement
>>> Learning library for humans”, https://github.com/yandexdataschool/AgentNet 
>>> <https://github.com/yandexdataschool/AgentNet>).
>>  
>> Sounds really interesting, the "Learning to Play in a Day" paper is on my
>> reading list, looks like I should move it up.
>>  
>>  
>>> Of course, on such an early stage I have no detailed plan what (and how) to 
>>> do –
>>> only some ideas. In the beginning, for example, I’m planning to implement 
>>> NTMs
>>> as described in arXiv paper and implement *reusable* benchmarking code 
>>> (e.g.,
>>> copy, repeat copy, n-grams). I would like to discuss this project more
>>> thoroughly if possible. In addition, this is my first participation in 
>>> GSoC. So,
>>> excuse me in advance if I’ve done something inappropriate.
>>  
>> Implementing the NTM task from the paper, so that they can be used for other
>> models as well is a great idea. In fact, you see a lot of other papers that 
>> at
>> least reuse the copy task. There are a bunch of other interesting tasks that
>> could be implemented like the MNIST pen stroke classification task recently
>> introduced by Edwin D. de Jong in his "Incremental Sequence Learning" paper. 
>> The
>> Stanford Natural Language Inference task proposed by Samuel R. Bowman et al. 
>> in
>> "A large annotated corpus for learning natural language inference" can be 
>> also
>> transformed into a long-term dependency task, that might be interesting.
>>  
>> Regarding the project itself, take a look at other models as well, depending 
>> on
>> the model you choose, I think there is some time left for another model. 
>> Also,
>> about the implementation, mlpack's architecture is kinda different to 
>> Theano's
>> graph construction and compilation work, but if you managed to work with 
>> Theano
>> you shouldn't have a problem.
>>  
>> If you like we can discuss any details over the mailing list and brainstorm 
>> some
>> ideas, discuss an initial class design, etc.
>>  
>> I hope this is helpful, let us know if you have any more questions.
>>  
>> Thanks,
>> Marcus
>>  
>>> On 28 Feb 2017, at 07:06, Сидоров Константин <[email protected] 
>>> <mailto:[email protected]>> wrote:
>>>  
>>> Hello Marcus,
>>> My name is Konstantin Sidorov, and I am an undergraduate student in 
>>> Astrakhan State University (Russia). I’m glad to know that mlpack was 
>>> accepted in GSoC’17 – as a side note, congratulations :)
>>> I’m interested to work on project “Augmented Recurrent Neural Networks”. 
>>> I’m already fairly familiar with deep learning. For example, recently I 
>>> implemented optimality tightening from “Learning to play in a day” 
>>> (https://arxiv.org/abs/1611.01606 <https://arxiv.org/abs/1611.01606>) for 
>>> the AgentNet (“Deep Reinforcement Learning library for humans”, 
>>> https://github.com/yandexdataschool/AgentNet 
>>> <https://github.com/yandexdataschool/AgentNet>). Here is the merged pull 
>>> request: https://github.com/yandexdataschool/AgentNet/pull/88 
>>> <https://github.com/yandexdataschool/AgentNet/pull/88>.
>>> As you see, I’m quite familiar with deep learning and Theano. Even though 
>>> my main field of interest is RL, I would be very interested in doing 
>>> something new – that is why I’ve chosen “Augmented RNNs”.
>>> Of course, on such an early stage I have no detailed plan what (and how) to 
>>> do – only some ideas. In the beginning, for example, I’m planning to 
>>> implement NTMs as described in arXiv paper and implement *reusable* 
>>> benchmarking code (e.g., copy, repeat copy, n-grams).
>>> I would like to discuss this project more thoroughly if possible. In 
>>> addition, this is my first participation in GSoC. So, excuse me in advance 
>>> if I’ve done something inappropriate.
>>> ---
>>> Best Regards,
>>> Konstantin.
>>> _______________________________________________
>>> mlpack mailing list
>>> [email protected] <mailto:[email protected]>
>>> http://knife.lugatgt.org/cgi-bin/mailman/listinfo/mlpack 
>>> <http://knife.lugatgt.org/cgi-bin/mailman/listinfo/mlpack> 
>  
> --
> Best Regards,
> Konstantin.

_______________________________________________
mlpack mailing list
[email protected]
http://knife.lugatgt.org/cgi-bin/mailman/listinfo/mlpack

Reply via email to