Implement ddpg
General updates:
- Update the version to 0.2.1-SNAPSHOT
- Add Deep Deterministic Policy Gradient (DDPG) support: Update CNNTrain to 0.3.2-SNAPSHOT and implement the language extensions that came with monticore/EmbeddedMontiArc/languages/CNNTrainLang!16 (merged) and monticore/EmbeddedMontiArc/languages/CNNTrainLang!17 (merged)
- Update CNNArch2MXNet to 0.2.15-SNAPSHOT (implement the changes that came with merge CNNArch2MXNet!25 (merged) )
- Adapt all tests to the new templates and add new tests
Changes to CNNTrain2Gluon:
- Add generation method where an architecture symbol can be passed to the train generator
- Require an architecture symbol when the training configuration is a reinforcement learning configuration
- If configuration symbol is a reinforcement configuration with DDPG algorithm, the train generator has to generate a critic network based on a CNN architecture definition file. The class CriticNetworkGenerator is added. This class provides an interface to generate such a critic network.
- Rework reinforcement learning templates (refactoring, improvements in logging and reusability, etc.)
- DDPG Agent class is added to Agent.ftl template
- Add ArchitectureAdapter that is a concrete implementation of the TrainedArchitecture interface defined by CNNTrain. It allows a more convenient access to the architecture symbol.
- Replay memory supports multi-dimensional actions
Changes to CNNArch2Gluon:
- Add methods that allow the generation of CNN architectures with multiple inputs (only for python template files)
- Support multiple architecture port inputs in python templates CNNCreator and CNNNet
- Add possibility to generate only python files or only cpp files