Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
monticore
EmbeddedMontiArc
generators
CNNArch2Gluon
Commits
a221923c
Commit
a221923c
authored
Aug 16, 2019
by
Sebastian Nickels
Browse files
Added LSTM and GRU layers
parent
9b7ad1c4
Changes
5
Hide whitespace changes
Inline
Side-by-side
pom.xml
View file @
a221923c
...
...
@@ -8,14 +8,14 @@
<groupId>
de.monticore.lang.monticar
</groupId>
<artifactId>
cnnarch-gluon-generator
</artifactId>
<version>
0.2.
7
-SNAPSHOT
</version>
<version>
0.2.
8
-SNAPSHOT
</version>
<!-- == PROJECT DEPENDENCIES ============================================= -->
<properties>
<!-- .. SE-Libraries .................................................. -->
<CNNArch.version>
0.3.
2
-SNAPSHOT
</CNNArch.version>
<CNNArch.version>
0.3.
3
-SNAPSHOT
</CNNArch.version>
<CNNTrain.version>
0.3.6-SNAPSHOT
</CNNTrain.version>
<CNNArch2X.version>
0.0.3-SNAPSHOT
</CNNArch2X.version>
<embedded-montiarc-math-opt-generator>
0.1.4
</embedded-montiarc-math-opt-generator>
...
...
src/main/java/de/monticore/lang/monticar/cnnarch/gluongenerator/CNNArch2GluonLayerSupportChecker.java
View file @
a221923c
...
...
@@ -24,6 +24,8 @@ public class CNNArch2GluonLayerSupportChecker extends LayerSupportChecker {
supportedLayerList
.
add
(
AllPredefinedLayers
.
FLATTEN_NAME
);
supportedLayerList
.
add
(
AllPredefinedLayers
.
ONE_HOT_NAME
);
supportedLayerList
.
add
(
AllPredefinedLayers
.
RNN_NAME
);
supportedLayerList
.
add
(
AllPredefinedLayers
.
LSTM_NAME
);
supportedLayerList
.
add
(
AllPredefinedLayers
.
GRU_NAME
);
}
}
src/main/resources/templates/gluon/elements/GRU.ftl
0 → 100644
View file @
a221923c
<#
if
element.member == "NONE">
<#
assign
input = element.inputs[0]>
<#
if
mode == "ARCHITECTURE_DEFINITION">
self.rnn_$
{
element
.element.name
}
= gluon.rnn.GRU(hidden_size=$
{
element
.units
?
c
}
, num_layers=$
{
element
.layers
?
c
}
, layout='NTC')
<#include "OutputShape.ftl">
<#
elseif
mode == "FORWARD_FUNCTION">
$
{
element
.name
}
, $
{
element
.element.name
}
_state_ = self.rnn_$
{
element
.element.name
}
($
{
input
}
, $
{
element
.element.name
}
_state_)
</#
if
>
<#
elseif
element.member == "STATE">
<#
if
element.inputs?size gte 1>
<#
assign
input = element.inputs[0]>
<#
if
mode == "FORWARD_FUNCTION">
$
{
element
.name
}
= $
{
input
}
<#
elseif
mode == "PYTHON_INLINE">
$
{
element
.name
}
= $
{
input
}
<#
elseif
mode == "CPP_INLINE">
$
{
element
.name
}
= $
{
input
}
</#
if
>
</#
if
>
</#
if
>
\ No newline at end of file
src/main/resources/templates/gluon/elements/LSTM.ftl
0 → 100644
View file @
a221923c
<#
if
element.member == "NONE">
<#
assign
input = element.inputs[0]>
<#
if
mode == "ARCHITECTURE_DEFINITION">
self.rnn_$
{
element
.element.name
}
= gluon.rnn.LSTM(hidden_size=$
{
element
.units
?
c
}
, num_layers=$
{
element
.layers
?
c
}
, layout='NTC')
<#include "OutputShape.ftl">
<#
elseif
mode == "FORWARD_FUNCTION">
$
{
element
.name
}
, $
{
element
.element.name
}
_state_ = self.rnn_$
{
element
.element.name
}
($
{
input
}
, $
{
element
.element.name
}
_state_)
</#
if
>
<#
elseif
element.member == "STATE">
<#
if
element.inputs?size gte 1>
<#
assign
input = element.inputs[0]>
<#
if
mode == "FORWARD_FUNCTION">
$
{
element
.name
}
= $
{
input
}
<#
elseif
mode == "PYTHON_INLINE">
$
{
element
.name
}
= $
{
input
}
<#
elseif
mode == "CPP_INLINE">
$
{
element
.name
}
= $
{
input
}
</#
if
>
</#
if
>
</#
if
>
\ No newline at end of file
src/main/resources/templates/gluon/elements/RNN.ftl
View file @
a221923c
<#
if
element.member == "NONE">
<#
assign
input = element.inputs[0]>
<#
if
mode == "ARCHITECTURE_DEFINITION">
self.rnn_$
{
element
.element.name
}
= gluon.rnn.RNN(hidden_size=$
{
element
.units
?
c
}
, num_layers=$
{
element
.layers
?
c
}
, layout='NTC')
self.rnn_$
{
element
.element.name
}
= gluon.rnn.RNN(hidden_size=$
{
element
.units
?
c
}
, num_layers=$
{
element
.layers
?
c
}
,
activation='tanh',
layout='NTC')
<#include "OutputShape.ftl">
<#
elseif
mode == "FORWARD_FUNCTION">
$
{
element
.name
}
, $
{
element
.element.name
}
_state_ = self.rnn_$
{
element
.element.name
}
($
{
input
}
, $
{
element
.element.name
}
_state_)
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment