Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
E
EMADL2CPP
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
2
Issues
2
List
Boards
Labels
Service Desk
Milestones
Iterations
Merge Requests
0
Merge Requests
0
Requirements
Requirements
List
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Test Cases
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issue
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
monticore
EmbeddedMontiArc
generators
EMADL2CPP
Commits
3a697803
Commit
3a697803
authored
Aug 12, 2019
by
Evgeny Kusmenko
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'release-candidate' into 'master'
Integrates new Version of CNNArch2Gluon See merge request
!24
parents
16023357
8a07e768
Pipeline
#170788
passed with stages
in 10 minutes and 6 seconds
Changes
158
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
158 changed files
with
16537 additions
and
247 deletions
+16537
-247
.gitignore
.gitignore
+2
-2
.gitlab-ci.yml
.gitlab-ci.yml
+13
-3
.vscode/launch.json
.vscode/launch.json
+0
-11
pom.xml
pom.xml
+13
-6
src/main/java/de/monticore/lang/monticar/emadl/generator/Backend.java
...a/de/monticore/lang/monticar/emadl/generator/Backend.java
+4
-3
src/main/java/de/monticore/lang/monticar/emadl/generator/EMADLGenerator.java
...nticore/lang/monticar/emadl/generator/EMADLGenerator.java
+99
-27
src/main/java/de/monticore/lang/monticar/emadl/generator/EMADLGeneratorCli.java
...core/lang/monticar/emadl/generator/EMADLGeneratorCli.java
+1
-1
src/main/java/de/monticore/lang/monticar/emadl/generator/reinforcementlearning/RewardFunctionCppGenerator.java
...tor/reinforcementlearning/RewardFunctionCppGenerator.java
+58
-0
src/test/java/de/monticore/lang/monticar/emadl/GenerationTest.java
...java/de/monticore/lang/monticar/emadl/GenerationTest.java
+84
-3
src/test/java/de/monticore/lang/monticar/emadl/IntegrationCaffe2Test.java
.../monticore/lang/monticar/emadl/IntegrationCaffe2Test.java
+3
-19
src/test/java/de/monticore/lang/monticar/emadl/IntegrationGluonTest.java
...e/monticore/lang/monticar/emadl/IntegrationGluonTest.java
+40
-0
src/test/java/de/monticore/lang/monticar/emadl/IntegrationMXNetTest.java
...e/monticore/lang/monticar/emadl/IntegrationMXNetTest.java
+1
-18
src/test/java/de/monticore/lang/monticar/emadl/IntegrationPythonWrapperTest.java
...ore/lang/monticar/emadl/IntegrationPythonWrapperTest.java
+73
-0
src/test/java/de/monticore/lang/monticar/emadl/IntegrationTest.java
...ava/de/monticore/lang/monticar/emadl/IntegrationTest.java
+2
-4
src/test/resources/models/Alexnet.emadl
src/test/resources/models/Alexnet.emadl
+1
-1
src/test/resources/models/InstanceTest/NetworkB.emadl
src/test/resources/models/InstanceTest/NetworkB.emadl
+1
-1
src/test/resources/models/InvalidLayerInput.emadl
src/test/resources/models/InvalidLayerInput.emadl
+1
-1
src/test/resources/models/Invariant.cnnt
src/test/resources/models/Invariant.cnnt
+11
-0
src/test/resources/models/Invariant.emadl
src/test/resources/models/Invariant.emadl
+19
-0
src/test/resources/models/MultipleInputs.cnnt
src/test/resources/models/MultipleInputs.cnnt
+11
-0
src/test/resources/models/MultipleInputs.emadl
src/test/resources/models/MultipleInputs.emadl
+24
-0
src/test/resources/models/MultipleOutputs.cnnt
src/test/resources/models/MultipleOutputs.cnnt
+9
-9
src/test/resources/models/MultipleOutputs.emadl
src/test/resources/models/MultipleOutputs.emadl
+8
-17
src/test/resources/models/MultipleOutputsOld.cnnt
src/test/resources/models/MultipleOutputsOld.cnnt
+11
-0
src/test/resources/models/MultipleOutputsOld.emadl
src/test/resources/models/MultipleOutputsOld.emadl
+29
-0
src/test/resources/models/MultipleStreams.cnnt
src/test/resources/models/MultipleStreams.cnnt
+11
-0
src/test/resources/models/MultipleStreams.emadl
src/test/resources/models/MultipleStreams.emadl
+24
-0
src/test/resources/models/ResNeXt50.emadl
src/test/resources/models/ResNeXt50.emadl
+1
-1
src/test/resources/models/ResNet152.emadl
src/test/resources/models/ResNet152.emadl
+1
-1
src/test/resources/models/ResNet34.emadl
src/test/resources/models/ResNet34.emadl
+1
-1
src/test/resources/models/ThreeInputCNN_M14.emadl
src/test/resources/models/ThreeInputCNN_M14.emadl
+1
-1
src/test/resources/models/VGG16.emadl
src/test/resources/models/VGG16.emadl
+1
-1
src/test/resources/models/cNNCalculator/Network.emadl
src/test/resources/models/cNNCalculator/Network.emadl
+1
-1
src/test/resources/models/cifar10/CifarNetwork.emadl
src/test/resources/models/cifar10/CifarNetwork.emadl
+1
-1
src/test/resources/models/data_paths.txt
src/test/resources/models/data_paths.txt
+8
-6
src/test/resources/models/instanceTestCifar/CifarNetwork.emadl
...est/resources/models/instanceTestCifar/CifarNetwork.emadl
+1
-1
src/test/resources/models/mnist/LeNetNetwork.emadl
src/test/resources/models/mnist/LeNetNetwork.emadl
+1
-1
src/test/resources/models/reinforcementModel/cartpole/Master.emadl
...resources/models/reinforcementModel/cartpole/Master.emadl
+17
-0
src/test/resources/models/reinforcementModel/cartpole/Master.tag
...t/resources/models/reinforcementModel/cartpole/Master.tag
+7
-0
src/test/resources/models/reinforcementModel/cartpole/agent/CartPoleDQN.cnnt
...models/reinforcementModel/cartpole/agent/CartPoleDQN.cnnt
+37
-0
src/test/resources/models/reinforcementModel/cartpole/agent/CartPoleDQN.emadl
...odels/reinforcementModel/cartpole/agent/CartPoleDQN.emadl
+17
-0
src/test/resources/models/reinforcementModel/cartpole/agent/Reward.emadl
...ces/models/reinforcementModel/cartpole/agent/Reward.emadl
+16
-0
src/test/resources/models/reinforcementModel/cartpole/policy/Greedy.emadl
...es/models/reinforcementModel/cartpole/policy/Greedy.emadl
+21
-0
src/test/resources/models/reinforcementModel/mountaincar/Master.emadl
...ources/models/reinforcementModel/mountaincar/Master.emadl
+14
-0
src/test/resources/models/reinforcementModel/mountaincar/agent/MountaincarActor.cnnt
...einforcementModel/mountaincar/agent/MountaincarActor.cnnt
+39
-0
src/test/resources/models/reinforcementModel/mountaincar/agent/MountaincarActor.emadl
...inforcementModel/mountaincar/agent/MountaincarActor.emadl
+18
-0
src/test/resources/models/reinforcementModel/mountaincar/agent/MountaincarCritic.emadl
...nforcementModel/mountaincar/agent/MountaincarCritic.emadl
+24
-0
src/test/resources/models/reinforcementModel/torcs/agent/TorcsAgent.emadl
...es/models/reinforcementModel/torcs/agent/TorcsAgent.emadl
+17
-0
src/test/resources/models/reinforcementModel/torcs/agent/TorcsAgent.tag
...rces/models/reinforcementModel/torcs/agent/TorcsAgent.tag
+7
-0
src/test/resources/models/reinforcementModel/torcs/agent/dqn/Reward.emadl
...es/models/reinforcementModel/torcs/agent/dqn/Reward.emadl
+14
-0
src/test/resources/models/reinforcementModel/torcs/agent/dqn/TorcsDQN.cnnt
...s/models/reinforcementModel/torcs/agent/dqn/TorcsDQN.cnnt
+43
-0
src/test/resources/models/reinforcementModel/torcs/agent/dqn/TorcsDQN.emadl
.../models/reinforcementModel/torcs/agent/dqn/TorcsDQN.emadl
+17
-0
src/test/resources/models/reinforcementModel/torcs/agent/policy/GreedyDiscreteActionPolicy.emadl
...Model/torcs/agent/policy/GreedyDiscreteActionPolicy.emadl
+21
-0
src/test/resources/models/simpleCifar10/CifarNetwork.emadl
src/test/resources/models/simpleCifar10/CifarNetwork.emadl
+1
-1
src/test/resources/target_code/CNNCreator_cifar10_cifar10Classifier_net.py
...s/target_code/CNNCreator_cifar10_cifar10Classifier_net.py
+89
-5
src/test/resources/target_code/CNNPredictor_cifar10_cifar10Classifier_net.h
.../target_code/CNNPredictor_cifar10_cifar10Classifier_net.h
+4
-4
src/test/resources/target_code/CNNPredictor_mnist_mnistClassifier_net.h
...rces/target_code/CNNPredictor_mnist_mnistClassifier_net.h
+3
-3
src/test/resources/target_code/cifar10_cifar10Classifier_net.h
...est/resources/target_code/cifar10_cifar10Classifier_net.h
+2
-2
src/test/resources/target_code/gluon/CNNCreator_mnist_mnistClassifier_net.py
...target_code/gluon/CNNCreator_mnist_mnistClassifier_net.py
+41
-35
src/test/resources/target_code/gluon/CNNDataLoader_mnist_mnistClassifier_net.py
...get_code/gluon/CNNDataLoader_mnist_mnistClassifier_net.py
+58
-22
src/test/resources/target_code/gluon/CNNNet_mnist_mnistClassifier_net.py
...ces/target_code/gluon/CNNNet_mnist_mnistClassifier_net.py
+26
-11
src/test/resources/target_code/gluon/CNNPredictor_mnist_mnistClassifier_net.h
...arget_code/gluon/CNNPredictor_mnist_mnistClassifier_net.h
+13
-15
src/test/resources/target_code/gluon/CNNSupervisedTrainer_mnist_mnistClassifier_net.py
...e/gluon/CNNSupervisedTrainer_mnist_mnistClassifier_net.py
+213
-0
src/test/resources/target_code/gluon/CNNTrainer_mnist_mnistClassifier_net.py
...target_code/gluon/CNNTrainer_mnist_mnistClassifier_net.py
+6
-4
src/test/resources/target_code/gluon/mnist_mnistClassifier_net.h
...t/resources/target_code/gluon/mnist_mnistClassifier_net.h
+2
-2
src/test/resources/target_code/gluon/reinforcementModel/cartpole/CMakeLists.txt
...get_code/gluon/reinforcementModel/cartpole/CMakeLists.txt
+27
-0
src/test/resources/target_code/gluon/reinforcementModel/cartpole/CNNBufferFile.h
...et_code/gluon/reinforcementModel/cartpole/CNNBufferFile.h
+51
-0
src/test/resources/target_code/gluon/reinforcementModel/cartpole/CNNCreator_cartpole_master_dqn.py
...forcementModel/cartpole/CNNCreator_cartpole_master_dqn.py
+59
-0
src/test/resources/target_code/gluon/reinforcementModel/cartpole/CNNDataLoader_cartpole_master_dqn.py
...cementModel/cartpole/CNNDataLoader_cartpole_master_dqn.py
+93
-0
src/test/resources/target_code/gluon/reinforcementModel/cartpole/CNNNet_cartpole_master_dqn.py
...reinforcementModel/cartpole/CNNNet_cartpole_master_dqn.py
+116
-0
src/test/resources/target_code/gluon/reinforcementModel/cartpole/CNNPredictor_cartpole_master_dqn.h
...orcementModel/cartpole/CNNPredictor_cartpole_master_dqn.h
+107
-0
src/test/resources/target_code/gluon/reinforcementModel/cartpole/CNNTrainer_cartpole_master_dqn.py
...forcementModel/cartpole/CNNTrainer_cartpole_master_dqn.py
+111
-0
src/test/resources/target_code/gluon/reinforcementModel/cartpole/CNNTranslator.h
...et_code/gluon/reinforcementModel/cartpole/CNNTranslator.h
+127
-0
src/test/resources/target_code/gluon/reinforcementModel/cartpole/HelperA.h
...s/target_code/gluon/reinforcementModel/cartpole/HelperA.h
+141
-0
src/test/resources/target_code/gluon/reinforcementModel/cartpole/cartpole_master.cpp
...ode/gluon/reinforcementModel/cartpole/cartpole_master.cpp
+1
-0
src/test/resources/target_code/gluon/reinforcementModel/cartpole/cartpole_master.h
..._code/gluon/reinforcementModel/cartpole/cartpole_master.h
+32
-0
src/test/resources/target_code/gluon/reinforcementModel/cartpole/cartpole_master_dqn.h
...e/gluon/reinforcementModel/cartpole/cartpole_master_dqn.h
+31
-0
src/test/resources/target_code/gluon/reinforcementModel/cartpole/cartpole_master_policy.h
...luon/reinforcementModel/cartpole/cartpole_master_policy.h
+30
-0
src/test/resources/target_code/gluon/reinforcementModel/cartpole/cmake/FindArmadillo.cmake
...uon/reinforcementModel/cartpole/cmake/FindArmadillo.cmake
+38
-0
src/test/resources/target_code/gluon/reinforcementModel/cartpole/reinforcement_learning/__init__.py
...orcementModel/cartpole/reinforcement_learning/__init__.py
+0
-0
src/test/resources/target_code/gluon/reinforcementModel/cartpole/reinforcement_learning/agent.py
...inforcementModel/cartpole/reinforcement_learning/agent.py
+1269
-0
src/test/resources/target_code/gluon/reinforcementModel/cartpole/reinforcement_learning/cnnarch_logger.py
...ntModel/cartpole/reinforcement_learning/cnnarch_logger.py
+95
-0
src/test/resources/target_code/gluon/reinforcementModel/cartpole/reinforcement_learning/environment.py
...ementModel/cartpole/reinforcement_learning/environment.py
+64
-0
src/test/resources/target_code/gluon/reinforcementModel/cartpole/reinforcement_learning/replay_memory.py
...entModel/cartpole/reinforcement_learning/replay_memory.py
+208
-0
src/test/resources/target_code/gluon/reinforcementModel/cartpole/reinforcement_learning/strategy.py
...orcementModel/cartpole/reinforcement_learning/strategy.py
+218
-0
src/test/resources/target_code/gluon/reinforcementModel/cartpole/reinforcement_learning/util.py
...einforcementModel/cartpole/reinforcement_learning/util.py
+300
-0
src/test/resources/target_code/gluon/reinforcementModel/cartpole/start_training.sh
..._code/gluon/reinforcementModel/cartpole/start_training.sh
+2
-0
src/test/resources/target_code/gluon/reinforcementModel/mountaincar/CMakeLists.txt
..._code/gluon/reinforcementModel/mountaincar/CMakeLists.txt
+27
-0
src/test/resources/target_code/gluon/reinforcementModel/mountaincar/CNNBufferFile.h
...code/gluon/reinforcementModel/mountaincar/CNNBufferFile.h
+51
-0
src/test/resources/target_code/gluon/reinforcementModel/mountaincar/CNNCreator_mountaincar_master_actor.py
...tModel/mountaincar/CNNCreator_mountaincar_master_actor.py
+59
-0
src/test/resources/target_code/gluon/reinforcementModel/mountaincar/CNNDataLoader_mountaincar_master_actor.py
...del/mountaincar/CNNDataLoader_mountaincar_master_actor.py
+93
-0
src/test/resources/target_code/gluon/reinforcementModel/mountaincar/CNNNet_mountaincar_master_actor.py
...ementModel/mountaincar/CNNNet_mountaincar_master_actor.py
+118
-0
src/test/resources/target_code/gluon/reinforcementModel/mountaincar/CNNPredictor_mountaincar_master_actor.h
...Model/mountaincar/CNNPredictor_mountaincar_master_actor.h
+107
-0
src/test/resources/target_code/gluon/reinforcementModel/mountaincar/CNNTrainer_mountaincar_master_actor.py
...tModel/mountaincar/CNNTrainer_mountaincar_master_actor.py
+119
-0
src/test/resources/target_code/gluon/reinforcementModel/mountaincar/CNNTranslator.h
...code/gluon/reinforcementModel/mountaincar/CNNTranslator.h
+127
-0
src/test/resources/target_code/gluon/reinforcementModel/mountaincar/HelperA.h
...arget_code/gluon/reinforcementModel/mountaincar/HelperA.h
+141
-0
src/test/resources/target_code/gluon/reinforcementModel/mountaincar/cmake/FindArmadillo.cmake
.../reinforcementModel/mountaincar/cmake/FindArmadillo.cmake
+38
-0
src/test/resources/target_code/gluon/reinforcementModel/mountaincar/mountaincar_master.cpp
...uon/reinforcementModel/mountaincar/mountaincar_master.cpp
+1
-0
src/test/resources/target_code/gluon/reinforcementModel/mountaincar/mountaincar_master.h
...gluon/reinforcementModel/mountaincar/mountaincar_master.h
+28
-0
src/test/resources/target_code/gluon/reinforcementModel/mountaincar/mountaincar_master_actor.h
...reinforcementModel/mountaincar/mountaincar_master_actor.h
+31
-0
src/test/resources/target_code/gluon/reinforcementModel/mountaincar/reinforcement_learning/CNNCreator_mountaincar_agent_mountaincarCritic.py
...earning/CNNCreator_mountaincar_agent_mountaincarCritic.py
+59
-0
src/test/resources/target_code/gluon/reinforcementModel/mountaincar/reinforcement_learning/CNNNet_mountaincar_agent_mountaincarCritic.py
...nt_learning/CNNNet_mountaincar_agent_mountaincarCritic.py
+129
-0
src/test/resources/target_code/gluon/reinforcementModel/mountaincar/reinforcement_learning/__init__.py
...ementModel/mountaincar/reinforcement_learning/__init__.py
+0
-0
src/test/resources/target_code/gluon/reinforcementModel/mountaincar/reinforcement_learning/agent.py
...orcementModel/mountaincar/reinforcement_learning/agent.py
+1269
-0
src/test/resources/target_code/gluon/reinforcementModel/mountaincar/reinforcement_learning/cnnarch_logger.py
...odel/mountaincar/reinforcement_learning/cnnarch_logger.py
+95
-0
src/test/resources/target_code/gluon/reinforcementModel/mountaincar/reinforcement_learning/environment.py
...ntModel/mountaincar/reinforcement_learning/environment.py
+64
-0
src/test/resources/target_code/gluon/reinforcementModel/mountaincar/reinforcement_learning/replay_memory.py
...Model/mountaincar/reinforcement_learning/replay_memory.py
+208
-0
src/test/resources/target_code/gluon/reinforcementModel/mountaincar/reinforcement_learning/strategy.py
...ementModel/mountaincar/reinforcement_learning/strategy.py
+218
-0
src/test/resources/target_code/gluon/reinforcementModel/mountaincar/reinforcement_learning/util.py
...forcementModel/mountaincar/reinforcement_learning/util.py
+300
-0
src/test/resources/target_code/gluon/reinforcementModel/mountaincar/start_training.sh
...de/gluon/reinforcementModel/mountaincar/start_training.sh
+2
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/CMakeLists.txt
...target_code/gluon/reinforcementModel/torcs/CMakeLists.txt
+27
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/CNNBufferFile.h
...arget_code/gluon/reinforcementModel/torcs/CNNBufferFile.h
+51
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/CNNCreator_torcs_agent_torcsAgent_dqn.py
...ementModel/torcs/CNNCreator_torcs_agent_torcsAgent_dqn.py
+59
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/CNNDataLoader_torcs_agent_torcsAgent_dqn.py
...ntModel/torcs/CNNDataLoader_torcs_agent_torcsAgent_dqn.py
+93
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/CNNNet_torcs_agent_torcsAgent_dqn.py
...forcementModel/torcs/CNNNet_torcs_agent_torcsAgent_dqn.py
+116
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/CNNPredictor_torcs_agent_torcsAgent_dqn.h
...mentModel/torcs/CNNPredictor_torcs_agent_torcsAgent_dqn.h
+107
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/CNNTrainer_torcs_agent_torcsAgent_dqn.py
...ementModel/torcs/CNNTrainer_torcs_agent_torcsAgent_dqn.py
+117
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/CNNTranslator.h
...arget_code/gluon/reinforcementModel/torcs/CNNTranslator.h
+127
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/HelperA.h
...rces/target_code/gluon/reinforcementModel/torcs/HelperA.h
+141
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/cmake/FindArmadillo.cmake
.../gluon/reinforcementModel/torcs/cmake/FindArmadillo.cmake
+38
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/reinforcement_learning/__init__.py
...inforcementModel/torcs/reinforcement_learning/__init__.py
+0
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/reinforcement_learning/_torcs_agent_dqn_reward_executor.so
...einforcement_learning/_torcs_agent_dqn_reward_executor.so
+0
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/reinforcement_learning/agent.py
.../reinforcementModel/torcs/reinforcement_learning/agent.py
+1269
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/reinforcement_learning/cnnarch_logger.py
...ementModel/torcs/reinforcement_learning/cnnarch_logger.py
+95
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/reinforcement_learning/environment.py
...orcementModel/torcs/reinforcement_learning/environment.py
+149
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/reinforcement_learning/replay_memory.py
...cementModel/torcs/reinforcement_learning/replay_memory.py
+208
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/reinforcement_learning/strategy.py
...inforcementModel/torcs/reinforcement_learning/strategy.py
+218
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/reinforcement_learning/torcs_agent_dqn_reward_executor.py
...reinforcement_learning/torcs_agent_dqn_reward_executor.py
+167
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/reinforcement_learning/util.py
...n/reinforcementModel/torcs/reinforcement_learning/util.py
+300
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/reward/CMakeLists.txt
...code/gluon/reinforcementModel/torcs/reward/CMakeLists.txt
+26
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/reward/HelperA.h
...rget_code/gluon/reinforcementModel/torcs/reward/HelperA.h
+141
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/reward/cmake/FindArmadillo.cmake
...reinforcementModel/torcs/reward/cmake/FindArmadillo.cmake
+38
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/reward/pylib/CMakeLists.txt
...luon/reinforcementModel/torcs/reward/pylib/CMakeLists.txt
+24
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/reward/pylib/armanpy/armanpy.hpp
...reinforcementModel/torcs/reward/pylib/armanpy/armanpy.hpp
+232
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/reward/pylib/armanpy/armanpy.i
...n/reinforcementModel/torcs/reward/pylib/armanpy/armanpy.i
+233
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/reward/pylib/armanpy/armanpy_1d.i
...einforcementModel/torcs/reward/pylib/armanpy/armanpy_1d.i
+569
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/reward/pylib/armanpy/armanpy_2d.i
...einforcementModel/torcs/reward/pylib/armanpy/armanpy_2d.i
+452
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/reward/pylib/armanpy/armanpy_3d.i
...einforcementModel/torcs/reward/pylib/armanpy/armanpy_3d.i
+444
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/reward/pylib/armanpy/numpy.i
...uon/reinforcementModel/torcs/reward/pylib/armanpy/numpy.i
+3161
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/reward/pylib/torcs_agent_dqn_reward_executor.cpp
...el/torcs/reward/pylib/torcs_agent_dqn_reward_executor.cpp
+17
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/reward/pylib/torcs_agent_dqn_reward_executor.h
...odel/torcs/reward/pylib/torcs_agent_dqn_reward_executor.h
+22
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/reward/pylib/torcs_agent_dqn_reward_executor.i
...odel/torcs/reward/pylib/torcs_agent_dqn_reward_executor.i
+9
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/reward/torcs_agent_dqn_reward.cpp
...einforcementModel/torcs/reward/torcs_agent_dqn_reward.cpp
+1
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/reward/torcs_agent_dqn_reward.h
.../reinforcementModel/torcs/reward/torcs_agent_dqn_reward.h
+25
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/start_training.sh
...get_code/gluon/reinforcementModel/torcs/start_training.sh
+2
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/torcs_agent_torcsAgent.cpp
...gluon/reinforcementModel/torcs/torcs_agent_torcsAgent.cpp
+1
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/torcs_agent_torcsAgent.h
...e/gluon/reinforcementModel/torcs/torcs_agent_torcsAgent.h
+32
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/torcs_agent_torcsAgent_dqn.h
...uon/reinforcementModel/torcs/torcs_agent_torcsAgent_dqn.h
+32
-0
src/test/resources/target_code/gluon/reinforcementModel/torcs/torcs_agent_torcsAgent_policy.h
.../reinforcementModel/torcs/torcs_agent_torcsAgent_policy.h
+31
-0
src/test/resources/target_code/mnist_mnistClassifier_net.h
src/test/resources/target_code/mnist_mnistClassifier_net.h
+2
-2
src/test/resources/training_data/Cifar/test.h5
src/test/resources/training_data/Cifar/test.h5
+0
-0
src/test/resources/training_data/Cifar/test_lmdb/data.mdb
src/test/resources/training_data/Cifar/test_lmdb/data.mdb
+0
-0
src/test/resources/training_data/Cifar/test_lmdb/lock.mdb
src/test/resources/training_data/Cifar/test_lmdb/lock.mdb
+0
-0
src/test/resources/training_data/Cifar/train.h5
src/test/resources/training_data/Cifar/train.h5
+0
-0
src/test/resources/training_data/Cifar/train_lmdb/data.mdb
src/test/resources/training_data/Cifar/train_lmdb/data.mdb
+0
-0
src/test/resources/training_data/Cifar/train_lmdb/lock.mdb
src/test/resources/training_data/Cifar/train_lmdb/lock.mdb
+0
-0
src/test/resources/training_data/MultipleStreams/test.h5
src/test/resources/training_data/MultipleStreams/test.h5
+0
-0
src/test/resources/training_data/MultipleStreams/train.h5
src/test/resources/training_data/MultipleStreams/train.h5
+0
-0
No files found.
.gitignore
View file @
3a697803
...
...
@@ -5,6 +5,6 @@ nppBackup
.classpath
.idea
.git
.vscode
*.iml
train.log
.gitlab-ci.yml
View file @
3a697803
...
...
@@ -24,7 +24,8 @@ stages:
-
linux
-
deploy
masterJobLinux
:
git masterJobLinux
:
stage
:
deploy
image
:
maven:3-jdk-8
script
:
...
...
@@ -34,6 +35,7 @@ masterJobLinux:
only
:
-
master
integrationMXNetJobLinux
:
stage
:
linux
image
:
registry.git.rwth-aachen.de/monticore/embeddedmontiarc/generators/emadl2cpp/integrationtests/mxnet:v0.0.3
...
...
@@ -47,17 +49,25 @@ integrationCaffe2JobLinux:
script
:
-
mvn -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn -B clean install --settings settings.xml -Dtest=IntegrationCaffe2Test
integrationGluonJobLinux
:
stage
:
linux
image
:
registry.git.rwth-aachen.de/monticore/embeddedmontiarc/generators/emadl2cpp/integrationtests/mxnet:v0.0.3
script
:
-
mvn -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn -B clean install --settings settings.xml -Dtest=IntegrationGluonTest
integrationPythonWrapperTest
:
stage
:
linux
image
:
registry.git.rwth-aachen.de/monticore/embeddedmontiarc/generators/emadl2pythonwrapper/tests/mvn-swig:latest
script
:
-
mvn -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn -B clean install --settings settings.xml -Dtest=IntegrationPythonWrapperTest
masterJobWindows
:
stage
:
windows
script
:
-
mvn -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn -B clean install --settings settings.xml -Dtest="GenerationTest,SymtabTest"
-
mvn -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn -B
-U
clean install --settings settings.xml -Dtest="GenerationTest,SymtabTest"
tags
:
-
Windows10
...
...
.vscode/launch.json
deleted
100644 → 0
View file @
16023357
{
"configurations"
:
[
{
"type"
:
"java"
,
"name"
:
"CodeLens (Launch) - EMADLGeneratorCli"
,
"request"
:
"launch"
,
"mainClass"
:
"de.monticore.lang.monticar.emadl.generator.EMADLGeneratorCli"
,
"projectName"
:
"embedded-montiarc-emadl-generator"
}
]
}
\ No newline at end of file
pom.xml
View file @
3a697803
...
...
@@ -8,18 +8,19 @@
<groupId>
de.monticore.lang.monticar
</groupId>
<artifactId>
embedded-montiarc-emadl-generator
</artifactId>
<version>
0.3.
0
</version>
<version>
0.3.
5-SNAPSHOT
</version>
<!-- == PROJECT DEPENDENCIES ============================================= -->
<properties>
<!-- .. SE-Libraries .................................................. -->
<emadl.version>
0.2.6
</emadl.version>
<CNNTrain.version>
0.2.6
</CNNTrain.version>
<cnnarch-mxnet-generator.version>
0.2.14-SNAPSHOT
</cnnarch-mxnet-generator.version>
<cnnarch-caffe2-generator.version>
0.2.11-SNAPSHOT
</cnnarch-caffe2-generator.version>
<cnnarch-gluon-generator.version>
0.1.6
</cnnarch-gluon-generator.version>
<emadl.version>
0.2.8-SNAPSHOT
</emadl.version>
<CNNTrain.version>
0.3.6-SNAPSHOT
</CNNTrain.version>
<cnnarch-generator.version>
0.0.2-SNAPSHOT
</cnnarch-generator.version>
<cnnarch-mxnet-generator.version>
0.2.16-SNAPSHOT
</cnnarch-mxnet-generator.version>
<cnnarch-caffe2-generator.version>
0.2.12-SNAPSHOT
</cnnarch-caffe2-generator.version>
<cnnarch-gluon-generator.version>
0.2.6-SNAPSHOT
</cnnarch-gluon-generator.version>
<embedded-montiarc-math-opt-generator>
0.1.4
</embedded-montiarc-math-opt-generator>
<!-- .. Libraries .................................................. -->
...
...
@@ -68,6 +69,12 @@
<version>
${embedded-montiarc-math-opt-generator}
</version>
</dependency>
<dependency>
<groupId>
de.monticore.lang.monticar
</groupId>
<artifactId>
cnnarch-generator
</artifactId>
<version>
${cnnarch-generator.version}
</version>
</dependency>
<dependency>
<groupId>
de.monticore.lang.monticar
</groupId>
<artifactId>
cnnarch-mxnet-generator
</artifactId>
...
...
src/main/java/de/monticore/lang/monticar/emadl/generator/Backend.java
View file @
3a697803
package
de.monticore.lang.monticar.emadl.generator
;
import
de.monticore.lang.monticar.cnnarch.CNNArchGenerator
;
import
de.monticore.lang.monticar.cnnarch.generator.CNNArchGenerator
;
import
de.monticore.lang.monticar.cnnarch.generator.CNNTrainGenerator
;
import
de.monticore.lang.monticar.cnnarch.gluongenerator.CNNArch2Gluon
;
import
de.monticore.lang.monticar.cnnarch.gluongenerator.CNNTrain2Gluon
;
import
de.monticore.lang.monticar.cnnarch.mxnetgenerator.CNNArch2MxNet
;
import
de.monticore.lang.monticar.cnnarch.caffe2generator.CNNArch2Caffe2
;
import
de.monticore.lang.monticar.cnnarch.mxnetgenerator.CNNTrain2MxNet
;
import
de.monticore.lang.monticar.cnnarch.caffe2generator.CNNTrain2Caffe2
;
import
de.monticore.lang.monticar.
cnntrain.CNNTrain
Generator
;
import
de.monticore.lang.monticar.
emadl.generator.reinforcementlearning.RewardFunctionCpp
Generator
;
import
java.util.Optional
;
...
...
@@ -40,7 +41,7 @@ public enum Backend {
}
@Override
public
CNNTrainGenerator
getCNNTrainGenerator
()
{
return
new
CNNTrain2Gluon
();
return
new
CNNTrain2Gluon
(
new
RewardFunctionCppGenerator
()
);
}
};
...
...
src/main/java/de/monticore/lang/monticar/emadl/generator/EMADLGenerator.java
View file @
3a697803
...
...
@@ -27,10 +27,15 @@ import com.google.common.io.Resources;
import
de.monticore.lang.embeddedmontiarc.embeddedmontiarc._symboltable.cncModel.EMAComponentSymbol
;
import
de.monticore.lang.embeddedmontiarc.embeddedmontiarc._symboltable.instanceStructure.EMAComponentInstanceSymbol
;
import
de.monticore.lang.math._symboltable.MathStatementsSymbol
;
import
de.monticore.lang.monticar.cnnarch.CNNArchGenerator
;
import
de.monticore.lang.monticar.cnnarch.DataPathConfigParser
;
import
de.monticore.lang.monticar.cnnarch.generator.CNNArchGenerator
;
import
de.monticore.lang.monticar.cnnarch.generator.DataPathConfigParser
;
import
de.monticore.lang.monticar.cnnarch.generator.CNNTrainGenerator
;
import
de.monticore.lang.monticar.cnnarch._symboltable.ArchitectureSymbol
;
import
de.monticore.lang.monticar.cnntrain.CNNTrainGenerator
;
import
de.monticore.lang.monticar.cnnarch._symboltable.SerialCompositeElementSymbol
;
import
de.monticore.lang.monticar.cnnarch.gluongenerator.CNNTrain2Gluon
;
import
de.monticore.lang.monticar.cnnarch.gluongenerator.annotations.ArchitectureAdapter
;
import
de.monticore.lang.monticar.cnntrain._cocos.CNNTrainCoCoChecker
;
import
de.monticore.lang.monticar.cnntrain._cocos.CNNTrainCocos
;
import
de.monticore.lang.monticar.cnntrain._symboltable.ConfigurationSymbol
;
import
de.monticore.lang.monticar.emadl._cocos.EMADLCocos
;
import
de.monticore.lang.monticar.generator.FileContent
;
...
...
@@ -66,8 +71,8 @@ public class EMADLGenerator {
private
Backend
backend
;
private
String
modelsPath
;
private
Map
<
String
,
ArchitectureSymbol
>
processedArchitecture
;
public
EMADLGenerator
(
Backend
backend
)
{
this
.
backend
=
backend
;
...
...
@@ -109,8 +114,21 @@ public class EMADLGenerator {
}
public
void
generate
(
String
modelPath
,
String
qualifiedName
,
String
pythonPath
,
String
forced
,
boolean
doCompile
)
throws
IOException
,
TemplateException
{
processedArchitecture
=
new
HashMap
<>();
setModelsPath
(
modelPath
);
TaggingResolver
symtab
=
EMADLAbstractSymtab
.
createSymTabAndTaggingResolver
(
getModelsPath
());
EMAComponentInstanceSymbol
instance
=
resolveComponentInstanceSymbol
(
qualifiedName
,
symtab
);
generateFiles
(
symtab
,
instance
,
symtab
,
pythonPath
,
forced
);
if
(
doCompile
)
{
compile
();
}
processedArchitecture
=
null
;
}
private
EMAComponentInstanceSymbol
resolveComponentInstanceSymbol
(
String
qualifiedName
,
TaggingResolver
symtab
)
{
EMAComponentSymbol
component
=
symtab
.<
EMAComponentSymbol
>
resolve
(
qualifiedName
,
EMAComponentSymbol
.
KIND
).
orElse
(
null
);
List
<
String
>
splitName
=
Splitters
.
DOT
.
splitToList
(
qualifiedName
);
...
...
@@ -122,14 +140,7 @@ public class EMADLGenerator {
System
.
exit
(
1
);
}
EMAComponentInstanceSymbol
instance
=
component
.
getEnclosingScope
().<
EMAComponentInstanceSymbol
>
resolve
(
instanceName
,
EMAComponentInstanceSymbol
.
KIND
).
get
();
generateFiles
(
symtab
,
instance
,
symtab
,
pythonPath
,
forced
);
if
(
doCompile
)
{
compile
();
}
return
component
.
getEnclosingScope
().<
EMAComponentInstanceSymbol
>
resolve
(
instanceName
,
EMAComponentInstanceSymbol
.
KIND
).
get
();
}
public
void
compile
()
throws
IOException
{
...
...
@@ -228,12 +239,14 @@ public class EMADLGenerator {
String
b
=
backend
.
getBackendString
(
backend
);
String
trainingDataHash
=
""
;
String
testDataHash
=
""
;
if
(
b
.
equals
(
"CAFFE2"
)){
trainingDataHash
=
getChecksumForFile
(
architecture
.
get
().
getDataPath
()
+
"/train_lmdb/data.mdb"
);
testDataHash
=
getChecksumForFile
(
architecture
.
get
().
getDataPath
()
+
"/test_lmdb/data.mdb"
);
}
else
{
trainingDataHash
=
getChecksumForFile
(
architecture
.
get
().
getDataPath
()
+
"/train.h5"
);
testDataHash
=
getChecksumForFile
(
architecture
.
get
().
getDataPath
()
+
"/test.h5"
);
if
(
architecture
.
get
().
getDataPath
()
!=
null
)
{
if
(
b
.
equals
(
"CAFFE2"
))
{
trainingDataHash
=
getChecksumForFile
(
architecture
.
get
().
getDataPath
()
+
"/train_lmdb/data.mdb"
);
testDataHash
=
getChecksumForFile
(
architecture
.
get
().
getDataPath
()
+
"/test_lmdb/data.mdb"
);
}
else
{
trainingDataHash
=
getChecksumForFile
(
architecture
.
get
().
getDataPath
()
+
"/train.h5"
);
testDataHash
=
getChecksumForFile
(
architecture
.
get
().
getDataPath
()
+
"/test.h5"
);
}
}
String
trainingHash
=
emadlHash
+
"#"
+
cnntHash
+
"#"
+
trainingDataHash
+
"#"
+
testDataHash
;
...
...
@@ -312,6 +325,7 @@ public class EMADLGenerator {
public
List
<
FileContent
>
generateStrings
(
TaggingResolver
taggingResolver
,
EMAComponentInstanceSymbol
componentInstanceSymbol
,
Scope
symtab
,
Set
<
EMAComponentInstanceSymbol
>
allInstances
,
String
forced
){
List
<
FileContent
>
fileContents
=
new
ArrayList
<>();
processedArchitecture
=
new
HashMap
<>();
generateComponent
(
fileContents
,
allInstances
,
taggingResolver
,
componentInstanceSymbol
,
symtab
);
...
...
@@ -338,6 +352,7 @@ public class EMADLGenerator {
fixArmadilloImports
(
fileContents
);
processedArchitecture
=
null
;
return
fileContents
;
}
...
...
@@ -360,13 +375,26 @@ public class EMADLGenerator {
EMADLCocos
.
checkAll
(
componentInstanceSymbol
);
if
(
architecture
.
isPresent
()){
DataPathConfigParser
newParserConfig
=
new
DataPathConfigParser
(
getModelsPath
()
+
"data_paths.txt"
);
String
dPath
=
newParserConfig
.
getDataPath
(
EMAComponentSymbol
.
getFullName
());
cnnArchGenerator
.
check
(
architecture
.
get
());
String
dPath
=
null
;
Path
dataPathDefinition
=
Paths
.
get
(
getModelsPath
(),
"data_paths.txt"
);
if
(
dataPathDefinition
.
toFile
().
exists
())
{
DataPathConfigParser
newParserConfig
=
new
DataPathConfigParser
(
getModelsPath
()
+
"data_paths.txt"
);
dPath
=
newParserConfig
.
getDataPath
(
EMAComponentSymbol
.
getFullName
());
}
else
{
Log
.
warn
(
"No data path definition found in "
+
dataPathDefinition
+
" found: "
+
"Set data path to default ./data path"
);
dPath
=
"data"
;
}
/*String dPath = DataPathConfigParser.getDataPath(getModelsPath() + "data_paths.txt", componentSymbol.getFullName());*/
architecture
.
get
().
setDataPath
(
dPath
);
architecture
.
get
().
setComponentName
(
EMAComponentSymbol
.
getFullName
());
generateCNN
(
fileContents
,
taggingResolver
,
componentInstanceSymbol
,
architecture
.
get
());
if
(
processedArchitecture
!=
null
)
{
processedArchitecture
.
put
(
architecture
.
get
().
getComponentName
(),
architecture
.
get
());
}
}
else
if
(
mathStatements
.
isPresent
()){
generateMathComponent
(
fileContents
,
taggingResolver
,
componentInstanceSymbol
,
mathStatements
.
get
());
...
...
@@ -398,7 +426,7 @@ public class EMADLGenerator {
String
component
=
emamGen
.
generateString
(
taggingResolver
,
instance
,
(
MathStatementsSymbol
)
null
);
FileContent
componentFileContent
=
new
FileContent
(
transformComponent
(
component
,
"CNNPredictor_"
+
fullName
,
executeMethod
),
transformComponent
(
component
,
"CNNPredictor_"
+
fullName
,
executeMethod
,
architecture
),
instance
);
for
(
String
fileName
:
contentMap
.
keySet
()){
...
...
@@ -408,18 +436,26 @@ public class EMADLGenerator {
fileContents
.
add
(
new
FileContent
(
readResource
(
"CNNTranslator.h"
,
Charsets
.
UTF_8
),
"CNNTranslator.h"
));
}
protected
String
transformComponent
(
String
component
,
String
predictorClassName
,
String
executeMethod
){
String
networkVariableName
=
"_cnn_"
;
protected
String
transformComponent
(
String
component
,
String
predictorClassName
,
String
executeMethod
,
ArchitectureSymbol
architecture
){
//insert includes
component
=
component
.
replaceFirst
(
"using namespace"
,
"#include \""
+
predictorClassName
+
".h"
+
"\"\n"
+
"#include \"CNNTranslator.h\"\n"
+
"using namespace"
);
//insert network attribute
component
=
component
.
replaceFirst
(
"public:"
,
"public:\n"
+
predictorClassName
+
" "
+
networkVariableName
+
";"
);
//insert network attribute for predictor of each network
String
networkAttributes
=
"public:"
;
int
i
=
0
;
for
(
SerialCompositeElementSymbol
stream
:
architecture
.
getStreams
())
{
if
(
stream
.
isNetwork
())
{
networkAttributes
+=
"\n"
+
predictorClassName
+
"_"
+
i
+
" _predictor_"
+
i
+
"_;"
;
}
++
i
;
}
component
=
component
.
replaceFirst
(
"public:"
,
networkAttributes
);
//insert execute method
component
=
component
.
replaceFirst
(
"void execute\\(\\)\\s\\{\\s\\}"
,
...
...
@@ -487,10 +523,46 @@ public class EMADLGenerator {
String
trainConfigFilename
=
getConfigFilename
(
mainComponentName
,
component
.
getFullName
(),
component
.
getName
());
//should be removed when CNNTrain supports packages
cnnTrainGenerator
.
setGenerationTargetPath
(
getGenerationTargetPath
());
if
(
cnnTrainGenerator
instanceof
CNNTrain2Gluon
)
{
((
CNNTrain2Gluon
)
cnnTrainGenerator
).
setRootProjectModelsDir
(
getModelsPath
());
}
List
<
String
>
names
=
Splitter
.
on
(
"/"
).
splitToList
(
trainConfigFilename
);
trainConfigFilename
=
names
.
get
(
names
.
size
()-
1
);
Path
modelPath
=
Paths
.
get
(
getModelsPath
()
+
Joiner
.
on
(
"/"
).
join
(
names
.
subList
(
0
,
names
.
size
()-
1
)));
ConfigurationSymbol
configuration
=
cnnTrainGenerator
.
getConfigurationSymbol
(
modelPath
,
trainConfigFilename
);
// Annotate train configuration with architecture
final
String
fullConfigName
=
String
.
join
(
"."
,
names
);
ArchitectureSymbol
correspondingArchitecture
=
this
.
processedArchitecture
.
get
(
fullConfigName
);
assert
correspondingArchitecture
!=
null
:
"No architecture found for train "
+
fullConfigName
+
" configuration!"
;
configuration
.
setTrainedArchitecture
(
new
ArchitectureAdapter
(
correspondingArchitecture
.
getName
(),
correspondingArchitecture
));
CNNTrainCocos
.
checkTrainedArchitectureCoCos
(
configuration
);
// Resolve critic network if critic is present
if
(
configuration
.
getCriticName
().
isPresent
())
{
String
fullCriticName
=
configuration
.
getCriticName
().
get
();
int
indexOfFirstNameCharacter
=
fullCriticName
.
lastIndexOf
(
'.'
)
+
1
;
fullCriticName
=
fullCriticName
.
substring
(
0
,
indexOfFirstNameCharacter
)
+
fullCriticName
.
substring
(
indexOfFirstNameCharacter
,
indexOfFirstNameCharacter
+
1
).
toUpperCase
()
+
fullCriticName
.
substring
(
indexOfFirstNameCharacter
+
1
);
TaggingResolver
symtab
=
EMADLAbstractSymtab
.
createSymTabAndTaggingResolver
(
getModelsPath
());
EMAComponentInstanceSymbol
instanceSymbol
=
resolveComponentInstanceSymbol
(
fullCriticName
,
symtab
);
EMADLCocos
.
checkAll
(
instanceSymbol
);
Optional
<
ArchitectureSymbol
>
critic
=
instanceSymbol
.
getSpannedScope
().
resolve
(
""
,
ArchitectureSymbol
.
KIND
);
if
(!
critic
.
isPresent
())
{
Log
.
error
(
"During the resolving of critic component: Critic component "
+
fullCriticName
+
" does not have a CNN implementation but is required to have one"
);
System
.
exit
(-
1
);
}
critic
.
get
().
setComponentName
(
fullCriticName
);
configuration
.
setCriticNetwork
(
new
ArchitectureAdapter
(
fullCriticName
,
critic
.
get
()));
CNNTrainCocos
.
checkCriticCocos
(
configuration
);
}
cnnTrainGenerator
.
setInstanceName
(
componentInstance
.
getFullName
().
replaceAll
(
"\\."
,
"_"
));
Map
<
String
,
String
>
fileContentMap
=
cnnTrainGenerator
.
generateStrings
(
configuration
);
for
(
String
fileName
:
fileContentMap
.
keySet
()){
...
...
src/main/java/de/monticore/lang/monticar/emadl/generator/EMADLGeneratorCli.java
View file @
3a697803
...
...
@@ -52,7 +52,7 @@ public class EMADLGeneratorCli {
.
build
();
public
static
final
Option
OPTION_BACKEND
=
Option
.
builder
(
"b"
)
.
longOpt
(
"backend"
)
.
desc
(
"deep-learning-framework backend. Options: MXNET, CAFFE2"
)
.
desc
(
"deep-learning-framework backend. Options: MXNET, CAFFE2
, GLUON
"
)
.
hasArg
(
true
)
.
required
(
false
)
.
build
();
...
...
src/main/java/de/monticore/lang/monticar/emadl/generator/reinforcementlearning/RewardFunctionCppGenerator.java
0 → 100644
View file @
3a697803
package
de.monticore.lang.monticar.emadl.generator.reinforcementlearning
;
import
de.monticore.lang.embeddedmontiarc.embeddedmontiarc._symboltable.instanceStructure.EMAComponentInstanceSymbol
;
import
de.monticore.lang.monticar.cnnarch.gluongenerator.reinforcement.RewardFunctionSourceGenerator
;
import
de.monticore.lang.monticar.emadl.generator.EMADLAbstractSymtab
;
import
de.monticore.lang.monticar.generator.cpp.GeneratorEMAMOpt2CPP
;
import
de.monticore.lang.tagging._symboltable.TaggingResolver
;
import
de.se_rwth.commons.logging.Log
;
import
java.io.IOException
;
import
java.util.Optional
;
public
class
RewardFunctionCppGenerator
implements
RewardFunctionSourceGenerator
{
public
RewardFunctionCppGenerator
()
{
}
@Override
public
EMAComponentInstanceSymbol
resolveSymbol
(
TaggingResolver
taggingResolver
,
String
rootModel
)
{
Optional
<
EMAComponentInstanceSymbol
>
instanceSymbol
=
taggingResolver
.<
EMAComponentInstanceSymbol
>
resolve
(
rootModel
,
EMAComponentInstanceSymbol
.
KIND
);
if
(!
instanceSymbol
.
isPresent
())
{
Log
.
error
(
"Generation of reward function is not possible: Cannot resolve component instance "
+
rootModel
);
}
return
instanceSymbol
.
get
();
}
@Override
public
void
generate
(
EMAComponentInstanceSymbol
componentInstanceSymbol
,
TaggingResolver
taggingResolver
,
String
targetPath
)
{
GeneratorEMAMOpt2CPP
generator
=
new
GeneratorEMAMOpt2CPP
();
generator
.
useArmadilloBackend
();
generator
.
setGenerationTargetPath
(
targetPath
);
try
{
generator
.
generate
(
componentInstanceSymbol
,
taggingResolver
);
}
catch
(
IOException
e
)
{
Log
.
error
(
"Generation of reward function is not possible: "
+
e
.
getMessage
());
}
}
@Override
public
void
generate
(
String
modelPath
,
String
rootModel
,
String
targetPath
)
{
TaggingResolver
taggingResolver
=
createTaggingResolver
(
modelPath
);
EMAComponentInstanceSymbol
instanceSymbol
=
resolveSymbol
(
taggingResolver
,
rootModel
);
generate
(
instanceSymbol
,
taggingResolver
,
targetPath
);
}
@Override
public
TaggingResolver
createTaggingResolver
(
final
String
modelPath
)
{
return
EMADLAbstractSymtab
.
createSymTabAndTaggingResolver
(
modelPath
);
}
}
src/test/java/de/monticore/lang/monticar/emadl/GenerationTest.java
View file @
3a697803
...
...
@@ -23,9 +23,11 @@ package de.monticore.lang.monticar.emadl;
import
de.monticore.lang.monticar.emadl.generator.Backend
;
import
de.monticore.lang.monticar.emadl.generator.EMADLGenerator
;
import
de.monticore.lang.monticar.emadl.generator.EMADLGeneratorCli
;
import
de.se_rwth.commons.logging.Finding
;
import
de.se_rwth.commons.logging.Log
;
import
freemarker.template.TemplateException
;
import
org.junit.Before
;
import
org.junit.Ignore
;
import
org.junit.Test
;
import
java.io.IOException
;
...
...
@@ -35,12 +37,13 @@ import java.nio.file.Path;
import
java.nio.file.Paths
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
static
junit
.
framework
.
TestCase
.
assertEquals
;
import
static
junit
.
framework
.
TestCase
.
assertTrue
;
import
static
org
.
junit
.
Assert
.
assertFalse
;
public
class
GenerationTest
extends
AbstractSymtabTest
{
@Before
public
void
setUp
()
{
// ensure an empty log
...
...
@@ -140,7 +143,7 @@ public class GenerationTest extends AbstractSymtabTest {
}
@Test
public
void
testMnistClassifier
()
throws
IOException
,
TemplateException
{
public
void
testMnistClassifier
ForCaffe2
()
throws
IOException
,
TemplateException
{
Log
.
getFindings
().
clear
();
String
[]
args
=
{
"-m"
,
"src/test/resources/models/"
,
"-r"
,
"mnist.MnistClassifier"
,
"-b"
,
"CAFFE2"
,
"-f"
,
"n"
,
"-c"
,
"n"
};
EMADLGeneratorCli
.
main
(
args
);
...
...
@@ -178,7 +181,7 @@ public class GenerationTest extends AbstractSymtabTest {
"CNNCreator_mnist_mnistClassifier_net.py"
,
"CNNPredictor_mnist_mnistClassifier_net.h"
,
"CNNDataLoader_mnist_mnistClassifier_net.py"
,
"
supervised_trainer
.py"
,
"
CNNSupervisedTrainer_mnist_mnistClassifier_net
.py"
,
"mnist_mnistClassifier_net.h"
,
"HelperA.h"
,
"CNNTranslator.h"
,
...
...
@@ -187,6 +190,48 @@ public class GenerationTest extends AbstractSymtabTest {
"mnist_mnistClassifier_net.h"
));
}
@Test
public
void
testInvariantForGluon
()
throws
IOException
,
TemplateException
{
Log
.
getFindings
().
clear
();
String
[]
args
=
{
"-m"
,
"src/test/resources/models/"
,
"-r"
,
"Invariant"
,
"-b"
,
"GLUON"
,
"-f"
,
"n"
,
"-c"
,
"n"
};
EMADLGeneratorCli
.
main
(
args
);
assertTrue
(
Log
.
getFindings
().
size
()
==
0
);
}
@Test
public
void
testGluonReinforcementModelGymEnvironment
()
{
Log
.
getFindings
().
clear
();
String
[]
args
=
{
"-m"
,
"src/test/resources/models/reinforcementModel"
,
"-r"
,
"cartpole.Master"
,
"-b"
,
"GLUON"
,
"-f"
,
"n"
,
"-c"
,
"n"
};
EMADLGeneratorCli
.
main
(
args
);
assertTrue
(
Log
.
getFindings
().
stream
().
filter
(
Finding:
:
isError
).
collect
(
Collectors
.
toList
()).
isEmpty
());
checkFilesAreEqual
(
Paths
.
get
(
"./target/generated-sources-emadl"
),
Paths
.
get
(
"./src/test/resources/target_code/gluon/reinforcementModel/cartpole"
),
Arrays
.
asList
(
"cartpole_master.cpp"
,
"cartpole_master.h"
,
"cartpole_master_dqn.h"
,
"cartpole_master_policy.h"
,
"CMakeLists.txt"
,
"CNNBufferFile.h"
,
"CNNCreator_cartpole_master_dqn.py"
,
"CNNNet_cartpole_master_dqn.py"
,
"CNNPredictor_cartpole_master_dqn.h"
,
"CNNTrainer_cartpole_master_dqn.py"
,
"CNNTranslator.h"
,
"HelperA.h"
,
"start_training.sh"
,
"reinforcement_learning/__init__.py"
,
"reinforcement_learning/strategy.py"
,
"reinforcement_learning/agent.py"
,
"reinforcement_learning/environment.py"
,
"reinforcement_learning/replay_memory.py"
,
"reinforcement_learning/util.py"
,
"reinforcement_learning/cnnarch_logger.py"
)
);
}
@Test
public
void
testHashFunction
()
{
EMADLGenerator
tester
=
new
EMADLGenerator
(
Backend
.
MXNET
);
...
...
@@ -197,4 +242,40 @@ public class GenerationTest extends AbstractSymtabTest {
}
catch
(
IOException
e
){
}
}
@Test
public
void
gluonDdpgTest
()
{
Log
.
getFindings
().
clear
();
String
[]
args
=
{
"-m"
,
"src/test/resources/models/reinforcementModel"
,
"-r"
,
"mountaincar.Master"
,
"-b"
,
"GLUON"
,
"-f"
,
"n"
,
"-c"
,
"n"
};
EMADLGeneratorCli
.
main
(
args
);
assertEquals
(
0
,
Log
.
getFindings
().
stream
().
filter
(
Finding:
:
isError
).
count
());
checkFilesAreEqual
(
Paths
.
get
(
"./target/generated-sources-emadl"
),
Paths
.
get
(
"./src/test/resources/target_code/gluon/reinforcementModel/mountaincar"
),
Arrays
.
asList
(