AIML experimental plugins

Change-Id: I7069f44d046099fc10997449afcebe54d0d697db
Signed-off-by: Shuai Li <shuai.li@cea.fr>
diff --git a/aiml/org.eclipse.papyrus.aiml.examples/.classpath b/aiml/org.eclipse.papyrus.aiml.examples/.classpath
new file mode 100644
index 0000000..43b9862
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.examples/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/aiml/org.eclipse.papyrus.aiml.examples/.project b/aiml/org.eclipse.papyrus.aiml.examples/.project
new file mode 100644
index 0000000..2941c7b
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.examples/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.aiml.examples</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/aiml/org.eclipse.papyrus.aiml.examples/.settings/org.eclipse.jdt.core.prefs b/aiml/org.eclipse.papyrus.aiml.examples/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0fee6a9
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.examples/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,15 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=disabled
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/aiml/org.eclipse.papyrus.aiml.examples/META-INF/MANIFEST.MF b/aiml/org.eclipse.papyrus.aiml.examples/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..2e3bdbc
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.examples/META-INF/MANIFEST.MF
@@ -0,0 +1,16 @@
+Manifest-Version: 1.0
+Require-Bundle: org.eclipse.emf.common.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.uml2.uml;bundle-version="5.0.0"
+Bundle-Vendor: %providerName
+Bundle-ActivationPolicy: lazy
+Bundle-ClassPath: .
+Bundle-Version: 0.7.0.qualifier
+Bundle-Localization: plugin
+Bundle-Name: %pluginName
+Bundle-Activator: org.eclipse.papyrus.aiml.examples.Activator
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: org.eclipse.papyrus.aiml.examples;singleton:=true
+Automatic-Module-Name: org.eclipse.papyrus.aiml.examples
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.papyrus.aiml.examples
diff --git a/aiml/org.eclipse.papyrus.aiml.examples/build.properties b/aiml/org.eclipse.papyrus.aiml.examples/build.properties
new file mode 100644
index 0000000..83dd377
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.examples/build.properties
@@ -0,0 +1,9 @@
+source.. = src/,\
+           src-gen/
+output.. = target/classes/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               models/,\
+               plugin.properties
+src.includes = models/
diff --git a/aiml/org.eclipse.papyrus.aiml.examples/models/kerasmodel.di b/aiml/org.eclipse.papyrus.aiml.examples/models/kerasmodel.di
new file mode 100644
index 0000000..8c549ee
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.examples/models/kerasmodel.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<architecture:ArchitectureDescription xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:architecture="http://www.eclipse.org/papyrus/infra/core/architecture" contextId="org.eclipse.papyrus.infra.services.edit.TypeContext"/>
diff --git a/aiml/org.eclipse.papyrus.aiml.examples/models/kerasmodel.notation b/aiml/org.eclipse.papyrus.aiml.examples/models/kerasmodel.notation
new file mode 100644
index 0000000..baee8e9
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.examples/models/kerasmodel.notation
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.3/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/gmfdiag/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+  <notation:Diagram xmi:id="_uO7LoJwiEeqtcKkMgfhA1A" type="PapyrusUMLClassDiagram" name="NewClassDiagram" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_wki_MJwiEeqtcKkMgfhA1A" type="Class_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_wkmCgJwiEeqtcKkMgfhA1A" type="Class_NameLabel"/>
+      <children xmi:type="notation:DecorationNode" xmi:id="_wkmCgZwiEeqtcKkMgfhA1A" type="Class_FloatingNameLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_wkmpkJwiEeqtcKkMgfhA1A" y="15"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_wknQoJwiEeqtcKkMgfhA1A" type="Class_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_wknQoZwiEeqtcKkMgfhA1A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_wknQopwiEeqtcKkMgfhA1A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_wknQo5wiEeqtcKkMgfhA1A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wknQpJwiEeqtcKkMgfhA1A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_wknQpZwiEeqtcKkMgfhA1A" type="Class_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_wknQppwiEeqtcKkMgfhA1A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_wknQp5wiEeqtcKkMgfhA1A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_wknQqJwiEeqtcKkMgfhA1A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wknQqZwiEeqtcKkMgfhA1A"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_wknQqpwiEeqtcKkMgfhA1A" visible="false" type="Class_NestedClassifierCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_wknQq5wiEeqtcKkMgfhA1A"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_wknQrJwiEeqtcKkMgfhA1A"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_wknQrZwiEeqtcKkMgfhA1A"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wknQrpwiEeqtcKkMgfhA1A"/>
+      </children>
+      <element xmi:type="uml:Class" href="kerasmodel.uml#_wkcRgJwiEeqtcKkMgfhA1A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wki_MZwiEeqtcKkMgfhA1A" x="240" y="80" width="181" height="121"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_2ppb5LMxEeqmquzwsvk0ug" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_2ppb5bMxEeqmquzwsvk0ug"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_2ppb57MxEeqmquzwsvk0ug" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="kerasmodel.uml#_wkcRgJwiEeqtcKkMgfhA1A"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2ppb5rMxEeqmquzwsvk0ug" x="440" y="80"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_uO7LoZwiEeqtcKkMgfhA1A" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_uO7LopwiEeqtcKkMgfhA1A"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_uO7Lo5wiEeqtcKkMgfhA1A" diagramKindId="org.eclipse.papyrus.uml.diagram.class">
+      <owner xmi:type="uml:Model" href="kerasmodel.uml#_sfXSgJwiEeqtcKkMgfhA1A"/>
+    </styles>
+    <element xmi:type="uml:Model" href="kerasmodel.uml#_sfXSgJwiEeqtcKkMgfhA1A"/>
+    <edges xmi:type="notation:Connector" xmi:id="_2ppb6LMxEeqmquzwsvk0ug" type="StereotypeCommentLink" source="_wki_MJwiEeqtcKkMgfhA1A" target="_2ppb5LMxEeqmquzwsvk0ug">
+      <styles xmi:type="notation:FontStyle" xmi:id="_2ppb6bMxEeqmquzwsvk0ug"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_2pqC8rMxEeqmquzwsvk0ug" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="kerasmodel.uml#_wkcRgJwiEeqtcKkMgfhA1A"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2ppb6rMxEeqmquzwsvk0ug" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2pqC8LMxEeqmquzwsvk0ug"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2pqC8bMxEeqmquzwsvk0ug"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_fUr44LM3Eeqmquzwsvk0ug" type="CompositeStructure" name="Composite" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_gCKC4LM3Eeqmquzwsvk0ug" type="Class_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_gCLRALM3Eeqmquzwsvk0ug" type="Class_NameLabel"/>
+      <children xmi:type="notation:DecorationNode" xmi:id="_gCLRAbM3Eeqmquzwsvk0ug" type="Class_FloatingNameLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_gCLRArM3Eeqmquzwsvk0ug" y="15"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gCL4ELM3Eeqmquzwsvk0ug" type="Class_StructureCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_lIAiYLM3Eeqmquzwsvk0ug" type="Property_Shape">
+          <children xmi:type="notation:DecorationNode" xmi:id="_lIAiYrM3Eeqmquzwsvk0ug" type="Property_NameLabel"/>
+          <children xmi:type="notation:DecorationNode" xmi:id="_lIAiY7M3Eeqmquzwsvk0ug" type="Property_FloatingNameLabel">
+            <layoutConstraint xmi:type="notation:Location" xmi:id="_lIAiZLM3Eeqmquzwsvk0ug" y="15"/>
+          </children>
+          <children xmi:type="notation:BasicCompartment" xmi:id="_lIAiZbM3Eeqmquzwsvk0ug" type="Property_StructureCompartment">
+            <styles xmi:type="notation:TitleStyle" xmi:id="_lIAiZrM3Eeqmquzwsvk0ug"/>
+            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lIAiZ7M3Eeqmquzwsvk0ug"/>
+          </children>
+          <element xmi:type="uml:Property" href="kerasmodel.uml#_lH08MLM3Eeqmquzwsvk0ug"/>
+          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lIAiYbM3Eeqmquzwsvk0ug" x="57" y="57" height="61"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gCL4EbM3Eeqmquzwsvk0ug"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gCL4ErM3Eeqmquzwsvk0ug"/>
+      </children>
+      <element xmi:type="uml:Class" href="kerasmodel.uml#_wkcRgJwiEeqtcKkMgfhA1A"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gCKC4bM3Eeqmquzwsvk0ug" x="77" y="40" width="564" height="321"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_gCRXpbM3Eeqmquzwsvk0ug" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_gCRXprM3Eeqmquzwsvk0ug"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_gCRXqLM3Eeqmquzwsvk0ug" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="kerasmodel.uml#_wkcRgJwiEeqtcKkMgfhA1A"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gCRXp7M3Eeqmquzwsvk0ug" x="200"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_fUr44bM3Eeqmquzwsvk0ug" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_fUr44rM3Eeqmquzwsvk0ug"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_fUr447M3Eeqmquzwsvk0ug" diagramKindId="org.eclipse.papyrus.uml.diagram.compositeStructure.root.package">
+      <owner xmi:type="uml:Model" href="kerasmodel.uml#_sfXSgJwiEeqtcKkMgfhA1A"/>
+    </styles>
+    <element xmi:type="uml:Model" href="kerasmodel.uml#_sfXSgJwiEeqtcKkMgfhA1A"/>
+    <edges xmi:type="notation:Connector" xmi:id="_gCR-sLM3Eeqmquzwsvk0ug" type="StereotypeCommentLink" source="_gCKC4LM3Eeqmquzwsvk0ug" target="_gCRXpbM3Eeqmquzwsvk0ug">
+      <styles xmi:type="notation:FontStyle" xmi:id="_gCR-sbM3Eeqmquzwsvk0ug"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_gCR-tbM3Eeqmquzwsvk0ug" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="kerasmodel.uml#_wkcRgJwiEeqtcKkMgfhA1A"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gCR-srM3Eeqmquzwsvk0ug" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gCR-s7M3Eeqmquzwsvk0ug"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gCR-tLM3Eeqmquzwsvk0ug"/>
+    </edges>
+  </notation:Diagram>
+</xmi:XMI>
diff --git a/aiml/org.eclipse.papyrus.aiml.examples/models/kerasmodel.uml b/aiml/org.eclipse.papyrus.aiml.examples/models/kerasmodel.uml
new file mode 100644
index 0000000..77b7b85
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.examples/models/kerasmodel.uml
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:AIML.Convolution_layers="http://www.eclipse.org/papyrus/AIML/convolution/1" xmlns:AIML.Module="http://www.eclipse.org/papyrus/AIML/module/1" xmlns:Codegen="http://www.eclipse.org/papyrus/Codegen/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/papyrus/AIML/convolution/1 http://www.eclipse.org/papyrus/AIML/1#//Convolution_layers http://www.eclipse.org/papyrus/AIML/module/1 http://www.eclipse.org/papyrus/AIML/1#//Module">
+  <uml:Model xmi:id="_sfXSgJwiEeqtcKkMgfhA1A" name="kerasmodel">
+    <packagedElement xmi:type="uml:Class" xmi:id="_wkcRgJwiEeqtcKkMgfhA1A" name="TestModule">
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_lH08MLM3Eeqmquzwsvk0ug" name="l1" visibility="public" type="_iaXQYLM3Eeqmquzwsvk0ug"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Class" xmi:id="_KvaJkJwjEeqtcKkMgfhA1A" name="python"/>
+    <packagedElement xmi:type="uml:Class" xmi:id="_iaXQYLM3Eeqmquzwsvk0ug" name="Layer1"/>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_9PGM8J6YEeqMUqJDUIBTbw">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9PHbEJ6YEeqMUqJDUIBTbw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/AIML/1#/"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://AIML_PROFILES/AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_9PICIJ6YEeqMUqJDUIBTbw">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9PICIZ6YEeqMUqJDUIBTbw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/AIML/1#//Module"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://AIML_PROFILES/AIML.profile.uml#_u1dx8JT1Eeq5BK6mmo2rWg"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_9PIpMJ6YEeqMUqJDUIBTbw">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9PIpMZ6YEeqMUqJDUIBTbw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/AIML/1#//Tensor"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://AIML_PROFILES/AIML.profile.uml#_38DjAJT1Eeq5BK6mmo2rWg"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_9PJQQJ6YEeqMUqJDUIBTbw">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9PJQQZ6YEeqMUqJDUIBTbw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/AIML/1#//Pooling_layers"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://AIML_PROFILES/AIML.profile.uml#_Deu8AJT2Eeq5BK6mmo2rWg"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_9PJ3UJ6YEeqMUqJDUIBTbw">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9PJ3UZ6YEeqMUqJDUIBTbw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/AIML/1#//Convolution_layers"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://AIML_PROFILES/AIML.profile.uml#_Nr2NYJOPEeqnY_bZg2Ebjg"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_9PKeYJ6YEeqMUqJDUIBTbw">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9PKeYZ6YEeqMUqJDUIBTbw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/AIML/1#//Padding_layers"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://AIML_PROFILES/AIML.profile.uml#_2_xEcJT2Eeq5BK6mmo2rWg"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_9PLFcJ6YEeqMUqJDUIBTbw">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9PLFcZ6YEeqMUqJDUIBTbw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/AIML/1#//NonLinearActivations"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://AIML_PROFILES/AIML.profile.uml#_H7fbMJT2Eeq5BK6mmo2rWg"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_9PLFcp6YEeqMUqJDUIBTbw">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9PLsgJ6YEeqMUqJDUIBTbw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/AIML/1#//SoftMinMaxActivations"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://AIML_PROFILES/AIML.profile.uml#_K1H6wJT2Eeq5BK6mmo2rWg"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_9PLsgZ6YEeqMUqJDUIBTbw">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9PLsgp6YEeqMUqJDUIBTbw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/AIML/1#//Normalization_layers"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://AIML_PROFILES/AIML.profile.uml#_N5zMsJT2Eeq5BK6mmo2rWg"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_9PLsg56YEeqMUqJDUIBTbw">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9PMTkJ6YEeqMUqJDUIBTbw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/AIML/1#//Recurrent_layers"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://AIML_PROFILES/AIML.profile.uml#_RAjiQJT2Eeq5BK6mmo2rWg"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_9PMTkZ6YEeqMUqJDUIBTbw">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9PMTkp6YEeqMUqJDUIBTbw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/AIML/1#//Transformer_layers"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://AIML_PROFILES/AIML.profile.uml#_T8DDAJT2Eeq5BK6mmo2rWg"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_9PMTk56YEeqMUqJDUIBTbw">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9PM6oJ6YEeqMUqJDUIBTbw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/AIML/1#//Linear_layers"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://AIML_PROFILES/AIML.profile.uml#_WwqfsJT2Eeq5BK6mmo2rWg"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_9PM6oZ6YEeqMUqJDUIBTbw">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9PNhsJ6YEeqMUqJDUIBTbw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/AIML/1#//Dropout_layers"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://AIML_PROFILES/AIML.profile.uml#_ZUMzcJT2Eeq5BK6mmo2rWg"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_9PNhsZ6YEeqMUqJDUIBTbw">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9PNhsp6YEeqMUqJDUIBTbw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/AIML/1#//Sparse_layers"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://AIML_PROFILES/AIML.profile.uml#_cKwJ0JT2Eeq5BK6mmo2rWg"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_9POIwJ6YEeqMUqJDUIBTbw">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9POIwZ6YEeqMUqJDUIBTbw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/AIML/1#//Distance_functions"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://AIML_PROFILES/AIML.profile.uml#_fjUoIJT2Eeq5BK6mmo2rWg"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_9POIwp6YEeqMUqJDUIBTbw">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9POIw56YEeqMUqJDUIBTbw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/AIML/1#//Loss_functions"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://AIML_PROFILES/AIML.profile.uml#_nZcP0JT2Eeq5BK6mmo2rWg"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_9POv0J6YEeqMUqJDUIBTbw">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9POv0Z6YEeqMUqJDUIBTbw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/AIML/1#//Vision_layers"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://AIML_PROFILES/AIML.profile.uml#_q6FsEJT2Eeq5BK6mmo2rWg"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_9POv0p6YEeqMUqJDUIBTbw">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9PPW4J6YEeqMUqJDUIBTbw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/AIML/1#//DataParallel_layers"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://AIML_PROFILES/AIML.profile.uml#_wBUroJT2Eeq5BK6mmo2rWg"/>
+    </profileApplication>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_WcUqYJ6ZEeqMUqJDUIBTbw">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WcVRcJ6ZEeqMUqJDUIBTbw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/Codegen/1#/"/>
+      </eAnnotations>
+      <appliedProfile xmi:type="uml:Profile" href="pathmap://Codegen_PROFILES/Codegen.profile.uml#_fPDsIBa-EearhdjjJ6cVzQ"/>
+    </profileApplication>
+  </uml:Model>
+  <Codegen:GeneratorHint xmi:id="_ggzKkJ6aEeqMUqJDUIBTbw" base_Element="_sfXSgJwiEeqtcKkMgfhA1A" language="_Q3RmYLMyEeqmquzwsvk0ug" generatorID="Keras"/>
+  <AIML.Module:Default_Container xmi:id="_2pbZcLMxEeqmquzwsvk0ug" base_Class="_wkcRgJwiEeqtcKkMgfhA1A"/>
+  <Codegen:Language xmi:id="_Q3RmYLMyEeqmquzwsvk0ug" base_Class="_KvaJkJwjEeqtcKkMgfhA1A"/>
+  <AIML.Convolution_layers:Conv1d xmi:id="_t2TIMLM3Eeqmquzwsvk0ug" base_Class="_iaXQYLM3Eeqmquzwsvk0ug"/>
+</xmi:XMI>
diff --git a/aiml/org.eclipse.papyrus.aiml.examples/plugin.properties b/aiml/org.eclipse.papyrus.aiml.examples/plugin.properties
new file mode 100644
index 0000000..5c6ffe7
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.examples/plugin.properties
@@ -0,0 +1,10 @@
+# Copyright (c) CEA LIST.
+#
+# This program and the accompanying materials are made
+# available under the terms of the Eclipse Public License 2.0
+# which is available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+pluginName=Papyrus AIML examples
+providerName=Eclipse Modeling Project
diff --git a/aiml/org.eclipse.papyrus.aiml.examples/plugin.xml b/aiml/org.eclipse.papyrus.aiml.examples/plugin.xml
new file mode 100644
index 0000000..048525f
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.examples/plugin.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+	<extension
+         point="org.eclipse.emf.common.ui.examples">
+      <example
+            id="org.eclipse.papyrus.aiml.examples.kerasmodel"
+            wizardID="org.eclipse.papyrus.aiml.example">
+         <projectDescriptor
+               contentURI="models/"
+               description="AIML model example for Keras"
+               name="AIML Keras Model">
+         </projectDescriptor>
+         <fileToOpen
+               location="models/kerasmodel.di">
+         </fileToOpen>
+      </example>
+   </extension>
+   
+   <extension
+         point="org.eclipse.ui.newWizards">
+      <wizard
+            category="org.eclipse.ui.Examples/org.eclipse.papyrus.examples"
+            class="org.eclipse.emf.common.ui.wizard.ExampleInstallerWizard"
+            finalPerspective="org.eclipse.papyrus.infra.core.perspective"
+            id="org.eclipse.papyrus.aiml.example"
+            name="AIML Examples"
+            preferredPerspectives="org.eclipse.papyrus.infra.core.perspective"
+            project="true">
+         <description>
+            Create a new Project that contains an example for AI Modeling based on Keras
+         </description>
+      </wizard>
+   </extension>
+</plugin>
diff --git a/aiml/org.eclipse.papyrus.aiml.examples/src/org/eclipse/papyrus/aiml/examples/Activator.java b/aiml/org.eclipse.papyrus.aiml.examples/src/org/eclipse/papyrus/aiml/examples/Activator.java
new file mode 100644
index 0000000..835d0eb
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.examples/src/org/eclipse/papyrus/aiml/examples/Activator.java
@@ -0,0 +1,38 @@
+/**
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.eclipse.papyrus.aiml.examples;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+	private static BundleContext context;
+
+	static BundleContext getContext() {
+		return context;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext bundleContext) throws Exception {
+		Activator.context = bundleContext;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext bundleContext) throws Exception {
+		Activator.context = null;
+	}
+
+}
diff --git a/aiml/org.eclipse.papyrus.aiml.gen.keras/.classpath b/aiml/org.eclipse.papyrus.aiml.gen.keras/.classpath
new file mode 100644
index 0000000..2f5ffb2
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.gen.keras/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="xtend-gen"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/aiml/org.eclipse.papyrus.aiml.gen.keras/.project b/aiml/org.eclipse.papyrus.aiml.gen.keras/.project
new file mode 100644
index 0000000..7e976c4
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.gen.keras/.project
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.aiml.gen.keras</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.m2e.core.maven2Builder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.m2e.core.maven2Nature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+	</natures>
+</projectDescription>
diff --git a/aiml/org.eclipse.papyrus.aiml.gen.keras/.settings/org.eclipse.jdt.core.prefs b/aiml/org.eclipse.papyrus.aiml.gen.keras/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0fee6a9
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.gen.keras/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,15 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=disabled
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/aiml/org.eclipse.papyrus.aiml.gen.keras/META-INF/MANIFEST.MF b/aiml/org.eclipse.papyrus.aiml.gen.keras/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..f47ce9f
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.gen.keras/META-INF/MANIFEST.MF
@@ -0,0 +1,24 @@
+Manifest-Version: 1.0
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport,
+ org.eclipse.uml2.types;visibility:=reexport,
+ org.eclipse.uml2.uml;bundle-version="5.0.0";visibility:=reexport,
+ org.eclipse.papyrus.uml.properties;bundle-version="3.0.0",
+ org.eclipse.papyrus.aiml.profile;bundle-version="0.7.0",
+ org.eclipse.xtend.lib;bundle-version="2.2.0",
+ org.eclipse.papyrus.designer.languages.common.base;bundle-version="1.1.0",
+ org.eclipse.papyrus.designer.languages.common.extensionpoints;bundle-version="1.1.0",
+ org.eclipse.papyrus.designer.languages.common.profile;bundle-version="1.1.0"
+Export-Package: org.eclipse.papyrus.aiml.gen.keras
+Bundle-Vendor: %providerName
+Bundle-ActivationPolicy: lazy
+Bundle-ClassPath: .
+Bundle-Version: 0.7.0.qualifier
+Bundle-Localization: plugin
+Bundle-Name: %pluginName
+Bundle-Activator: org.eclipse.papyrus.aiml.gen.keras.Activator
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: org.eclipse.papyrus.aiml.gen.keras;singleton:=true
+Automatic-Module-Name: org.eclipse.papyrus.designer.languages.cpp.profile
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
diff --git a/aiml/org.eclipse.papyrus.aiml.gen.keras/build.properties b/aiml/org.eclipse.papyrus.aiml.gen.keras/build.properties
new file mode 100644
index 0000000..536f80e
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.gen.keras/build.properties
@@ -0,0 +1,10 @@
+source.. = src/,\
+           src-gen/
+output.. = target/classes/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               profiles/,\
+               libraries/,\
+               plugin.properties,\
+               properties/
diff --git a/aiml/org.eclipse.papyrus.aiml.gen.keras/plugin.properties b/aiml/org.eclipse.papyrus.aiml.gen.keras/plugin.properties
new file mode 100644
index 0000000..4f00e9e
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.gen.keras/plugin.properties
@@ -0,0 +1,10 @@
+# Copyright (c) CEA LIST.
+#
+# This program and the accompanying materials are made
+# available under the terms of the Eclipse Public License 2.0
+# which is available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+pluginName=Papyrus AIML profile
+providerName=Eclipse Modeling Project
diff --git a/aiml/org.eclipse.papyrus.aiml.gen.keras/plugin.xml b/aiml/org.eclipse.papyrus.aiml.gen.keras/plugin.xml
new file mode 100644
index 0000000..e18fff1
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.gen.keras/plugin.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+	<extension
+			point="org.eclipse.papyrus.designer.languages.common.extensionpoints.languageCodegen">
+		<generator
+			id="Keras"
+			class="org.eclipse.papyrus.aiml.gen.keras.KerasLangCodegen"
+			language="python">
+		</generator>
+	</extension>
+</plugin>
diff --git a/aiml/org.eclipse.papyrus.aiml.gen.keras/src/org/eclipse/papyrus/aiml/gen/keras/Activator.java b/aiml/org.eclipse.papyrus.aiml.gen.keras/src/org/eclipse/papyrus/aiml/gen/keras/Activator.java
new file mode 100644
index 0000000..1bd4ef5
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.gen.keras/src/org/eclipse/papyrus/aiml/gen/keras/Activator.java
@@ -0,0 +1,42 @@
+/**
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.eclipse.papyrus.aiml.gen.keras;
+
+import org.eclipse.papyrus.infra.core.log.LogHelper;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+	private static BundleContext context;
+
+	public static LogHelper log;
+
+	static BundleContext getContext() {
+		return context;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext bundleContext) throws Exception {
+		Activator.context = bundleContext;
+		log = new LogHelper(context.getBundle());
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext bundleContext) throws Exception {
+		Activator.context = null;
+	}
+
+}
diff --git a/aiml/org.eclipse.papyrus.aiml.gen.keras/src/org/eclipse/papyrus/aiml/gen/keras/GenCheck.xtend b/aiml/org.eclipse.papyrus.aiml.gen.keras/src/org/eclipse/papyrus/aiml/gen/keras/GenCheck.xtend
new file mode 100644
index 0000000..92899d9
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.gen.keras/src/org/eclipse/papyrus/aiml/gen/keras/GenCheck.xtend
@@ -0,0 +1,102 @@
+package org.eclipse.papyrus.aiml.gen.keras
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model
+import java.util.HashSet
+import org.eclipse.jface.dialogs.MessageDialog
+import org.eclipse.swt.widgets.Display
+
+class GenCheck {
+	/**
+	 * return true if Null for each type
+	 */
+	static def isNull(Object value) {
+		return value === null 
+	}	 
+
+	/**
+	 * return true if Null for each type
+	 */
+	static def isFalseBoolean(Boolean value) {
+		return value.booleanValue === Boolean.FALSE
+	}	 
+	/**
+	 * return true if Null or string value is empty
+	 */
+	static def isNullOrEmptyForString(String value) {
+		return value === null || value.length == 0 || value === "null"
+	}
+	
+	static def isZeroForString(String value) {
+		return value === "0.0" || value ==="0" 
+	}
+	
+	static def isZeroForStringL(String value) {
+		return value.equals("0.0") || value.equals("0") 
+	}
+	/**
+	 * return true if string value is equal to false
+	 */
+	static def isFalseForString(String value) {
+		return value !== null && value.equals("false")
+	}
+
+	/**
+	 * collect the number of layers in the model
+	 */
+	static def findNbrOfLayer(Model l) {
+		var nbr_lay = 0
+		for (layer : l.base_Class.ownedAttributes) {
+			l.getClass().getSimpleName()
+			nbr_lay = nbr_lay + 1
+		}
+		return nbr_lay
+	}
+
+	static def findNbrOfInformationFLowPara(Model l) {
+		var nbrInformationFlowFinal = 0
+		var nbrInformationFlowByLayer = 0
+		
+		for (layer : l.base_Class.ownedAttributes) {
+			
+			nbrInformationFlowByLayer=layer.getTargetDirectedRelationships().length
+			
+			if (nbrInformationFlowByLayer>nbrInformationFlowFinal){
+				nbrInformationFlowFinal=nbrInformationFlowByLayer
+			}
+				
+		}
+		
+		if (nbrInformationFlowFinal>1){
+				MessageDialog.openWarning(Display.current.activeShell, "Warning Message : InformationFlow ",
+				"NOT SUPPORTED : InformationFLow parallelization (Double entry) ");
+				
+				return 0
+
+		} else {
+			return 1
+		}
+	
+	}
+			
+	static def findNbrOfInformationFLowMissing(ModuleInfo mi) {
+
+		System.err.println("module info list : " + mi.layersInput.toList)
+
+		var HashSet hs = new HashSet<String>();
+		hs.addAll(mi.layersInput.toList);
+		var int totalDuplicates = mi.layersInput.toList.size() - hs.size();
+
+		//MessageDialog.openWarning(Display.current.activeShell, "sdfsd", "warning ...");
+		//Activator.log.info("sdfsd");
+
+		if (totalDuplicates !== 0) {
+			MessageDialog.openWarning(Display.current.activeShell, "Warning Message : InformationFlow ",
+				"NOT SUPPORTED :  Missing InformationFlow Connection");
+			return 0
+
+		} else {
+			return 1
+		}
+	}	
+}
+
diff --git a/aiml/org.eclipse.papyrus.aiml.gen.keras/src/org/eclipse/papyrus/aiml/gen/keras/GenKeras.xtend b/aiml/org.eclipse.papyrus.aiml.gen.keras/src/org/eclipse/papyrus/aiml/gen/keras/GenKeras.xtend
new file mode 100644
index 0000000..405f0d9
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.gen.keras/src/org/eclipse/papyrus/aiml/gen/keras/GenKeras.xtend
@@ -0,0 +1,197 @@
+/*******************************************************************************
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse License 2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ * Contributors:
+ *   Abhishek Djeachandrane - Initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.aiml.gen.keras;
+
+import org.eclipse.uml2.uml.Class;
+import static extension org.eclipse.uml2.uml.util.UMLUtil.getStereotypeApplication
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layers
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.LSTM
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.GRU
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layers
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear
+import org.eclipse.papyrus.aiml.gen.keras.ModelOps;
+
+
+class GenKeras {
+	static def genKeras(Class clazz) {
+		val module = clazz.getStereotypeApplication(Model)
+		if (module !== null) {
+			return module.genModule
+		} else {
+			return "";
+		}
+	}
+	/**
+	 * Generate a model with different elements necessary for the compilation 
+	 */
+	static def genModule(Model module) '''
+		«module.genDefaultTemplate»
+		
+		«module.genModuleInit»
+		
+			«module.genModuleCall»
+		
+		«module.genModuleCompilation»
+
+		
+		
+		
+		
+	'''
+
+	/**
+	 * Generate the model instance and compilation 
+	 */
+	static def genModuleCompilation(Model module) '''
+		«module.base_Class.name.toFirstLower» = «module.base_Class.name»()
+		««««»«ModelOps.modelAttributesToDisplayForCompilation(module)»
+		«var study=ModelOps.modelAttributesToCollectProperly(module)»
+		«study.attributesName.toList»
+		«study.attributesValue.toList»
+		«study.attributesType.toList»
+		«FOR n : study.attributesValue.toList»
+		
+		«ENDFOR»
+		«var study2=ModelOps.modelAttributesToDisplayForCompilationProperly(module)»
+		«study2»
+	'''
+	/**
+	 * Generate the basic template with importation in the head of the code 
+	 */
+	static def genDefaultTemplate(Model module) '''
+		# generated by Papyrus from module «module.base_Class.class»
+		
+		import tensorflow as tf
+		from tensorflow import keras
+		inputs=[(1,2),(3,4)]
+	'''
+
+	/**
+	 * Generate layer instance through modeling
+	 */
+	static def genModuleInit(Model module) '''
+		class «module.base_Class.name»(tf.keras.Model):
+			def __init__(self):
+				super(MyModel, self).__init__()
+				
+				«FOR layer : module.base_Class.ownedAttributes»
+					«val type = layer.type»
+					«val layerSt = type.getStereotypeApplication(Model)»
+					«genLayer(layerSt)»
+				«ENDFOR»
+				«FOR connector : module.base_Class.ownedConnectors»
+				«ENDFOR»
+	'''
+
+
+	/**
+	 * Generate the code which consist to determine the data flow between layers
+	 * @param l the model ...
+	 */
+	static def genModuleCall(Model module) '''
+		def call(self, inputs):
+
+		«var nbr_lay = GenCheck.findNbrOfLayer(module)»
+		«var unsortedInformationFlowList = ModelOps.genInputOutputLayerArrayWithFlow(nbr_lay,module)»
+		
+		«IF unsortedInformationFlowList instanceof ModuleInfo»
+			«var sortedInformationFlowList = ModelOps.genFlowOrder(nbr_lay, unsortedInformationFlowList)»
+				«FOR layer :sortedInformationFlowList.toList»
+					«var inputs = sortedInformationFlowList.toList.indexOf(layer)-1»
+					«IF inputs<0»
+						x«sortedInformationFlowList.toList.indexOf(layer)» = self.«layer»(input)
+					«ELSEIF inputs>=0 && inputs<sortedInformationFlowList.length-2»
+						x«sortedInformationFlowList.toList.indexOf(layer)» = self.«layer»(x«inputs»)
+					«ELSEIF inputs==sortedInformationFlowList.length-2»
+						output = self.«layer»(x«inputs»)
+					«ENDIF»
+				«ENDFOR»
+		«ENDIF»	
+			return output		
+	'''
+
+	/**
+	 * Generate each layer according to the model
+	 */
+	static def genLayer(Model layer) {
+		if (layer instanceof Convolution_layers) {
+			genConvolutionLayer(layer as Convolution_layers)
+		} else if (layer instanceof Recurrent_layers) {
+			genRecurrentLayer(layer as Recurrent_layers)
+		} else if (layer instanceof Linear_layers) {
+			genLinearLayer(layer as Linear_layers)
+		}
+	}
+	/**
+	 * Generate each convolution layer according to the model
+	 */
+	static def genConvolutionLayer(Convolution_layers convolutionLayer) '''
+	'''
+	/**
+	 * Generate each linear layer according to the model
+	 */
+	static def genLinearLayer(Linear_layers linearLayer) {
+		if (linearLayer instanceof Linear) {
+			genDense(linearLayer as Linear)
+		}
+	}
+	/**
+	 * Generate each recurrent layer according to the model
+	 */
+	static def genRecurrentLayer(Recurrent_layers recurrentLayer) {
+		if (recurrentLayer instanceof LSTM) {
+			genLstm(recurrentLayer as LSTM)
+		} else if (recurrentLayer instanceof GRU) {
+			genGru(recurrentLayer as GRU)
+		}
+	}
+	/**
+	 * Generate each dense layer according to the model
+	 */
+	static def genDense(Linear denseLayer) '''
+		self.«denseLayer.base_Class.name»=tf.keras.layers.Dense(«denseLayer.in_features»)
+	'''
+	/**
+	 * Generate each LSTM layer according to the model
+	 */
+	static def genLstm(LSTM lstmLayer) '''
+		«««»»«IF lstmLayer.return_sequences.equals(true)»
+			«««self.«lstmLayer.base_Class.name»=tf.keras.layers.«lstmLayer.eClass.name»(«lstmLayer.hidden_size»,input_shape=[«lstmLayer.input_size»],return_sequences=True)
+		««««»»«ELSEIF lstmLayer.return_sequences.equals(false)»
+			««««self.«lstmLayer.base_Class.name»=tf.keras.layers.«lstmLayer.eClass.name»(«lstmLayer.hidden_size»,input_shape=[«lstmLayer.input_size»],return_sequences=False)
+		««««»»«ENDIF»	
+		«var tt = RecurrentLayerOps.lstmAttributesToDisplay(lstmLayer)»
+		«tt»
+	'''
+	/**
+	 * Generate each GRU layer according to the model
+	 */
+	static def genGru(GRU gruLayer) '''
+		«««»»«gruLayer.eClass.name»
+		«««»«gruLayer.input_size»
+		«var tt = RecurrentLayerOps.lstmAttributesToDisplay(gruLayer)»
+		«tt»
+	'''
+	/**
+	 * Generate each tensor according to the model
+	 */
+	static def genTensor(Tensor tensor) '''
+		tensor ...
+	'''
+
+}
diff --git a/aiml/org.eclipse.papyrus.aiml.gen.keras/src/org/eclipse/papyrus/aiml/gen/keras/KerasLangCodegen.java b/aiml/org.eclipse.papyrus.aiml.gen.keras/src/org/eclipse/papyrus/aiml/gen/keras/KerasLangCodegen.java
new file mode 100644
index 0000000..a710c8f
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.gen.keras/src/org/eclipse/papyrus/aiml/gen/keras/KerasLangCodegen.java
@@ -0,0 +1,100 @@
+/*******************************************************************************
+ * Copyright (c) 2020 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *     CEA LIST - ansgar.radermacher@cea.fr   initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.aiml.gen.keras;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.papyrus.aiml.gen.keras.transformation.KerasModelElementsCreator;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Default_Container;
+import org.eclipse.papyrus.designer.languages.common.base.ModelElementsCreator;
+import org.eclipse.papyrus.designer.languages.common.extensionpoints.ILangCodegen2;
+import org.eclipse.papyrus.designer.languages.common.extensionpoints.MethodInfo;
+import org.eclipse.papyrus.designer.languages.common.extensionpoints.SyncInformation;
+import org.eclipse.papyrus.uml.tools.utils.StereotypeUtil;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.PackageableElement;
+
+/**
+ * Keras language support
+ */
+public class KerasLangCodegen implements ILangCodegen2 {
+
+	protected ModelElementsCreator creator = null;
+
+	protected IProject lastProject = null;
+
+	@Override
+	public String getDescription() {
+		return "A generator for Keras/TensorFlow"; //$NON-NLS-1$
+	}
+
+	@Override
+	public boolean isEligible(Element modelElement) {
+		if (modelElement instanceof Classifier) {
+			return StereotypeUtil.isApplied(modelElement, Default_Container.class);
+		}
+		return false;
+	}
+
+	@Override
+	public String getSuffix(FILE_KIND fileKind) {
+		return "py"; //$NON-NLS-1$
+	}
+	
+	@Override
+	public void generateCode(IProject project, PackageableElement element, IProgressMonitor monitor)
+	{
+		manageCreator(project, element);
+		creator.createPackageableElement(element, monitor);
+	}
+
+	@Override
+	public void cleanCode(IProject project, PackageableElement element, IProgressMonitor monitor) {
+		manageCreator(project, element);
+		creator.removePackageableElement(element, monitor);
+	}
+
+	@Override
+	public String getFileName(IProject project, NamedElement element) {
+		manageCreator(project, element);
+		return creator.getFileName(element);
+	}
+
+	@Override
+	public IProject getTargetProject(PackageableElement pe, boolean createIfMissing) {
+		return LocatePythonProject.getTargetProject(pe, createIfMissing);
+	}
+	
+	protected void manageCreator(IProject project, Element element) {
+		if ((project == null) && (element instanceof PackageableElement)) {
+			project = getTargetProject((PackageableElement) element, false);
+		}
+		if ((creator == null) || (project != lastProject)) {
+			lastProject = project;
+			creator = new KerasModelElementsCreator(project);
+		}
+	}
+
+	@Override
+	public SyncInformation getSyncInformation(String methodName, String body) {
+		return null;
+	}
+
+	@Override
+	public MethodInfo getMethodInfo(NamedElement operationOrBehavior) {
+		return null;
+	}
+}
diff --git a/aiml/org.eclipse.papyrus.aiml.gen.keras/src/org/eclipse/papyrus/aiml/gen/keras/LayerInfo.java b/aiml/org.eclipse.papyrus.aiml.gen.keras/src/org/eclipse/papyrus/aiml/gen/keras/LayerInfo.java
new file mode 100644
index 0000000..f65f46e
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.gen.keras/src/org/eclipse/papyrus/aiml/gen/keras/LayerInfo.java
@@ -0,0 +1,13 @@
+package org.eclipse.papyrus.aiml.gen.keras;
+
+
+public class LayerInfo {
+	LayerInfo (int size) {
+		attributeNames = new String[size];
+		attributeValues = new String[size];
+	}
+	String[] attributeNames;
+	String[] attributeValues;
+}
+
+
diff --git a/aiml/org.eclipse.papyrus.aiml.gen.keras/src/org/eclipse/papyrus/aiml/gen/keras/LocatePythonProject.java b/aiml/org.eclipse.papyrus.aiml.gen.keras/src/org/eclipse/papyrus/aiml/gen/keras/LocatePythonProject.java
new file mode 100644
index 0000000..107e39b
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.gen.keras/src/org/eclipse/papyrus/aiml/gen/keras/LocatePythonProject.java
@@ -0,0 +1,131 @@
+/*******************************************************************************
+ * Copyright (c) 2006 - 2013 CEA LIST.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *     CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.aiml.gen.keras;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IWorkspaceRoot;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.papyrus.designer.languages.common.base.TestInfo;
+import org.eclipse.papyrus.designer.languages.common.extensionpoints.ILangProjectSupport;
+import org.eclipse.papyrus.designer.languages.common.extensionpoints.LanguageProjectSupport;
+import org.eclipse.papyrus.uml.tools.utils.PackageUtil;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.PackageableElement;
+import org.eclipse.uml2.uml.util.UMLUtil;
+
+public class LocatePythonProject {
+
+	private static final boolean Headless = TestInfo.runsHeadless();
+
+	/**
+	 * Locate and return the target project for the given packageable element. Return null if
+	 * no target project can be found.
+	 *
+	 * Ensures that the target project is correctly setup to contain generated C/C++ code. Does
+	 * not create a new project, but may modify existing ones.
+	 *
+	 * @param pe
+	 *            a packageable element within a model
+	 * @param createIfMissing
+	 *            if true, ask the user to apply the C++ nature if required.
+	 * @return the associated project, if the C++ nature is applied.
+	 */
+	public static IProject getTargetProject(PackageableElement pe, boolean createIfMissing) {
+		Package rootPkg = PackageUtil.getRootPackage(pe);
+
+		IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
+
+		org.eclipse.papyrus.designer.languages.common.profile.Codegen.Project projectStereo =
+				UMLUtil.getStereotypeApplication(rootPkg, org.eclipse.papyrus.designer.languages.common.profile.Codegen.Project.class);
+		
+		String projectName;
+		if (projectStereo != null) {
+			projectName = projectStereo.getProjectName();
+		}
+		else {
+			projectName = "org.eclipse.papyrus.pygen." + rootPkg.getName(); //$NON-NLS-1$
+		}
+		IProject modelProject = root.getProject(projectName);
+		
+		if (!modelProject.exists()) {
+			if (Headless)
+			{
+				try {
+					modelProject.create(null);
+				} catch (CoreException e) {
+					return null;
+				}
+			}
+			else {
+				boolean create = createIfMissing && openQuestion(
+						"Create python project?",
+						String.format("Create python project with name %s? ", projectName));
+				if (create) {
+					// TODO - there is no Python project support yet, projectSupport will always throw an exception
+					//  => create PythonProjectSupport
+					try {
+						ILangProjectSupport projectSupport = LanguageProjectSupport.getProjectSupport("python"); //$NON-NLS-1$
+						modelProject = projectSupport.createProject(projectName);
+						projectSupport.setSettings(modelProject, projectSupport.initialConfigurationData());
+						if (modelProject == null) {
+							return null;
+						}
+					}
+					catch (Exception e) {
+						// create standard project
+						IProgressMonitor progressMonitor = new NullProgressMonitor();
+						try {
+							modelProject.create(progressMonitor);
+						} catch (CoreException ce) {
+							Activator.log.error(ce);
+						}
+					}
+				}
+				else {
+					return null;
+				}
+			}
+		}
+
+		// Make sure the target project is open. If it was just created then it is likely open,
+		// however if it is an old project then it could have been closed.
+		if (!modelProject.isOpen()) {
+			try {
+				modelProject.open(null);
+			} catch (CoreException e) {
+				return null;
+			}
+		}
+
+		// Make sure the target project has the python natures.
+		return modelProject;
+	}
+	
+	private static boolean openQuestion(final String title, final String message)
+	{
+		final boolean[] ret = new boolean[] { false };
+		Display.getDefault().syncExec(new Runnable() {
+			@Override
+			public void run() {
+				ret[0] = MessageDialog.openQuestion(Display.getCurrent().getActiveShell(), title, message);
+			}
+		});
+		return ret[0];
+	}
+}
diff --git a/aiml/org.eclipse.papyrus.aiml.gen.keras/src/org/eclipse/papyrus/aiml/gen/keras/ModelOps.xtend b/aiml/org.eclipse.papyrus.aiml.gen.keras/src/org/eclipse/papyrus/aiml/gen/keras/ModelOps.xtend
new file mode 100644
index 0000000..5481f7b
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.gen.keras/src/org/eclipse/papyrus/aiml/gen/keras/ModelOps.xtend
@@ -0,0 +1,238 @@
+package org.eclipse.papyrus.aiml.gen.keras
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model
+import org.eclipse.papyrus.aiml.gen.keras.GenCheck
+import java.util.ArrayList
+import org.eclipse.uml2.uml.InformationFlow
+
+/**
+ * Composing each functions needed to compute the model : _init_ and _call_
+ */
+class ModelOps {
+		static def modelAttributesToCollectProperly(Model mod_val) {
+	
+			var mi = new ModuleInfoAttributes()
+			for (value : mod_val.eClass.EAllAttributes) {
+				
+				var attri_name = value.name
+				mi.attributesName.add(attri_name)
+				var attri_val = mod_val.eGet(value)
+				mi.attributesValue.add(attri_val)
+				var attri_type= value.EType
+				mi.attributesType.add(value.EType.instanceClassName)
+				
+				if (attri_type.instanceClass.isAssignableFrom(Float)) {
+					
+				}
+			
+			}
+			//for (valu2 : mi.attributesValue){
+				//var attri_type= valu2.class.typeName
+				//mi.attributesType.add(valu2.class.typeName)
+			//}
+			return mi
+		}
+	/**
+	 * Select model attributes to display for the compilation
+	 */
+	static def modelAttributesToDisplayForCompilationProperly(Model mod) {
+
+		val attributes = ModelOps.modelAttributesToCollectProperly(mod) // Collect Attributes
+		var name_attrib = attributes.attributesName.toList
+		var val_attrib = attributes.attributesValue.toList
+		var String Display = mod.base_Class.name.toFirstLower + ".compile("
+		
+		var increm = 0
+		for (step : val_attrib) {
+			if( !name_attrib.get(increm).equals("name")){
+				if ( step instanceof String ) {
+					System.out.println("String ok")
+					
+
+					if (!GenCheck.isZeroForString(step) && !GenCheck.isNullOrEmptyForString(step) ) {
+						var String DisplayInit = name_attrib.get(increm)
+						var String DisplayStateZero = DisplayInit + '="' + step + '",'
+						Display = Display + DisplayStateZero
+					}
+				}else if ( step instanceof Boolean){
+						System.out.println("Boolean ok")
+					
+					if (!GenCheck.isFalseBoolean(step) && !GenCheck.isNull(step)) {
+						System.out.println("RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR")
+						
+						var String DisplayInit = name_attrib.get(increm)
+						var String DisplayStateZero = DisplayInit + '="' + step + '",'
+						Display = Display + DisplayStateZero
+					}					
+				
+				}
+			}
+			increm+=1
+				
+			
+		}
+		Display = Display.substring(0, Display.length() - 1) + ")"
+
+		return Display
+	}
+	/**
+	 * Collect model attributes for the compilation step
+	 */
+	static def modelAttributesToCollect(Model mod_val) {
+		var type = mod_val.eClass.ESuperTypes
+		var l = 0
+
+		var String[] namelisted = newArrayOfSize(mod_val.eClass.EAllAttributes.length)
+		var vallisted = newArrayOfSize(mod_val.eClass.EAllAttributes.length)
+		var typelisted = newArrayOfSize(mod_val.eClass.EAllAttributes.length)
+		var String[][] shades = newArrayOfSize(mod_val.eClass.EAllAttributes.length,
+			mod_val.eClass.EAllAttributes.length)
+
+		for (valu : mod_val.eClass.EAllAttributes) {
+			l = l + 1
+			var d = l - 1
+
+			var attri_name = valu.name
+			namelisted.set(d, attri_name)
+
+			if (!GenCheck.isNullOrEmptyForString(String.valueOf(mod_val.eGet(valu)))) {
+				val attri_type = mod_val.eGet(valu).getClass().getSimpleName()
+				typelisted.set(d, attri_type)
+
+				var attri_val = mod_val.eGet(valu)
+				vallisted.set(d, String.valueOf(attri_val))
+
+				val String[][] shade = #[namelisted, vallisted]
+				shades = shade
+			} else {
+				// System.err.println(valu+"\n");
+				// System.out.println(mod_val.eGet(valu));
+			}
+		}
+		// System.err.println(shades.toList.get(0).toList)
+		return shades
+	}
+
+	/**
+	 * Select model attributes to display for the compilation
+	 */
+	static def modelAttributesToDisplayForCompilation(Model mod) {
+
+		val attributes = org.eclipse.papyrus.aiml.gen.keras.ModelOps.modelAttributesToCollect(mod) // Collect Attributes
+		var name_attrib = attributes.get(0).toList
+		var val_attrib = attributes.get(1).toList
+		var String Display = mod.base_Class.name.toFirstLower + ".compile("
+
+		for (step : val_attrib) {
+			if (!GenCheck.isZeroForString(step) || !GenCheck.isNullOrEmptyForString(step) || !name_attrib.get(val_attrib.indexOf(step)).equals("name")) {
+				var String DisplayInit = name_attrib.get(val_attrib.indexOf(step))
+				var String DisplayStateZero = DisplayInit + '="' + step + '",'
+				Display = Display + DisplayStateZero
+			}
+		}
+		Display = Display.substring(0, Display.length() - 1) + ")"
+
+		return Display
+	}
+
+	/**
+	 * Collect information flow as following Input,Output -> [LayerName,Inputs,Outputs]
+	 */
+	static def genInputOutputLayerArrayWithFlow(Integer nbr_lay, Model l) {
+		val mi = new ModuleInfo(nbr_lay);
+		// System.err.println(l.base_Class.ownedAttributes+"\n")
+		var int i = 0
+
+
+		for (layer : l.base_Class.ownedAttributes) {
+			var inputList = layer.getTargetDirectedRelationships()
+			var outputList = layer.getSourceDirectedRelationships()
+			System.err.println("name Connection : "+layer.name)
+			
+			System.err.println("nbr Connection : "+layer.getTargetDirectedRelationships().length)
+			mi.layersName.set(i, layer.name)
+
+			for (input : inputList) {
+				val inFlow = input as InformationFlow
+
+				mi.layersInput.set(i, inFlow)
+			}
+
+			for (output : outputList) {
+
+				val outFlow = output as InformationFlow
+				mi.layersOutput.set(i, outFlow)
+			}
+			i = i + 1
+		}
+		i = 0
+		System.err.println(mi)
+		System.err.println(mi.layersInput.toList)
+
+		if(GenCheck.findNbrOfInformationFLowMissing(mi)!=0 && GenCheck.findNbrOfInformationFLowPara(l)!=0){
+				return mi
+		}else{
+			return 1
+		}
+
+		
+	}
+
+	/**
+	 * Sort layers according to informations flows
+	 */
+	static def genFlowOrder(Integer nbr_lay, ModuleInfo mi) {
+
+			
+			var index_first_layer = mi.genFlowOrderInit // genFlowOrderInit
+			var sorted_layer_indexs = new ArrayList
+			var sorted_layer_names = new ArrayList
+
+			sorted_layer_indexs.add(index_first_layer)
+
+			var i = 1
+			while (i < mi.layersName.toList.length) {
+				index_first_layer = genFlowOrderNext(mi, index_first_layer) // genFlowOrderNext
+				sorted_layer_indexs.add(index_first_layer)
+				i += 1
+			}
+
+			for (u : sorted_layer_indexs) {
+				sorted_layer_names.add(mi.layersName.toList.get(u))
+				System.out.println(mi.layersName.toList.get(u))
+			}
+			return sorted_layer_names
+		
+	}
+
+	/**
+	 * Collect the first layer according to the information flow  
+	 */
+	static def genFlowOrderInit(ModuleInfo mi) {
+		// var nbr_layer=mi.layersName.toList.length
+		// System.err.println(mi.layersName.toList.length)
+		var index_first_layer = 0
+
+		for (ell : mi.layersInput) {
+			if (ell === null) { // premiere couche 		
+			// System.err.println("deb : "+mi.layersName.toList.get(mi.layersInput.indexOf(ell)))						
+				index_first_layer = mi.layersInput.indexOf(ell)
+			}
+		}
+		return index_first_layer
+	}
+
+	/**
+	 * Collect following layers according to the information flow  
+	 */
+	static def genFlowOrderNext(ModuleInfo mi, Integer index_first_layer) {
+		var index_next_layer = index_first_layer
+
+		for (el : mi.layersInput) {
+			if (el === mi.layersOutput.toList.get(index_next_layer)) {
+				index_next_layer = mi.layersInput.indexOf(mi.layersOutput.toList.get(index_next_layer))
+				return index_next_layer
+			}
+		}
+	}
+}
diff --git a/aiml/org.eclipse.papyrus.aiml.gen.keras/src/org/eclipse/papyrus/aiml/gen/keras/ModuleInfo.java b/aiml/org.eclipse.papyrus.aiml.gen.keras/src/org/eclipse/papyrus/aiml/gen/keras/ModuleInfo.java
new file mode 100644
index 0000000..43e87b5
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.gen.keras/src/org/eclipse/papyrus/aiml/gen/keras/ModuleInfo.java
@@ -0,0 +1,14 @@
+package org.eclipse.papyrus.aiml.gen.keras;
+
+import org.eclipse.uml2.uml.InformationFlow;
+
+public class ModuleInfo {
+	ModuleInfo (int size) {
+		layersName = new String[size];
+		layersInput = new InformationFlow[size];
+		layersOutput = new InformationFlow[size];
+	}
+	String[] layersName;
+	InformationFlow[] layersInput;
+	InformationFlow[] layersOutput;
+}
diff --git a/aiml/org.eclipse.papyrus.aiml.gen.keras/src/org/eclipse/papyrus/aiml/gen/keras/ModuleInfoAttributes.java b/aiml/org.eclipse.papyrus.aiml.gen.keras/src/org/eclipse/papyrus/aiml/gen/keras/ModuleInfoAttributes.java
new file mode 100644
index 0000000..4c6e4c7
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.gen.keras/src/org/eclipse/papyrus/aiml/gen/keras/ModuleInfoAttributes.java
@@ -0,0 +1,19 @@
+package org.eclipse.papyrus.aiml.gen.keras;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ModuleInfoAttributes {
+	ModuleInfoAttributes() {
+		attributesName = new ArrayList<String>();
+		attributesValue =new ArrayList<Object>();
+		attributesType = new ArrayList<String>();
+
+	}
+
+	List<String> attributesName;
+	List<Object> attributesValue;
+	List<String> attributesType;
+
+	
+}
diff --git a/aiml/org.eclipse.papyrus.aiml.gen.keras/src/org/eclipse/papyrus/aiml/gen/keras/RecurrentLayerOps.xtend b/aiml/org.eclipse.papyrus.aiml.gen.keras/src/org/eclipse/papyrus/aiml/gen/keras/RecurrentLayerOps.xtend
new file mode 100644
index 0000000..d0f78cf
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.gen.keras/src/org/eclipse/papyrus/aiml/gen/keras/RecurrentLayerOps.xtend
@@ -0,0 +1,110 @@
+package org.eclipse.papyrus.aiml.gen.keras
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers
+
+class RecurrentLayerOps {
+
+	
+	static def lstmAttributesToDisplay (Recurrent_layers lay_val){
+		var t = RecurrentLayerOps.lstmAttributesToCollect(lay_val)
+		var attributesNameList=t.attributeNames.toList
+		var attributesValueList=t.attributeValues.toList
+
+
+		var String DisplayInit="self."+lay_val.base_Class.name+"=tf.keras.layers."+lay_val.eClass.name	// example : self.lstm1=tf.keras.layers.LSTM
+		
+		var Display = ""																				// Initialization an empty String variable  
+		var modificationState=0
+		var in=0
+		for(step : attributesValueList){	
+			if( attributesNameList.get(in).equals("hidden_size")){
+				System.err.println(step)
+				var String DisplayHiddenSize = step+','
+				Display+=DisplayHiddenSize 		//à verifier += au lieu de d=d+a
+				modificationState++
+				
+			}
+			in+=1
+		}
+		
+		var ind =0
+		for(step : attributesValueList){
+	
+			if( GenCheck.isZeroForStringL(step) || GenCheck.isNullOrEmptyForString(step) || GenCheck.isFalseForString(step) ){
+				
+				//System.out.print("Rejected : "+attributesNameList.get(ind)+" = "+step+"\n")
+		
+			}else{
+				//System.out.print("Valid : "+attributesNameList.get(ind)+" = "+step+"\n")
+				
+				if(attributesNameList.get(ind).equals("name") || attributesNameList.get(ind).equals("hidden_size") || attributesNameList.get(ind).equals("num_layers")){
+				}else{
+					if(!attributesNameList.get(ind).endsWith("_pt")){		//filter PyTorch specific attributes
+						
+					
+						modificationState++
+						if(step.equals("true") || step.equals("false") ){	// correct Boolean value to python boolean with MAJ
+							var String DisplayInit1 = attributesNameList.get(ind)
+							
+							if(step.equals("false")){
+								var newstep = "F"+step.substring(1, step.length())
+								var String DisplayStateZero1 = DisplayInit1+'='+newstep+','
+								Display=Display+DisplayStateZero1
+														
+							}else{
+								var newstep = "T"+step.substring(1, step.length())
+								var String DisplayStateZero2 = DisplayInit1+'='+newstep+','
+								Display=Display+DisplayStateZero2						
+							}
+							
+						}else if(attributesNameList.get(ind).equals("input_size")){
+							var String DisplayInit3 = "input_shape"
+							var String DisplayStateZero3 = DisplayInit3+'=['+step+'],'
+							Display=Display+DisplayStateZero3					
+						
+						}else{
+							var String DisplayInit0 = attributesNameList.get(ind)
+							var String DisplayStateZero0 = DisplayInit0+'='+step+','
+							Display=Display+DisplayStateZero0
+						}
+					}
+				}
+			}
+			ind = ind + 1
+		}
+		
+		var displayFinal=""
+		
+		if (modificationState!=0){
+			displayFinal=DisplayInit+"("+Display.substring(0, Display.length() - 1)+")"
+		}else{
+			displayFinal=DisplayInit //Non optimal _ recuperer la valeur 
+		}
+		
+		return displayFinal
+	}
+
+	static def lstmAttributesToCollect (Recurrent_layers lay_val){
+		
+		val nbrOfAttributes=lay_val.eClass.EAllAttributes.length 		// Get the quantity of attributes
+		
+		var layerInformations = new LayerInfo(nbrOfAttributes)			// Call LayerInformation Constructor to build 2D Array
+		
+		var attributesNameList = layerInformations.attributeNames		// Dispatch attributesNames from LayerInformation in a List
+		var attributesValueList = layerInformations.attributeValues		// Dispatch attributesValues from LayerInformation in a List
+		
+		var l=0															// Index initialization for the incremental loop
+		for (valu : lay_val.eClass.EAllAttributes){						// Loop which will collect Attribute Names and Attribute Values for Layers 
+			
+			var attri_name=valu.name									// Variable instance for attribute name for each elements in the loop
+			attributesNameList.set(l,attri_name)						// Add attribute name in the list
+			
+			var attri_val=lay_val.eGet(valu)							// Variable instance for attribute values for each elements in the loop and String conversion
+			attributesValueList.set(l,String.valueOf(attri_val))		// Add attribute value in the list
+			
+			l=l+1														// Index incrementation +1 during loop
+			
+		} 
+		return layerInformations										// return LayerInfo object [Name,Value]
+	}	
+}
\ No newline at end of file
diff --git a/aiml/org.eclipse.papyrus.aiml.gen.keras/src/org/eclipse/papyrus/aiml/gen/keras/transformation/KerasModelElementsCreator.java b/aiml/org.eclipse.papyrus.aiml.gen.keras/src/org/eclipse/papyrus/aiml/gen/keras/transformation/KerasModelElementsCreator.java
new file mode 100644
index 0000000..c51265a
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.gen.keras/src/org/eclipse/papyrus/aiml/gen/keras/transformation/KerasModelElementsCreator.java
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * Copyright (c) 2016 CEA LIST
+ *
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License 2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *   Ansgar Radermacher - Initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.aiml.gen.keras.transformation;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.papyrus.aiml.gen.keras.GenKeras;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+import org.eclipse.papyrus.designer.languages.common.base.HierarchyLocationStrategy;
+import org.eclipse.papyrus.designer.languages.common.base.ModelElementsCreator;
+import org.eclipse.papyrus.designer.languages.common.base.file.FileSystemAccessFactory;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.PackageableElement;
+import org.eclipse.uml2.uml.util.UMLUtil;
+
+public class KerasModelElementsCreator extends ModelElementsCreator {
+
+	private static final String PYTHON_LANG = "python"; //$NON-NLS-1$
+
+	private boolean done = false ;
+	
+	public KerasModelElementsCreator(IProject project) {
+		this(project, PYTHON_LANG);
+	}
+
+	public KerasModelElementsCreator(IProject project, String language) {
+		super(FileSystemAccessFactory.create(project), new HierarchyLocationStrategy(), language);
+		this.project = project;
+		pythonExt = "py"; //$NON-NLS-1$
+	}
+
+	protected String pythonExt;
+
+	@Override
+	protected boolean noCodeGen(Element element) {
+		return false;
+	}
+
+	@Override
+	protected void createPackageableElementFile(PackageableElement pe, IProgressMonitor monitor) {
+		if (pe instanceof Classifier) {
+			Classifier classifier = (Classifier) pe;
+			final String fileName = locStrategy.getFileName(classifier) + "." + pythonExt; //$NON-NLS-1$
+			String result = ""; //$NON-NLS-1$
+			if (classifier instanceof Class) {
+				Model dc = UMLUtil.getStereotypeApplication(pe, Model.class);
+				if (!done && dc.getClass().getName().contains("Model") ) {
+					result = GenKeras.genKeras((Class) classifier).toString();
+					fileSystemAccess.generateFile(fileName, result);
+					done = true;
+			}else{
+					//System.err.print(dc);		
+				}
+			}
+		}
+	}
+}
diff --git a/aiml/org.eclipse.papyrus.aiml.gen.keras/xtend-gen/org/eclipse/papyrus/aiml/gen/keras/GenCheck.java b/aiml/org.eclipse.papyrus.aiml.gen.keras/xtend-gen/org/eclipse/papyrus/aiml/gen/keras/GenCheck.java
new file mode 100644
index 0000000..dcd335b
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.gen.keras/xtend-gen/org/eclipse/papyrus/aiml/gen/keras/GenCheck.java
@@ -0,0 +1,107 @@
+package org.eclipse.papyrus.aiml.gen.keras;
+
+import java.util.HashSet;
+import java.util.List;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.papyrus.aiml.gen.keras.ModuleInfo;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.uml2.uml.InformationFlow;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.xtext.xbase.lib.Conversions;
+import org.eclipse.xtext.xbase.lib.IterableExtensions;
+
+@SuppressWarnings("all")
+public class GenCheck {
+  /**
+   * return true if Null for each type
+   */
+  public static boolean isNull(final Object value) {
+    return (value == null);
+  }
+  
+  /**
+   * return true if Null for each type
+   */
+  public static boolean isFalseBoolean(final Boolean value) {
+    boolean _booleanValue = value.booleanValue();
+    return (Boolean.valueOf(_booleanValue) == Boolean.FALSE);
+  }
+  
+  /**
+   * return true if Null or string value is empty
+   */
+  public static boolean isNullOrEmptyForString(final String value) {
+    return (((value == null) || (value.length() == 0)) || (value == "null"));
+  }
+  
+  public static boolean isZeroForString(final String value) {
+    return ((value == "0.0") || (value == "0"));
+  }
+  
+  public static boolean isZeroForStringL(final String value) {
+    return (value.equals("0.0") || value.equals("0"));
+  }
+  
+  /**
+   * return true if string value is equal to false
+   */
+  public static boolean isFalseForString(final String value) {
+    return ((value != null) && value.equals("false"));
+  }
+  
+  /**
+   * collect the number of layers in the model
+   */
+  public static int findNbrOfLayer(final Model l) {
+    int nbr_lay = 0;
+    EList<Property> _ownedAttributes = l.getBase_Class().getOwnedAttributes();
+    for (final Property layer : _ownedAttributes) {
+      {
+        l.getClass().getSimpleName();
+        nbr_lay = (nbr_lay + 1);
+      }
+    }
+    return nbr_lay;
+  }
+  
+  public static int findNbrOfInformationFLowPara(final Model l) {
+    int nbrInformationFlowFinal = 0;
+    int nbrInformationFlowByLayer = 0;
+    EList<Property> _ownedAttributes = l.getBase_Class().getOwnedAttributes();
+    for (final Property layer : _ownedAttributes) {
+      {
+        nbrInformationFlowByLayer = ((Object[])Conversions.unwrapArray(layer.getTargetDirectedRelationships(), Object.class)).length;
+        if ((nbrInformationFlowByLayer > nbrInformationFlowFinal)) {
+          nbrInformationFlowFinal = nbrInformationFlowByLayer;
+        }
+      }
+    }
+    if ((nbrInformationFlowFinal > 1)) {
+      MessageDialog.openWarning(Display.getCurrent().getActiveShell(), "Warning Message : InformationFlow ", 
+        "NOT SUPPORTED : InformationFLow parallelization (Double entry) ");
+      return 0;
+    } else {
+      return 1;
+    }
+  }
+  
+  public static int findNbrOfInformationFLowMissing(final ModuleInfo mi) {
+    List<InformationFlow> _list = IterableExtensions.<InformationFlow>toList(((Iterable<InformationFlow>)Conversions.doWrapArray(mi.layersInput)));
+    String _plus = ("module info list : " + _list);
+    System.err.println(_plus);
+    HashSet hs = new HashSet<String>();
+    hs.addAll(IterableExtensions.<Object>toList(((Iterable<Object>)Conversions.doWrapArray(mi.layersInput))));
+    int _size = IterableExtensions.<InformationFlow>toList(((Iterable<InformationFlow>)Conversions.doWrapArray(mi.layersInput))).size();
+    int _size_1 = hs.size();
+    int totalDuplicates = (_size - _size_1);
+    if ((totalDuplicates != 0)) {
+      MessageDialog.openWarning(Display.getCurrent().getActiveShell(), "Warning Message : InformationFlow ", 
+        "NOT SUPPORTED :  Missing InformationFlow Connection");
+      return 0;
+    } else {
+      return 1;
+    }
+  }
+}
diff --git a/aiml/org.eclipse.papyrus.aiml.gen.keras/xtend-gen/org/eclipse/papyrus/aiml/gen/keras/GenKeras.java b/aiml/org.eclipse.papyrus.aiml.gen.keras/xtend-gen/org/eclipse/papyrus/aiml/gen/keras/GenKeras.java
new file mode 100644
index 0000000..8f93b08
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.gen.keras/xtend-gen/org/eclipse/papyrus/aiml/gen/keras/GenKeras.java
@@ -0,0 +1,362 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse License 2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ * Contributors:
+ *   Abhishek Djeachandrane - Initial API and implementation
+ */
+package org.eclipse.papyrus.aiml.gen.keras;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.aiml.gen.keras.GenCheck;
+import org.eclipse.papyrus.aiml.gen.keras.ModelOps;
+import org.eclipse.papyrus.aiml.gen.keras.ModuleInfo;
+import org.eclipse.papyrus.aiml.gen.keras.ModuleInfoAttributes;
+import org.eclipse.papyrus.aiml.gen.keras.RecurrentLayerOps;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layers;
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear;
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layers;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.GRU;
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.LSTM;
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers;
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Type;
+import org.eclipse.uml2.uml.util.UMLUtil;
+import org.eclipse.xtend2.lib.StringConcatenation;
+import org.eclipse.xtext.xbase.lib.Conversions;
+import org.eclipse.xtext.xbase.lib.IterableExtensions;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
+
+@SuppressWarnings("all")
+public class GenKeras {
+  public static CharSequence genKeras(final org.eclipse.uml2.uml.Class clazz) {
+    final Model module = UMLUtil.<Model>getStereotypeApplication(clazz, Model.class);
+    if ((module != null)) {
+      return GenKeras.genModule(module);
+    } else {
+      return "";
+    }
+  }
+  
+  /**
+   * Generate a model with different elements necessary for the compilation
+   */
+  public static CharSequence genModule(final Model module) {
+    StringConcatenation _builder = new StringConcatenation();
+    CharSequence _genDefaultTemplate = GenKeras.genDefaultTemplate(module);
+    _builder.append(_genDefaultTemplate);
+    _builder.newLineIfNotEmpty();
+    _builder.newLine();
+    CharSequence _genModuleInit = GenKeras.genModuleInit(module);
+    _builder.append(_genModuleInit);
+    _builder.newLineIfNotEmpty();
+    _builder.newLine();
+    _builder.append("\t");
+    CharSequence _genModuleCall = GenKeras.genModuleCall(module);
+    _builder.append(_genModuleCall, "\t");
+    _builder.newLineIfNotEmpty();
+    _builder.newLine();
+    CharSequence _genModuleCompilation = GenKeras.genModuleCompilation(module);
+    _builder.append(_genModuleCompilation);
+    _builder.newLineIfNotEmpty();
+    _builder.newLine();
+    _builder.newLine();
+    _builder.newLine();
+    _builder.newLine();
+    _builder.newLine();
+    return _builder;
+  }
+  
+  /**
+   * Generate the model instance and compilation
+   */
+  public static CharSequence genModuleCompilation(final Model module) {
+    StringConcatenation _builder = new StringConcatenation();
+    String _firstLower = StringExtensions.toFirstLower(module.getBase_Class().getName());
+    _builder.append(_firstLower);
+    _builder.append(" = ");
+    String _name = module.getBase_Class().getName();
+    _builder.append(_name);
+    _builder.append("()");
+    _builder.newLineIfNotEmpty();
+    _builder.append("\t\t");
+    ModuleInfoAttributes study = ModelOps.modelAttributesToCollectProperly(module);
+    _builder.newLineIfNotEmpty();
+    List<String> _list = IterableExtensions.<String>toList(study.attributesName);
+    _builder.append(_list);
+    _builder.newLineIfNotEmpty();
+    List<Object> _list_1 = IterableExtensions.<Object>toList(study.attributesValue);
+    _builder.append(_list_1);
+    _builder.newLineIfNotEmpty();
+    List<String> _list_2 = IterableExtensions.<String>toList(study.attributesType);
+    _builder.append(_list_2);
+    _builder.newLineIfNotEmpty();
+    {
+      List<Object> _list_3 = IterableExtensions.<Object>toList(study.attributesValue);
+      for(final Object n : _list_3) {
+        _builder.newLine();
+      }
+    }
+    String study2 = ModelOps.modelAttributesToDisplayForCompilationProperly(module);
+    _builder.newLineIfNotEmpty();
+    _builder.append(study2);
+    _builder.newLineIfNotEmpty();
+    return _builder;
+  }
+  
+  /**
+   * Generate the basic template with importation in the head of the code
+   */
+  public static CharSequence genDefaultTemplate(final Model module) {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("# generated by Papyrus from module ");
+    Class<? extends org.eclipse.uml2.uml.Class> _class = module.getBase_Class().getClass();
+    _builder.append(_class);
+    _builder.newLineIfNotEmpty();
+    _builder.newLine();
+    _builder.append("import tensorflow as tf");
+    _builder.newLine();
+    _builder.append("from tensorflow import keras");
+    _builder.newLine();
+    _builder.append("inputs=[(1,2),(3,4)]");
+    _builder.newLine();
+    return _builder;
+  }
+  
+  /**
+   * Generate layer instance through modeling
+   */
+  public static CharSequence genModuleInit(final Model module) {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("class ");
+    String _name = module.getBase_Class().getName();
+    _builder.append(_name);
+    _builder.append("(tf.keras.Model):");
+    _builder.newLineIfNotEmpty();
+    _builder.append("\t");
+    _builder.append("def __init__(self):");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.append("super(MyModel, self).__init__()");
+    _builder.newLine();
+    _builder.append("\t\t");
+    _builder.newLine();
+    {
+      EList<Property> _ownedAttributes = module.getBase_Class().getOwnedAttributes();
+      for(final Property layer : _ownedAttributes) {
+        _builder.append("\t\t");
+        final Type type = layer.getType();
+        _builder.newLineIfNotEmpty();
+        _builder.append("\t\t");
+        final Model layerSt = UMLUtil.<Model>getStereotypeApplication(type, Model.class);
+        _builder.newLineIfNotEmpty();
+        _builder.append("\t\t");
+        CharSequence _genLayer = GenKeras.genLayer(layerSt);
+        _builder.append(_genLayer, "\t\t");
+        _builder.newLineIfNotEmpty();
+      }
+    }
+    {
+      EList<Connector> _ownedConnectors = module.getBase_Class().getOwnedConnectors();
+      for(final Connector connector : _ownedConnectors) {
+      }
+    }
+    return _builder;
+  }
+  
+  /**
+   * Generate the code which consist to determine the data flow between layers
+   * @param l the model ...
+   */
+  public static CharSequence genModuleCall(final Model module) {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("def call(self, inputs):");
+    _builder.newLine();
+    _builder.newLine();
+    int nbr_lay = GenCheck.findNbrOfLayer(module);
+    _builder.newLineIfNotEmpty();
+    Object unsortedInformationFlowList = ModelOps.genInputOutputLayerArrayWithFlow(Integer.valueOf(nbr_lay), module);
+    _builder.newLineIfNotEmpty();
+    _builder.newLine();
+    {
+      if ((unsortedInformationFlowList instanceof ModuleInfo)) {
+        ArrayList<String> sortedInformationFlowList = ModelOps.genFlowOrder(Integer.valueOf(nbr_lay), ((ModuleInfo)unsortedInformationFlowList));
+        _builder.newLineIfNotEmpty();
+        {
+          List<String> _list = IterableExtensions.<String>toList(sortedInformationFlowList);
+          for(final String layer : _list) {
+            _builder.append("\t");
+            int _indexOf = IterableExtensions.<String>toList(sortedInformationFlowList).indexOf(layer);
+            int inputs = (_indexOf - 1);
+            _builder.newLineIfNotEmpty();
+            {
+              if ((inputs < 0)) {
+                _builder.append("\t");
+                _builder.append("x");
+                int _indexOf_1 = IterableExtensions.<String>toList(sortedInformationFlowList).indexOf(layer);
+                _builder.append(_indexOf_1, "\t");
+                _builder.append(" = self.");
+                _builder.append(layer, "\t");
+                _builder.append("(input)");
+                _builder.newLineIfNotEmpty();
+              } else {
+                if (((inputs >= 0) && (inputs < (((Object[])Conversions.unwrapArray(sortedInformationFlowList, Object.class)).length - 2)))) {
+                  _builder.append("\t");
+                  _builder.append("x");
+                  int _indexOf_2 = IterableExtensions.<String>toList(sortedInformationFlowList).indexOf(layer);
+                  _builder.append(_indexOf_2, "\t");
+                  _builder.append(" = self.");
+                  _builder.append(layer, "\t");
+                  _builder.append("(x");
+                  _builder.append(inputs, "\t");
+                  _builder.append(")");
+                  _builder.newLineIfNotEmpty();
+                } else {
+                  final ArrayList<String> _converted_sortedInformationFlowList = (ArrayList<String>)sortedInformationFlowList;
+                  int _length = ((Object[])Conversions.unwrapArray(_converted_sortedInformationFlowList, Object.class)).length;
+                  int _minus = (_length - 2);
+                  boolean _equals = (inputs == _minus);
+                  if (_equals) {
+                    _builder.append("\t");
+                    _builder.append("output = self.");
+                    _builder.append(layer, "\t");
+                    _builder.append("(x");
+                    _builder.append(inputs, "\t");
+                    _builder.append(")");
+                    _builder.newLineIfNotEmpty();
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+    _builder.append("\t");
+    _builder.append("return output\t\t");
+    _builder.newLine();
+    return _builder;
+  }
+  
+  /**
+   * Generate each layer according to the model
+   */
+  public static CharSequence genLayer(final Model layer) {
+    CharSequence _xifexpression = null;
+    if ((layer instanceof Convolution_layers)) {
+      _xifexpression = GenKeras.genConvolutionLayer(((Convolution_layers) layer));
+    } else {
+      CharSequence _xifexpression_1 = null;
+      if ((layer instanceof Recurrent_layers)) {
+        _xifexpression_1 = GenKeras.genRecurrentLayer(((Recurrent_layers) layer));
+      } else {
+        CharSequence _xifexpression_2 = null;
+        if ((layer instanceof Linear_layers)) {
+          _xifexpression_2 = GenKeras.genLinearLayer(((Linear_layers) layer));
+        }
+        _xifexpression_1 = _xifexpression_2;
+      }
+      _xifexpression = _xifexpression_1;
+    }
+    return _xifexpression;
+  }
+  
+  /**
+   * Generate each convolution layer according to the model
+   */
+  public static CharSequence genConvolutionLayer(final Convolution_layers convolutionLayer) {
+    StringConcatenation _builder = new StringConcatenation();
+    return _builder;
+  }
+  
+  /**
+   * Generate each linear layer according to the model
+   */
+  public static CharSequence genLinearLayer(final Linear_layers linearLayer) {
+    CharSequence _xifexpression = null;
+    if ((linearLayer instanceof Linear)) {
+      _xifexpression = GenKeras.genDense(((Linear) linearLayer));
+    }
+    return _xifexpression;
+  }
+  
+  /**
+   * Generate each recurrent layer according to the model
+   */
+  public static CharSequence genRecurrentLayer(final Recurrent_layers recurrentLayer) {
+    CharSequence _xifexpression = null;
+    if ((recurrentLayer instanceof LSTM)) {
+      _xifexpression = GenKeras.genLstm(((LSTM) recurrentLayer));
+    } else {
+      CharSequence _xifexpression_1 = null;
+      if ((recurrentLayer instanceof GRU)) {
+        _xifexpression_1 = GenKeras.genGru(((GRU) recurrentLayer));
+      }
+      _xifexpression = _xifexpression_1;
+    }
+    return _xifexpression;
+  }
+  
+  /**
+   * Generate each dense layer according to the model
+   */
+  public static CharSequence genDense(final Linear denseLayer) {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("self.");
+    String _name = denseLayer.getBase_Class().getName();
+    _builder.append(_name);
+    _builder.append("=tf.keras.layers.Dense(");
+    int _in_features = denseLayer.getIn_features();
+    _builder.append(_in_features);
+    _builder.append(")");
+    _builder.newLineIfNotEmpty();
+    return _builder;
+  }
+  
+  /**
+   * Generate each LSTM layer according to the model
+   */
+  public static CharSequence genLstm(final LSTM lstmLayer) {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("\t\t\t\t\t\t\t\t\t\t\t\t");
+    String tt = RecurrentLayerOps.lstmAttributesToDisplay(lstmLayer);
+    _builder.newLineIfNotEmpty();
+    _builder.append(tt);
+    _builder.newLineIfNotEmpty();
+    return _builder;
+  }
+  
+  /**
+   * Generate each GRU layer according to the model
+   */
+  public static CharSequence genGru(final GRU gruLayer) {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("\t\t\t\t");
+    String tt = RecurrentLayerOps.lstmAttributesToDisplay(gruLayer);
+    _builder.newLineIfNotEmpty();
+    _builder.append(tt);
+    _builder.newLineIfNotEmpty();
+    return _builder;
+  }
+  
+  /**
+   * Generate each tensor according to the model
+   */
+  public static CharSequence genTensor(final Tensor tensor) {
+    StringConcatenation _builder = new StringConcatenation();
+    _builder.append("tensor ...");
+    _builder.newLine();
+    return _builder;
+  }
+}
diff --git a/aiml/org.eclipse.papyrus.aiml.gen.keras/xtend-gen/org/eclipse/papyrus/aiml/gen/keras/ModelOps.java b/aiml/org.eclipse.papyrus.aiml.gen.keras/xtend-gen/org/eclipse/papyrus/aiml/gen/keras/ModelOps.java
new file mode 100644
index 0000000..39a3b71
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.gen.keras/xtend-gen/org/eclipse/papyrus/aiml/gen/keras/ModelOps.java
@@ -0,0 +1,245 @@
+package org.eclipse.papyrus.aiml.gen.keras;
+
+import java.util.ArrayList;
+import java.util.List;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
+import org.eclipse.papyrus.aiml.gen.keras.GenCheck;
+import org.eclipse.papyrus.aiml.gen.keras.ModuleInfo;
+import org.eclipse.papyrus.aiml.gen.keras.ModuleInfoAttributes;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+import org.eclipse.uml2.uml.DirectedRelationship;
+import org.eclipse.uml2.uml.InformationFlow;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.xtext.xbase.lib.Conversions;
+import org.eclipse.xtext.xbase.lib.IterableExtensions;
+import org.eclipse.xtext.xbase.lib.StringExtensions;
+
+/**
+ * Composing each functions needed to compute the model : _init_ and _call_
+ */
+@SuppressWarnings("all")
+public class ModelOps {
+  public static ModuleInfoAttributes modelAttributesToCollectProperly(final Model mod_val) {
+    ModuleInfoAttributes mi = new ModuleInfoAttributes();
+    EList<EAttribute> _eAllAttributes = mod_val.eClass().getEAllAttributes();
+    for (final EAttribute value : _eAllAttributes) {
+      {
+        String attri_name = value.getName();
+        mi.attributesName.add(attri_name);
+        Object attri_val = mod_val.eGet(value);
+        mi.attributesValue.add(attri_val);
+        EClassifier attri_type = value.getEType();
+        mi.attributesType.add(value.getEType().getInstanceClassName());
+        boolean _isAssignableFrom = attri_type.getInstanceClass().isAssignableFrom(Float.class);
+        if (_isAssignableFrom) {
+        }
+      }
+    }
+    return mi;
+  }
+  
+  /**
+   * Select model attributes to display for the compilation
+   */
+  public static String modelAttributesToDisplayForCompilationProperly(final Model mod) {
+    final ModuleInfoAttributes attributes = ModelOps.modelAttributesToCollectProperly(mod);
+    List<String> name_attrib = IterableExtensions.<String>toList(attributes.attributesName);
+    List<Object> val_attrib = IterableExtensions.<Object>toList(attributes.attributesValue);
+    String _firstLower = StringExtensions.toFirstLower(mod.getBase_Class().getName());
+    String Display = (_firstLower + ".compile(");
+    int increm = 0;
+    for (final Object step : val_attrib) {
+      {
+        boolean _equals = name_attrib.get(increm).equals("name");
+        boolean _not = (!_equals);
+        if (_not) {
+          if ((step instanceof String)) {
+            System.out.println("String ok");
+            if (((!GenCheck.isZeroForString(((String)step))) && (!GenCheck.isNullOrEmptyForString(((String)step))))) {
+              String DisplayInit = name_attrib.get(increm);
+              String DisplayStateZero = (((DisplayInit + "=\"") + ((String)step)) + "\",");
+              Display = (Display + DisplayStateZero);
+            }
+          } else {
+            if ((step instanceof Boolean)) {
+              System.out.println("Boolean ok");
+              if (((!GenCheck.isFalseBoolean(((Boolean)step))) && (!GenCheck.isNull(step)))) {
+                System.out.println("RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR");
+                String DisplayInit_1 = name_attrib.get(increm);
+                String DisplayStateZero_1 = (((DisplayInit_1 + "=\"") + step) + "\",");
+                Display = (Display + DisplayStateZero_1);
+              }
+            }
+          }
+        }
+        int _increm = increm;
+        increm = (_increm + 1);
+      }
+    }
+    int _length = Display.length();
+    int _minus = (_length - 1);
+    String _substring = Display.substring(0, _minus);
+    String _plus = (_substring + ")");
+    Display = _plus;
+    return Display;
+  }
+  
+  /**
+   * Collect model attributes for the compilation step
+   */
+  public static String[][] modelAttributesToCollect(final Model mod_val) {
+    EList<EClass> type = mod_val.eClass().getESuperTypes();
+    int l = 0;
+    String[] namelisted = new String[((Object[])Conversions.unwrapArray(mod_val.eClass().getEAllAttributes(), Object.class)).length];
+    String[] vallisted = new String[((Object[])Conversions.unwrapArray(mod_val.eClass().getEAllAttributes(), Object.class)).length];
+    String[] typelisted = new String[((Object[])Conversions.unwrapArray(mod_val.eClass().getEAllAttributes(), Object.class)).length];
+    String[][] shades = new String[((Object[])Conversions.unwrapArray(mod_val.eClass().getEAllAttributes(), Object.class)).length][
+      ((Object[])Conversions.unwrapArray(mod_val.eClass().getEAllAttributes(), Object.class)).length];
+    EList<EAttribute> _eAllAttributes = mod_val.eClass().getEAllAttributes();
+    for (final EAttribute valu : _eAllAttributes) {
+      {
+        l = (l + 1);
+        int d = (l - 1);
+        String attri_name = valu.getName();
+        namelisted[d] = attri_name;
+        boolean _isNullOrEmptyForString = GenCheck.isNullOrEmptyForString(String.valueOf(mod_val.eGet(valu)));
+        boolean _not = (!_isNullOrEmptyForString);
+        if (_not) {
+          final String attri_type = mod_val.eGet(valu).getClass().getSimpleName();
+          typelisted[d] = attri_type;
+          Object attri_val = mod_val.eGet(valu);
+          vallisted[d] = String.valueOf(attri_val);
+          final String[][] shade = { namelisted, vallisted };
+          shades = shade;
+        } else {
+        }
+      }
+    }
+    return shades;
+  }
+  
+  /**
+   * Select model attributes to display for the compilation
+   */
+  public static String modelAttributesToDisplayForCompilation(final Model mod) {
+    final String[][] attributes = ModelOps.modelAttributesToCollect(mod);
+    List<String> name_attrib = IterableExtensions.<String>toList(((Iterable<String>)Conversions.doWrapArray(attributes[0])));
+    List<String> val_attrib = IterableExtensions.<String>toList(((Iterable<String>)Conversions.doWrapArray(attributes[1])));
+    String _firstLower = StringExtensions.toFirstLower(mod.getBase_Class().getName());
+    String Display = (_firstLower + ".compile(");
+    for (final String step : val_attrib) {
+      if ((((!GenCheck.isZeroForString(step)) || (!GenCheck.isNullOrEmptyForString(step))) || (!name_attrib.get(val_attrib.indexOf(step)).equals("name")))) {
+        String DisplayInit = name_attrib.get(val_attrib.indexOf(step));
+        String DisplayStateZero = (((DisplayInit + "=\"") + step) + "\",");
+        Display = (Display + DisplayStateZero);
+      }
+    }
+    int _length = Display.length();
+    int _minus = (_length - 1);
+    String _substring = Display.substring(0, _minus);
+    String _plus = (_substring + ")");
+    Display = _plus;
+    return Display;
+  }
+  
+  /**
+   * Collect information flow as following Input,Output -> [LayerName,Inputs,Outputs]
+   */
+  public static Object genInputOutputLayerArrayWithFlow(final Integer nbr_lay, final Model l) {
+    final ModuleInfo mi = new ModuleInfo((nbr_lay).intValue());
+    int i = 0;
+    EList<Property> _ownedAttributes = l.getBase_Class().getOwnedAttributes();
+    for (final Property layer : _ownedAttributes) {
+      {
+        EList<DirectedRelationship> inputList = layer.getTargetDirectedRelationships();
+        EList<DirectedRelationship> outputList = layer.getSourceDirectedRelationships();
+        String _name = layer.getName();
+        String _plus = ("name Connection : " + _name);
+        System.err.println(_plus);
+        int _length = ((Object[])Conversions.unwrapArray(layer.getTargetDirectedRelationships(), Object.class)).length;
+        String _plus_1 = ("nbr Connection : " + Integer.valueOf(_length));
+        System.err.println(_plus_1);
+        mi.layersName[i] = layer.getName();
+        for (final DirectedRelationship input : inputList) {
+          {
+            final InformationFlow inFlow = ((InformationFlow) input);
+            mi.layersInput[i] = inFlow;
+          }
+        }
+        for (final DirectedRelationship output : outputList) {
+          {
+            final InformationFlow outFlow = ((InformationFlow) output);
+            mi.layersOutput[i] = outFlow;
+          }
+        }
+        i = (i + 1);
+      }
+    }
+    i = 0;
+    System.err.println(mi);
+    System.err.println(IterableExtensions.<InformationFlow>toList(((Iterable<InformationFlow>)Conversions.doWrapArray(mi.layersInput))));
+    if (((GenCheck.findNbrOfInformationFLowMissing(mi) != 0) && (GenCheck.findNbrOfInformationFLowPara(l) != 0))) {
+      return mi;
+    } else {
+      return Integer.valueOf(1);
+    }
+  }
+  
+  /**
+   * Sort layers according to informations flows
+   */
+  public static ArrayList<String> genFlowOrder(final Integer nbr_lay, final ModuleInfo mi) {
+    int index_first_layer = ModelOps.genFlowOrderInit(mi);
+    ArrayList<Integer> sorted_layer_indexs = new ArrayList<Integer>();
+    ArrayList<String> sorted_layer_names = new ArrayList<String>();
+    sorted_layer_indexs.add(Integer.valueOf(index_first_layer));
+    int i = 1;
+    while ((i < ((Object[])Conversions.unwrapArray(IterableExtensions.<String>toList(((Iterable<String>)Conversions.doWrapArray(mi.layersName))), Object.class)).length)) {
+      {
+        index_first_layer = (ModelOps.genFlowOrderNext(mi, Integer.valueOf(index_first_layer))).intValue();
+        sorted_layer_indexs.add(Integer.valueOf(index_first_layer));
+        int _i = i;
+        i = (_i + 1);
+      }
+    }
+    for (final Integer u : sorted_layer_indexs) {
+      {
+        sorted_layer_names.add(IterableExtensions.<String>toList(((Iterable<String>)Conversions.doWrapArray(mi.layersName))).get((u).intValue()));
+        System.out.println(IterableExtensions.<String>toList(((Iterable<String>)Conversions.doWrapArray(mi.layersName))).get((u).intValue()));
+      }
+    }
+    return sorted_layer_names;
+  }
+  
+  /**
+   * Collect the first layer according to the information flow
+   */
+  public static int genFlowOrderInit(final ModuleInfo mi) {
+    int index_first_layer = 0;
+    for (final InformationFlow ell : mi.layersInput) {
+      if ((ell == null)) {
+        index_first_layer = ((List<InformationFlow>)Conversions.doWrapArray(mi.layersInput)).indexOf(ell);
+      }
+    }
+    return index_first_layer;
+  }
+  
+  /**
+   * Collect following layers according to the information flow
+   */
+  public static Integer genFlowOrderNext(final ModuleInfo mi, final Integer index_first_layer) {
+    Integer index_next_layer = index_first_layer;
+    for (final InformationFlow el : mi.layersInput) {
+      InformationFlow _get = IterableExtensions.<InformationFlow>toList(((Iterable<InformationFlow>)Conversions.doWrapArray(mi.layersOutput))).get((index_next_layer).intValue());
+      boolean _tripleEquals = (el == _get);
+      if (_tripleEquals) {
+        index_next_layer = Integer.valueOf(((List<InformationFlow>)Conversions.doWrapArray(mi.layersInput)).indexOf(IterableExtensions.<InformationFlow>toList(((Iterable<InformationFlow>)Conversions.doWrapArray(mi.layersOutput))).get((index_next_layer).intValue())));
+        return index_next_layer;
+      }
+    }
+    return null;
+  }
+}
diff --git a/aiml/org.eclipse.papyrus.aiml.gen.keras/xtend-gen/org/eclipse/papyrus/aiml/gen/keras/RecurrentLayerOps.java b/aiml/org.eclipse.papyrus.aiml.gen.keras/xtend-gen/org/eclipse/papyrus/aiml/gen/keras/RecurrentLayerOps.java
new file mode 100644
index 0000000..55d165d
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.gen.keras/xtend-gen/org/eclipse/papyrus/aiml/gen/keras/RecurrentLayerOps.java
@@ -0,0 +1,115 @@
+package org.eclipse.papyrus.aiml.gen.keras;
+
+import java.util.List;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.papyrus.aiml.gen.keras.GenCheck;
+import org.eclipse.papyrus.aiml.gen.keras.LayerInfo;
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers;
+import org.eclipse.xtext.xbase.lib.Conversions;
+import org.eclipse.xtext.xbase.lib.IterableExtensions;
+
+@SuppressWarnings("all")
+public class RecurrentLayerOps {
+  public static String lstmAttributesToDisplay(final Recurrent_layers lay_val) {
+    LayerInfo t = RecurrentLayerOps.lstmAttributesToCollect(lay_val);
+    List<String> attributesNameList = IterableExtensions.<String>toList(((Iterable<String>)Conversions.doWrapArray(t.attributeNames)));
+    List<String> attributesValueList = IterableExtensions.<String>toList(((Iterable<String>)Conversions.doWrapArray(t.attributeValues)));
+    String _name = lay_val.getBase_Class().getName();
+    String _plus = ("self." + _name);
+    String _plus_1 = (_plus + "=tf.keras.layers.");
+    String _name_1 = lay_val.eClass().getName();
+    String DisplayInit = (_plus_1 + _name_1);
+    String Display = "";
+    int modificationState = 0;
+    int in = 0;
+    for (final String step : attributesValueList) {
+      {
+        boolean _equals = attributesNameList.get(in).equals("hidden_size");
+        if (_equals) {
+          System.err.println(step);
+          String DisplayHiddenSize = (step + ",");
+          String _Display = Display;
+          Display = (_Display + DisplayHiddenSize);
+          modificationState++;
+        }
+        int _in = in;
+        in = (_in + 1);
+      }
+    }
+    int ind = 0;
+    for (final String step_1 : attributesValueList) {
+      {
+        if (((GenCheck.isZeroForStringL(step_1) || GenCheck.isNullOrEmptyForString(step_1)) || GenCheck.isFalseForString(step_1))) {
+        } else {
+          if (((attributesNameList.get(ind).equals("name") || attributesNameList.get(ind).equals("hidden_size")) || attributesNameList.get(ind).equals("num_layers"))) {
+          } else {
+            boolean _endsWith = attributesNameList.get(ind).endsWith("_pt");
+            boolean _not = (!_endsWith);
+            if (_not) {
+              modificationState++;
+              if ((step_1.equals("true") || step_1.equals("false"))) {
+                String DisplayInit1 = attributesNameList.get(ind);
+                boolean _equals = step_1.equals("false");
+                if (_equals) {
+                  String _substring = step_1.substring(1, step_1.length());
+                  String newstep = ("F" + _substring);
+                  String DisplayStateZero1 = (((DisplayInit1 + "=") + newstep) + ",");
+                  Display = (Display + DisplayStateZero1);
+                } else {
+                  String _substring_1 = step_1.substring(1, step_1.length());
+                  String newstep_1 = ("T" + _substring_1);
+                  String DisplayStateZero2 = (((DisplayInit1 + "=") + newstep_1) + ",");
+                  Display = (Display + DisplayStateZero2);
+                }
+              } else {
+                boolean _equals_1 = attributesNameList.get(ind).equals("input_size");
+                if (_equals_1) {
+                  String DisplayInit3 = "input_shape";
+                  String DisplayStateZero3 = (((DisplayInit3 + "=[") + step_1) + "],");
+                  Display = (Display + DisplayStateZero3);
+                } else {
+                  String DisplayInit0 = attributesNameList.get(ind);
+                  String DisplayStateZero0 = (((DisplayInit0 + "=") + step_1) + ",");
+                  Display = (Display + DisplayStateZero0);
+                }
+              }
+            }
+          }
+        }
+        ind = (ind + 1);
+      }
+    }
+    String displayFinal = "";
+    if ((modificationState != 0)) {
+      int _length = Display.length();
+      int _minus = (_length - 1);
+      String _substring = Display.substring(0, _minus);
+      String _plus_2 = ((DisplayInit + "(") + _substring);
+      String _plus_3 = (_plus_2 + ")");
+      displayFinal = _plus_3;
+    } else {
+      displayFinal = DisplayInit;
+    }
+    return displayFinal;
+  }
+  
+  public static LayerInfo lstmAttributesToCollect(final Recurrent_layers lay_val) {
+    final int nbrOfAttributes = ((Object[])Conversions.unwrapArray(lay_val.eClass().getEAllAttributes(), Object.class)).length;
+    LayerInfo layerInformations = new LayerInfo(nbrOfAttributes);
+    String[] attributesNameList = layerInformations.attributeNames;
+    String[] attributesValueList = layerInformations.attributeValues;
+    int l = 0;
+    EList<EAttribute> _eAllAttributes = lay_val.eClass().getEAllAttributes();
+    for (final EAttribute valu : _eAllAttributes) {
+      {
+        String attri_name = valu.getName();
+        attributesNameList[l] = attri_name;
+        Object attri_val = lay_val.eGet(valu);
+        attributesValueList[l] = String.valueOf(attri_val);
+        l = (l + 1);
+      }
+    }
+    return layerInformations;
+  }
+}
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/.classpath b/aiml/org.eclipse.papyrus.aiml.profile/.classpath
new file mode 100644
index 0000000..8d613a1
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src-gen"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="target/classes"/>
+</classpath>
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/.project b/aiml/org.eclipse.papyrus.aiml.profile/.project
new file mode 100644
index 0000000..c698101
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.aiml.profile</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+		<nature>org.eclipse.pde.PluginNature</nature>
+	</natures>
+</projectDescription>
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/.settings/org.eclipse.jdt.core.prefs b/aiml/org.eclipse.papyrus.aiml.profile/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0fee6a9
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,15 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
+org.eclipse.jdt.core.compiler.release=disabled
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/META-INF/MANIFEST.MF b/aiml/org.eclipse.papyrus.aiml.profile/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..8acfbf1
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/META-INF/MANIFEST.MF
@@ -0,0 +1,85 @@
+Manifest-Version: 1.0
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.emf.ecore.xmi;visibility:=reexport,
+ org.eclipse.uml2.types;visibility:=reexport,
+ org.eclipse.uml2.uml;bundle-version="5.0.0";visibility:=reexport,
+ org.eclipse.papyrus.uml.properties;bundle-version="3.0.0"
+Bundle-Vendor: %providerName
+Bundle-ActivationPolicy: lazy
+Bundle-ClassPath: .
+Bundle-Version: 0.7.0.qualifier
+Bundle-Localization: plugin
+Bundle-Name: %pluginName
+Bundle-Activator: org.eclipse.papyrus.aiml.profile.Activator
+Bundle-ManifestVersion: 2
+Bundle-SymbolicName: org.eclipse.papyrus.aiml.profile;singleton:=true
+Automatic-Module-Name: org.eclipse.papyrus.aiml.profile
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.papyrus.aiml.profile,
+ org.eclipse.papyrus.aiml.profile.AIML,
+ org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers,
+ org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl,
+ org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.util,
+ org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers,
+ org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl,
+ org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.util,
+ org.eclipse.papyrus.aiml.profile.AIML.Distance_functions,
+ org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl,
+ org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.util,
+ org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers,
+ org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl,
+ org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.util,
+ org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints,
+ org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl,
+ org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.util,
+ org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers,
+ org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl,
+ org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.util,
+ org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers,
+ org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl,
+ org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.util,
+ org.eclipse.papyrus.aiml.profile.AIML.Linear_layers,
+ org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl,
+ org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.util,
+ org.eclipse.papyrus.aiml.profile.AIML.Loss_functions,
+ org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl,
+ org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.util,
+ org.eclipse.papyrus.aiml.profile.AIML.Module,
+ org.eclipse.papyrus.aiml.profile.AIML.Module.impl,
+ org.eclipse.papyrus.aiml.profile.AIML.Module.util,
+ org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations,
+ org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl,
+ org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.util,
+ org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers,
+ org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl,
+ org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.util,
+ org.eclipse.papyrus.aiml.profile.AIML.Padding_layers,
+ org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl,
+ org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.util,
+ org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers,
+ org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl,
+ org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.util,
+ org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers,
+ org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl,
+ org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.util,
+ org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations,
+ org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl,
+ org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.util,
+ org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers,
+ org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl,
+ org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.util,
+ org.eclipse.papyrus.aiml.profile.AIML.Tensor,
+ org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl,
+ org.eclipse.papyrus.aiml.profile.AIML.Tensor.util,
+ org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers,
+ org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl,
+ org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.util,
+ org.eclipse.papyrus.aiml.profile.AIML.Vision_layers,
+ org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl,
+ org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.util,
+ org.eclipse.papyrus.aiml.profile.AIML.datatypes,
+ org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl,
+ org.eclipse.papyrus.aiml.profile.AIML.datatypes.util,
+ org.eclipse.papyrus.aiml.profile.AIML.impl,
+ org.eclipse.papyrus.aiml.profile.AIML.util
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/build.properties b/aiml/org.eclipse.papyrus.aiml.profile/build.properties
new file mode 100644
index 0000000..d166f67
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/build.properties
@@ -0,0 +1,12 @@
+source.. = src/,\
+           src-gen/
+output.. = target/classes/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml,\
+               profiles/,\
+               libraries/,\
+               plugin.properties,\
+               properties/,\
+               icons/,\
+               profile/
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/icons/aiml-16x16.png b/aiml/org.eclipse.papyrus.aiml.profile/icons/aiml-16x16.png
new file mode 100644
index 0000000..61c8fc4
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/icons/aiml-16x16.png
Binary files differ
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/icons/aiml-16x16.svg b/aiml/org.eclipse.papyrus.aiml.profile/icons/aiml-16x16.svg
new file mode 100644
index 0000000..90a551d
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/icons/aiml-16x16.svg
@@ -0,0 +1,361 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   version="1.2"
+   width="300"
+   height="300"
+   id="svg2"
+   inkscape:version="0.92.3 (2405546, 2018-03-11)"
+   sodipodi:docname="aiml-16x16.svg"
+   inkscape:export-filename="C:\Users\sli\Documents\Work\Papyrus\Software Designer\papyrus-designer-hash_aldo.png"
+   inkscape:export-xdpi="299.91537"
+   inkscape:export-ydpi="299.91537">
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1114"
+     inkscape:window-height="853"
+     id="namedview53"
+     showgrid="false"
+     inkscape:zoom="1.1451746"
+     inkscape:cx="171.26294"
+     inkscape:cy="32.995663"
+     inkscape:window-x="428"
+     inkscape:window-y="79"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="2-7"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0" />
+  <defs
+     id="defs4">
+    <linearGradient
+       id="linearGradient6078-7-52-5-7-4">
+      <stop
+         id="stop6080-1-3-6-4-2"
+         style="stop-color:#98bf0c;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop6082-0-24-0-0-7"
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4487-2-17-7-1-4-93">
+      <stop
+         id="stop4489-8-40-2-1-8-1"
+         style="stop-color:#009bba;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop4491-2-9-1-9-8-9"
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5467-45-65">
+      <stop
+         style="stop-color:#1f211c;stop-opacity:1;"
+         offset="0"
+         id="stop5469-5-02" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="1"
+         id="stop5471-17-8" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3340">
+      <stop
+         style="stop-color:#1f211c;stop-opacity:1;"
+         offset="0"
+         id="stop3342" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="1"
+         id="stop3344" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6078-7-52-5-7-4"
+       id="linearGradient3122"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.86436155,0,0,0.86436155,-63.693388,67.13087)"
+       x1="306.31415"
+       y1="189.24405"
+       x2="282.51758"
+       y2="2.6277814" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4487-2-17-7-1-4-93"
+       id="linearGradient3124"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.86436155,0,0,0.86436155,-63.693395,67.13087)"
+       x1="336.48462"
+       y1="203.12489"
+       x2="335.16684"
+       y2="73.530258" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5467-45-65"
+       id="linearGradient3126"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.86436155,0,0,0.86436155,-63.693395,67.13087)"
+       x1="238.62624"
+       y1="155.18745"
+       x2="243.81149"
+       y2="91.254097" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5467-45-65"
+       id="linearGradient3128"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.4499202,0,0,0.4499202,95.285803,147.36302)"
+       x1="231.79408"
+       y1="67.509285"
+       x2="237.63275"
+       y2="26.82687" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6078-7-52-5-7-4-1"
+       id="linearGradient3350"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.86436155,0,0,0.86436155,-63.693388,67.13087)"
+       x1="306.31415"
+       y1="189.24405"
+       x2="282.51758"
+       y2="2.6277814" />
+    <linearGradient
+       id="linearGradient6078-7-52-5-7-4-1">
+      <stop
+         id="stop6080-1-3-6-4-2-7"
+         style="stop-color:#98bf0c;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop6082-0-24-0-0-7-4"
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4487-2-17-7-1-4-93-0"
+       id="linearGradient3352"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.86436155,0,0,0.86436155,-63.693395,67.13087)"
+       x1="336.48462"
+       y1="203.12489"
+       x2="335.16684"
+       y2="73.530258" />
+    <linearGradient
+       id="linearGradient4487-2-17-7-1-4-93-0">
+      <stop
+         id="stop4489-8-40-2-1-8-1-9"
+         style="stop-color:#009bba;stop-opacity:1"
+         offset="0" />
+      <stop
+         id="stop4491-2-9-1-9-8-9-4"
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5467-45-65-8"
+       id="linearGradient3354"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.86436155,0,0,0.86436155,-63.693395,67.13087)"
+       x1="238.62624"
+       y1="155.18745"
+       x2="243.81149"
+       y2="91.254097" />
+    <linearGradient
+       id="linearGradient5467-45-65-8">
+      <stop
+         style="stop-color:#1f211c;stop-opacity:1;"
+         offset="0"
+         id="stop5469-5-02-8" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="1"
+         id="stop5471-17-8-2" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5467-45-65-8"
+       id="linearGradient3356"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.4499202,0,0,0.4499202,95.285803,147.36302)"
+       x1="231.79408"
+       y1="67.509285"
+       x2="237.63275"
+       y2="26.82687" />
+    <linearGradient
+       id="linearGradient3342">
+      <stop
+         style="stop-color:#1f211c;stop-opacity:1;"
+         offset="0"
+         id="stop3344-4" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="1"
+         id="stop3346" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5467-45-65-8"
+       id="linearGradient3090"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.93826246,0,0,0.87686743,849.58383,60.096489)"
+       x1="231.79408"
+       y1="67.509285"
+       x2="237.63275"
+       y2="26.82687" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5467-45-65-8"
+       id="linearGradient3093"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.8025374,0,0,1.6845887,518.049,-96.271149)"
+       x1="238.62624"
+       y1="155.18745"
+       x2="243.81149"
+       y2="91.254097" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4487-2-17-7-1-4-93-0"
+       id="linearGradient3096"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.8025374,0,0,1.6845887,518.049,-96.271149)"
+       x1="336.48462"
+       y1="203.12489"
+       x2="335.16684"
+       y2="73.530258" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6078-7-52-5-7-4-1"
+       id="linearGradient3099"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.8025374,0,0,1.6845887,518.04902,-96.271149)"
+       x1="306.31415"
+       y1="189.24405"
+       x2="282.51758"
+       y2="2.6277814" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient6078-7-52-5-7-4"
+       id="linearGradient3143"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.86436155,0,0,0.86436155,-63.693388,67.13087)"
+       x1="306.31415"
+       y1="189.24405"
+       x2="282.51758"
+       y2="2.6277814" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4487-2-17-7-1-4-93"
+       id="linearGradient3145"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.86436155,0,0,0.86436155,-63.693395,67.13087)"
+       x1="336.48462"
+       y1="203.12489"
+       x2="335.16684"
+       y2="73.530258" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5467-45-65"
+       id="linearGradient3147"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.86436155,0,0,0.86436155,-63.693395,67.13087)"
+       x1="238.62624"
+       y1="155.18745"
+       x2="243.81149"
+       y2="91.254097" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5467-45-65"
+       id="linearGradient3149"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.4499202,0,0,0.4499202,95.285803,147.36302)"
+       x1="231.79408"
+       y1="67.509285"
+       x2="237.63275"
+       y2="26.82687" />
+  </defs>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     transform="translate(886.32636,-288.59997)"
+     id="layer2" />
+  <g
+     transform="matrix(0.65065408,0,0,0.6957592,913.0888,601.14772)"
+     id="1-9"
+     style="fill:#9c9e9f;fill-opacity:1">
+    <g
+       id="2-7"
+       style="font-style:normal;font-weight:bold;font-size:90px;font-family:'Liberation Sans Narrow';text-align:start;text-anchor:start;fill:#9c9e9f">
+      <g
+         id="g3270-4"
+         transform="matrix(3.1393502,0,0,2.9339277,-1716.8867,-1337.6369)"
+         style="opacity:0.5">
+        <path
+           inkscape:connector-curvature="0"
+           style="fill:url(#linearGradient3143);fill-opacity:1;stroke:none"
+           id="path3031-7-5-1-8"
+           d="m 170.4552,273.89087 c -0.0552,-19.9253 8.25185,-38.93343 19.1893,-55.24878 3.10516,-5.3021 8.37808,-9.42582 9.68999,-15.65649 1.33582,-4.79102 -2.94424,-6.91969 -7.88207,-7.26702 -6.39659,-0.74146 -14.20202,-2.7884 -16.8149,-9.39191 -1.97367,-6.74391 2.46299,-13.85284 8.05544,-17.40115 6.22916,-3.97466 13.68382,-5.49426 20.9663,-5.95905 1.549,-0.0892 1.84332,-0.17206 5.46367,0.0494 6.95068,0.29055 13.48526,5.04236 15.30129,11.85471 2.64956,9.21682 0.81292,19.18629 -2.66253,27.93738 -4.26292,10.29718 -10.69502,19.54187 -17.8991,27.9818 -8.31731,11.08804 -11.4163,25.38509 -10.32509,39.05004 -7.81659,2.30834 -19.22891,4.14444 -23.0823,4.05106 z" />
+        <path
+           inkscape:connector-curvature="0"
+           style="fill:url(#linearGradient3145);fill-opacity:1;stroke:none"
+           id="path3029-6-0-4-6"
+           d="m 195.26467,269.26425 c -1.31017,-15.35067 3.07505,-31.53227 13.76603,-42.91607 7.80963,-10.01138 14.85775,-21.20841 17.40753,-33.81375 1.51623,-8.17574 1.71265,-17.79667 -4.10578,-24.42052 -1.0537,-1.26018 -5.74736,-3.76752 -1.68149,-2.30694 4.17722,1.16472 6.41874,3.69589 8.60337,6.72655 11.57621,14.91935 15.61555,35.47722 9.80943,53.52972 -6.29746,20.51829 -23.74144,36.4284 -43.79909,43.20101 z" />
+        <path
+           inkscape:connector-curvature="0"
+           style="fill:url(#linearGradient3147);fill-opacity:1;stroke:none"
+           id="path3045-1-9-0-2-5"
+           d="m 107.46748,235.60585 c 0.58313,-18.71257 10.28274,-37.03864 25.89626,-47.52231 12.38891,-8.51861 27.3572,-12.45393 42.18193,-13.80383 -2.54561,4.00525 -4.1248,9.45099 -1.78496,13.98335 1.34432,3.06808 5.46883,4.6021 4.98615,4.87012 -21.31259,0.0188 -43.31305,7.54678 -58.0799,23.34878 -5.5153,5.82742 -9.86615,12.6909 -13.15918,19.99075 -0.0477,-0.2862 -0.0354,-0.57766 -0.0404,-0.86686 z" />
+        <path
+           inkscape:connector-curvature="0"
+           style="fill:url(#linearGradient3149);fill-opacity:1;stroke:none"
+           id="path3027-4-0-3-0"
+           d="m 199.21723,178.2402 c -1.20476,-0.1342 -2.17052,-0.44343 -2.8576,-0.915 -0.30618,-0.21016 -0.64307,-0.57942 -0.78608,-0.86165 -0.11887,-0.23455 -0.13203,-0.30257 -0.13203,-0.68248 0,-0.37305 0.0144,-0.45154 0.12542,-0.67732 0.65619,-1.33614 3.13045,-2.22288 5.54456,-1.98709 1.39653,0.13641 2.5031,0.56228 3.17232,1.22092 0.4471,0.44004 0.57477,0.71625 0.57477,1.24362 0,0.53119 -0.12573,0.79896 -0.59612,1.2696 -0.87863,0.87908 -2.54914,1.42833 -4.29009,1.41058 -0.34204,-0.004 -0.68185,-0.0129 -0.75515,-0.0212 z" />
+      </g>
+      <text
+         xml:space="preserve"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:171.97537231px;line-height:0%;font-family:Arial;-inkscape-font-specification:Arial;text-align:start;letter-spacing:0px;word-spacing:0px;text-anchor:start;fill:#0099ba;fill-opacity:1;stroke:none;stroke-width:1.91083741"
+         x="-1286.4893"
+         y="-453.35599"
+         id="text3020-4-0"
+         transform="scale(1.0340806,0.9670426)"><tspan
+           sodipodi:role="line"
+           x="-1286.4893"
+           y="-453.35599"
+           style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:212.05375671px;line-height:1.25;font-family:'Aldo the Apache';-inkscape-font-specification:'Aldo the Apache, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#626262;fill-opacity:1;stroke-width:1.91083741"
+           id="tspan866-8">#AI</tspan></text>
+    </g>
+    <g
+       id="3-1"
+       style="font-style:normal;font-weight:normal;font-size:13.80000019px;font-family:Calibri;text-align:start;text-anchor:start;fill:#9c9e9f" />
+  </g>
+</svg>
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/plugin.properties b/aiml/org.eclipse.papyrus.aiml.profile/plugin.properties
new file mode 100644
index 0000000..4f00e9e
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/plugin.properties
@@ -0,0 +1,10 @@
+# Copyright (c) CEA LIST.
+#
+# This program and the accompanying materials are made
+# available under the terms of the Eclipse Public License 2.0
+# which is available at https://www.eclipse.org/legal/epl-2.0/
+#
+# SPDX-License-Identifier: EPL-2.0
+#
+pluginName=Papyrus AIML profile
+providerName=Eclipse Modeling Project
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/plugin.xml b/aiml/org.eclipse.papyrus.aiml.profile/plugin.xml
new file mode 100644
index 0000000..6af8411
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/plugin.xml
@@ -0,0 +1,291 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+	<extension
+			point="org.eclipse.emf.ecore.uri_mapping">
+		<mapping
+			source="pathmap://AIML_PROFILES/"
+			target="platform:/plugin/org.eclipse.papyrus.aiml.profile/profile/"/>
+	</extension>
+
+	<extension
+			point="org.eclipse.papyrus.uml.extensionpoints.UMLProfile">
+		<profile
+			description="AI (neural network) profile"
+			iconpath="icons/aiml-16x16.png"
+			name="AIML"
+			path="pathmap://AIML_PROFILES/AIML.profile.uml"
+			provider="CEA LIST">
+		</profile>
+	</extension>
+
+	<extension
+			point="org.eclipse.uml2.uml.generated_package">
+		<profile
+			uri="http://www.eclipse.org/papyrus/AIML/1"
+			location="pathmap://AIML_PROFILES/AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+	</extension>
+
+	<extension point="org.eclipse.emf.ecore.generated_package">
+	<!-- @generated AIML -->
+		<package
+			uri="http://www.eclipse.org/papyrus/AIML/1"
+			class="org.eclipse.papyrus.aiml.profile.AIML.AIMLPackage"
+			genModel="profile/AIML.genmodel"/>
+	</extension>
+
+	<extension
+			point="org.eclipse.uml2.uml.generated_package">
+		<profile
+			uri="http://www.eclipse.org/papyrus/AIML/module/1"
+			location="pathmap://AIML_PROFILES/AIML.profile.uml#_u1dx8JT1Eeq5BK6mmo2rWg"/>
+	</extension>
+
+	<extension point="org.eclipse.emf.ecore.generated_package">
+		<!-- @generated AIML -->
+		<package
+			uri="http://www.eclipse.org/papyrus/AIML/module/1"
+			class="org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage"
+			genModel="profile/AIML.genmodel"/>
+	</extension>
+
+	<extension
+			point="org.eclipse.uml2.uml.generated_package">
+		<profile
+			uri="http://www.eclipse.org/papyrus/AIML/tensor/1"
+			location="pathmap://AIML_PROFILES/AIML.profile.uml#_38DjAJT1Eeq5BK6mmo2rWg"/>
+	</extension>
+
+	<extension point="org.eclipse.emf.ecore.generated_package">
+		<!-- @generated AIML -->
+		<package
+			uri="http://www.eclipse.org/papyrus/AIML/tensor/1"
+			class="org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage"
+			genModel="profile/AIML.genmodel"/>
+	</extension>
+
+	<extension
+			point="org.eclipse.uml2.uml.generated_package">
+		<profile
+			uri="http://www.eclipse.org/papyrus/AIML/pooling/1"
+			location="pathmap://AIML_PROFILES/AIML.profile.uml#_Deu8AJT2Eeq5BK6mmo2rWg"/>
+	</extension>
+  
+	<extension point="org.eclipse.emf.ecore.generated_package">
+		<!-- @generated AIML -->
+		<package
+			uri="http://www.eclipse.org/papyrus/AIML/pooling/1"
+			class="org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage"
+			genModel="profile/AIML.genmodel"/>
+	</extension>
+
+	<extension
+			point="org.eclipse.uml2.uml.generated_package">
+		<profile
+			uri="http://www.eclipse.org/papyrus/AIML/convolution/1"
+			location="pathmap://AIML_PROFILES/AIML.profile.uml#_Nr2NYJOPEeqnY_bZg2Ebjg"/>
+	</extension>
+  
+	<extension point="org.eclipse.emf.ecore.generated_package">
+		<!-- @generated AIML -->
+		<package
+			uri="http://www.eclipse.org/papyrus/AIML/convolution/1"
+			class="org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage"
+			genModel="profile/AIML.genmodel"/>
+	</extension>
+
+	<extension
+			point="org.eclipse.uml2.uml.generated_package">
+		<profile
+			uri="http://www.eclipse.org/papyrus/AIML/padding/1"
+			location="pathmap://AIML_PROFILES/AIML.profile.uml#_2_xEcJT2Eeq5BK6mmo2rWg"/>
+	</extension>
+
+	<extension point="org.eclipse.emf.ecore.generated_package">
+		<!-- @generated AIML -->
+		<package
+			uri="http://www.eclipse.org/papyrus/AIML/padding/1"
+			class="org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage"
+			genModel="profile/AIML.genmodel"/>
+	</extension>
+
+	<extension
+			point="org.eclipse.uml2.uml.generated_package">
+		<profile
+			uri="http://www.eclipse.org/papyrus/AIML/nonlinear/1"
+			location="pathmap://AIML_PROFILES/AIML.profile.uml#_H7fbMJT2Eeq5BK6mmo2rWg"/>
+	</extension>
+
+	<extension point="org.eclipse.emf.ecore.generated_package">
+		<!-- @generated AIML -->
+		<package
+			uri="http://www.eclipse.org/papyrus/AIML/nonlinear/1"
+			class="org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage"
+			genModel="profile/AIML.genmodel"/>
+	</extension>
+
+	<extension
+			point="org.eclipse.uml2.uml.generated_package">
+		<profile
+			uri="http://www.eclipse.org/papyrus/AIML/softminmax/1"
+			location="pathmap://AIML_PROFILES/AIML.profile.uml#_H7fbMJT2Eeq5BK6mmo2rWg"/>
+	</extension>
+
+	<extension point="org.eclipse.emf.ecore.generated_package">
+		<!-- @generated AIML -->
+		<package
+			uri="http://www.eclipse.org/papyrus/AIML/softminmax/1"
+			class="org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage"
+			genModel="profile/AIML.genmodel"/>
+	</extension>
+
+	<extension
+			point="org.eclipse.uml2.uml.generated_package">
+		<profile
+			uri="http://www.eclipse.org/papyrus/AIML/normalization/1"
+			location="pathmap://AIML_PROFILES/AIML.profile.uml#_N5zMsJT2Eeq5BK6mmo2rWg"/>
+	</extension>
+
+	<extension point="org.eclipse.emf.ecore.generated_package">
+		<!-- @generated AIML -->
+		<package
+			uri="http://www.eclipse.org/papyrus/AIML/normalization/1"
+			class="org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage"
+			genModel="profile/AIML.genmodel"/>
+	</extension>
+
+	<extension
+			point="org.eclipse.uml2.uml.generated_package">
+		<profile
+			uri="http://www.eclipse.org/papyrus/AIML/recurrent/1"
+			location="pathmap://AIML_PROFILES/AIML.profile.uml#_RAjiQJT2Eeq5BK6mmo2rWg"/>
+	</extension>
+
+	<extension point="org.eclipse.emf.ecore.generated_package">
+		<!-- @generated AIML -->
+		<package
+			uri="http://www.eclipse.org/papyrus/AIML/recurrent/1"
+			class="org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage"
+			genModel="profile/AIML.genmodel"/>
+	</extension>
+
+	<extension
+			point="org.eclipse.uml2.uml.generated_package">
+		<profile
+			uri="http://www.eclipse.org/papyrus/AIML/transformer/1"
+			location="pathmap://AIML_PROFILES/AIML.profile.uml#_T8DDAJT2Eeq5BK6mmo2rWg"/>
+	</extension>
+
+	<extension point="org.eclipse.emf.ecore.generated_package">
+		<!-- @generated AIML -->
+		<package
+			uri="http://www.eclipse.org/papyrus/AIML/transformer/1"
+			class="org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage"
+			genModel="profile/AIML.genmodel"/>
+	</extension>
+
+	<extension
+			point="org.eclipse.uml2.uml.generated_package">
+		<profile
+			uri="http://www.eclipse.org/papyrus/AIML/linear/1"
+			location="pathmap://AIML_PROFILES/AIML.profile.uml#_WwqfsJT2Eeq5BK6mmo2rWg"/>
+	</extension>
+
+	<extension point="org.eclipse.emf.ecore.generated_package">
+		<!-- @generated AIML -->
+		<package
+			uri="http://www.eclipse.org/papyrus/AIML/linear/1"
+			class="org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage"
+			genModel="profile/AIML.genmodel"/>
+	</extension>
+
+	<extension
+			point="org.eclipse.uml2.uml.generated_package">
+		<profile
+			uri="http://www.eclipse.org/papyrus/AIML/dropout/1"
+			location="pathmap://AIML_PROFILES/AIML.profile.uml#_ZUMzcJT2Eeq5BK6mmo2rWg"/>
+	</extension>
+
+	<extension point="org.eclipse.emf.ecore.generated_package">
+		<!-- @generated AIML -->
+		<package
+			uri="http://www.eclipse.org/papyrus/AIML/dropout/1"
+			class="org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage"
+			genModel="profile/AIML.genmodel"/>
+	</extension>
+
+	<extension
+			point="org.eclipse.uml2.uml.generated_package">
+		<profile
+			uri="http://www.eclipse.org/papyrus/AIML/sparse/1"
+			location="pathmap://AIML_PROFILES/AIML.profile.uml#_cKwJ0JT2Eeq5BK6mmo2rWg"/>
+	</extension>
+
+	<extension point="org.eclipse.emf.ecore.generated_package">
+		<!-- @generated AIML -->
+		<package
+			uri="http://www.eclipse.org/papyrus/AIML/sparse/1"
+			class="org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage"
+			genModel="profile/AIML.genmodel"/>
+	</extension>
+
+	<extension
+			point="org.eclipse.uml2.uml.generated_package">
+		<profile
+			uri="http://www.eclipse.org/papyrus/AIML/distance/1"
+			location="pathmap://AIML_PROFILES/AIML.profile.uml#_fjUoIJT2Eeq5BK6mmo2rWg"/>
+	</extension>
+
+	<extension point="org.eclipse.emf.ecore.generated_package">
+		<!-- @generated AIML -->
+		<package
+			uri="http://www.eclipse.org/papyrus/AIML/distance/1"
+			class="org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage"
+			genModel="profile/AIML.genmodel"/>
+	</extension>
+
+	<extension
+			point="org.eclipse.uml2.uml.generated_package">
+		<profile
+			uri="http://www.eclipse.org/papyrus/AIML/loss/1"
+			location="pathmap://AIML_PROFILES/AIML.profile.uml#_nZcP0JT2Eeq5BK6mmo2rWg"/>
+	</extension>
+
+	<extension point="org.eclipse.emf.ecore.generated_package">
+		<!-- @generated AIML -->
+		<package
+			uri="http://www.eclipse.org/papyrus/AIML/loss/1"
+			class="org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage"
+			genModel="profile/AIML.genmodel"/>
+	</extension>
+
+	<extension
+			point="org.eclipse.uml2.uml.generated_package">
+		<profile
+			uri="http://www.eclipse.org/papyrus/AIML/vision/1"
+			location="pathmap://AIML_PROFILES/AIML.profile.uml#_q6FsEJT2Eeq5BK6mmo2rWg"/>
+	</extension>
+
+	<extension point="org.eclipse.emf.ecore.generated_package">
+		<!-- @generated AIML -->
+		<package
+			uri="http://www.eclipse.org/papyrus/AIML/vision/1"
+			class="org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage"
+			genModel="profile/AIML.genmodel"/>
+	</extension>
+
+	<extension
+			point="org.eclipse.uml2.uml.generated_package">
+		<profile
+			uri="http://www.eclipse.org/papyrus/AIML/dataparallel/1"
+			location="pathmap://AIML_PROFILES/AIML.profile.uml#_wBUroJT2Eeq5BK6mmo2rWg"/>
+	</extension>
+
+	<extension point="org.eclipse.emf.ecore.generated_package">
+		<!-- @generated AIML -->
+		<package
+			uri="http://www.eclipse.org/papyrus/AIML/dataparallel/1"
+			class="org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage"
+			genModel="profile/AIML.genmodel"/>
+	</extension>
+</plugin>
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/profile/AIML.ecore b/aiml/org.eclipse.papyrus.aiml.profile/profile/AIML.ecore
new file mode 100644
index 0000000..f558ce0
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/profile/AIML.ecore
@@ -0,0 +1,845 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="AIML" nsURI="http://www.eclipse.org/papyrus/AIML/1" nsPrefix="AIML">
+  <eClassifiers xsi:type="ecore:EClass" name="SmoothL1Loss" eSuperTypes="#//Loss_functions/Loss_functions_1"/>
+  <eClassifiers xsi:type="ecore:EClass" name="SoftMarginLoss" eSuperTypes="#//Loss_functions/Loss_functions_1"/>
+  <eClassifiers xsi:type="ecore:EClass" name="MultiLabelSoftMarginLoss" eSuperTypes="#//Loss_functions/Loss_functions_1_2"/>
+  <eSubpackages name="Module" nsURI="http://www.eclipse.org/papyrus/AIML/module/1"
+      nsPrefix="AIML.Module">
+    <eClassifiers xsi:type="ecore:EClass" name="Model">
+      <eStructuralFeatures xsi:type="ecore:EReference" name="base_Class" ordered="false"
+          eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"
+          changeable="false" volatile="true" transient="true" derived="true"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="data" ordered="false"
+          lowerBound="1" eType="#//Tensor/Tensor"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="requires_grad" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="subModule" ordered="false"
+          upperBound="-1" eType="#//Module/Model"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="optimizer" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="loss" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+    </eClassifiers>
+  </eSubpackages>
+  <eSubpackages name="Tensor" nsURI="http://www.eclipse.org/papyrus/AIML/tensor/1"
+      nsPrefix="AIML.Tensor">
+    <eClassifiers xsi:type="ecore:EEnum" name="EDType">
+      <eLiterals name="float32"/>
+      <eLiterals name="float64" value="1"/>
+      <eLiterals name="float16" value="2"/>
+      <eLiterals name="uint8" value="3"/>
+      <eLiterals name="int8" value="4"/>
+      <eLiterals name="int16" value="5"/>
+      <eLiterals name="int32" value="6"/>
+      <eLiterals name="int64" value="7"/>
+      <eLiterals name="bool" value="8"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EEnum" name="ETensorTypes">
+      <eLiterals name="FloatTensor"/>
+      <eLiterals name="DoubleTensor" value="1"/>
+      <eLiterals name="HalfTensor" value="2"/>
+      <eLiterals name="ByteTensor" value="3"/>
+      <eLiterals name="CharTensor" value="4"/>
+      <eLiterals name="ShortTensor" value="5"/>
+      <eLiterals name="IntTensor" value="6"/>
+      <eLiterals name="LongTensor" value="7"/>
+      <eLiterals name="BoolTensor" value="8"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Tensor">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="data" ordered="false"
+          upperBound="-1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="dtype" ordered="false"
+          eType="#//Tensor/EDType"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="device" ordered="false"
+          eType="#//datatypes/Device"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="requires_grad" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="pin_memory" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="shape" ordered="false"
+          upperBound="-1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="name" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="base_Class" ordered="false"
+          eType="ecore:EClass ../../org.eclipse.uml2.uml/model/UML.ecore#//Class"/>
+    </eClassifiers>
+  </eSubpackages>
+  <eSubpackages name="datatypes" nsURI="http:///AIML/datatypes.ecore" nsPrefix="AIML.datatypes">
+    <eClassifiers xsi:type="ecore:EClass" name="Device">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="type" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+    </eClassifiers>
+  </eSubpackages>
+  <eSubpackages name="Pooling_layers" nsURI="http://www.eclipse.org/papyrus/AIML/pooling/1"
+      nsPrefix="AIML.Pooling_layers">
+    <eClassifiers xsi:type="ecore:EClass" name="Pooling_layers" abstract="true" eSuperTypes="#//Module/Model"/>
+    <eClassifiers xsi:type="ecore:EClass" name="Pooling_layers_1" abstract="true"
+        eSuperTypes="#//Pooling_layers/Pooling_layers">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="kernel_size" ordered="false"
+          upperBound="-1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Pooling_layers_2" abstract="true"
+        eSuperTypes="#//Pooling_layers/Pooling_layers">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="output_size" ordered="false"
+          upperBound="-1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="AdaptativeMaxPool" abstract="true"
+        eSuperTypes="#//Pooling_layers/Pooling_layers_2">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="return_indices" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="AdaptativeMaxPool1d" eSuperTypes="#//Pooling_layers/AdaptativeMaxPool"/>
+    <eClassifiers xsi:type="ecore:EClass" name="AdaptativeMaxPool2d" eSuperTypes="#//Pooling_layers/AdaptativeMaxPool"/>
+    <eClassifiers xsi:type="ecore:EClass" name="AdaptativeMaxPool3d" eSuperTypes="#//Pooling_layers/AdaptativeMaxPool"/>
+    <eClassifiers xsi:type="ecore:EClass" name="AdaptiveAvgPool3d" eSuperTypes="#//Pooling_layers/Pooling_layers_2"/>
+    <eClassifiers xsi:type="ecore:EClass" name="AdaptiveAvgPool2d" eSuperTypes="#//Pooling_layers/Pooling_layers_2"/>
+    <eClassifiers xsi:type="ecore:EClass" name="AdaptiveAvgPool1d" eSuperTypes="#//Pooling_layers/Pooling_layers_2"/>
+    <eClassifiers xsi:type="ecore:EClass" name="Pooling_layers_1_1" abstract="true"
+        eSuperTypes="#//Pooling_layers/Pooling_layers_1">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="stride" ordered="false"
+          upperBound="-1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="MaxPool1d" eSuperTypes="#//Pooling_layers/MaxPool"/>
+    <eClassifiers xsi:type="ecore:EClass" name="MaxPool" abstract="true" eSuperTypes="#//Pooling_layers/Pooling_layers_1_1_1_1">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="dilation" ordered="false"
+          upperBound="-1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="return_indices" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Pooling_layers_1_1_1_1" abstract="true"
+        eSuperTypes="#//Pooling_layers/Pooling_layers_1_1_1">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="ceil_mode" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="pool_size" ordered="false"
+          upperBound="-1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Pooling_layers_1_1_1" abstract="true"
+        eSuperTypes="#//Pooling_layers/Pooling_layers_1_1">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="padding" ordered="false"
+          upperBound="-1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="padding_k" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="MaxUnpool1d" eSuperTypes="#//Pooling_layers/Pooling_layers_1_1_1"/>
+    <eClassifiers xsi:type="ecore:EClass" name="AvgPool1d" eSuperTypes="#//Pooling_layers/Pooling_layers_1_1_2_1"/>
+    <eClassifiers xsi:type="ecore:EClass" name="Pooling_layers_1_1_2_1" abstract="true"
+        eSuperTypes="#//Pooling_layers/Pooling_layers_1_1_1_1">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="count_include_pad" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="MaxUnpool2d" eSuperTypes="#//Pooling_layers/Pooling_layers_1_1_1"/>
+    <eClassifiers xsi:type="ecore:EClass" name="MaxUnpool3d" eSuperTypes="#//Pooling_layers/Pooling_layers_1_1_1"/>
+    <eClassifiers xsi:type="ecore:EClass" name="Pooling_layers_1_1_2" abstract="true"
+        eSuperTypes="#//Pooling_layers/Pooling_layers_1_1">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="ceil_mode" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="LPPool1d" eSuperTypes="#//Pooling_layers/Pooling_layers_1_1_2"/>
+    <eClassifiers xsi:type="ecore:EClass" name="LPPool2d" eSuperTypes="#//Pooling_layers/Pooling_layers_1_1_2"/>
+    <eClassifiers xsi:type="ecore:EClass" name="AvgPool2d3d" abstract="true" eSuperTypes="#//Pooling_layers/Pooling_layers_1_1_2_1">
+      <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <details key="originalName" value="AvgPool2d/3d"/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="divisor_override" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="AvgPool2d" eSuperTypes="#//Pooling_layers/AvgPool2d3d"/>
+    <eClassifiers xsi:type="ecore:EClass" name="AvgPool3d" eSuperTypes="#//Pooling_layers/AvgPool2d3d"/>
+    <eClassifiers xsi:type="ecore:EClass" name="MaxPool2d" eSuperTypes="#//Pooling_layers/MaxPool"/>
+    <eClassifiers xsi:type="ecore:EClass" name="MaxPool3d" eSuperTypes="#//Pooling_layers/MaxPool"/>
+    <eClassifiers xsi:type="ecore:EClass" name="FractionalMaxPool2d" eSuperTypes="#//Pooling_layers/Pooling_layers_1">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="output_size" ordered="false"
+          upperBound="-1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="output_ratio" ordered="false"
+          upperBound="-1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="return_indices" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+    </eClassifiers>
+  </eSubpackages>
+  <eSubpackages name="Convolution_layers" nsURI="http://www.eclipse.org/papyrus/AIML/convolution/1"
+      nsPrefix="AIML.Convolution_layers">
+    <eClassifiers xsi:type="ecore:EClass" name="Convolution" abstract="true" eSuperTypes="#//Convolution_layers/Convolution_layers">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="in_channels" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="groups" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="biais" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="padding_mode" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="data_format" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="dilation_rate" ordered="false"
+          upperBound="-1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="activation" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="bias_initializer" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="activity_regularizer"
+          ordered="false" lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="bias_constraint" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="bias_regularizer" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Convolution_layers" abstract="true"
+        eSuperTypes="#//Module/Model">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="kernel_size" ordered="false"
+          upperBound="-1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="stride" ordered="false"
+          upperBound="-1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="padding" ordered="false"
+          upperBound="-1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="dilation" ordered="false"
+          upperBound="-1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Unfold" eSuperTypes="#//Convolution_layers/Convolution_layers"/>
+    <eClassifiers xsi:type="ecore:EClass" name="Fold" eSuperTypes="#//Convolution_layers/Convolution_layers">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="output_size" ordered="false"
+          upperBound="-1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Conv2d" eSuperTypes="#//Convolution_layers/basic"/>
+    <eClassifiers xsi:type="ecore:EClass" name="basic" abstract="true" eSuperTypes="#//Convolution_layers/LayerWithFilter">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="kernel_initializer" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="kernel_constraint" ordered="false"
+          lowerBound="1" eType="#//Layer_weight_constraints/constraints"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="kernel_regularizer" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="LayerWithFilter" abstract="true" eSuperTypes="#//Convolution_layers/Convolution">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="out_channels" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Conv3d" eSuperTypes="#//Convolution_layers/basic"/>
+    <eClassifiers xsi:type="ecore:EClass" name="ConvTranspose1d" eSuperTypes="#//Convolution_layers/LayerWithFilter"/>
+    <eClassifiers xsi:type="ecore:EClass" name="ConvTranspose2d" eSuperTypes="#//Convolution_layers/transpose"/>
+    <eClassifiers xsi:type="ecore:EClass" name="transpose" abstract="true" eSuperTypes="#//Convolution_layers/basic">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="output_padding" ordered="false"
+          upperBound="-1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="ConvTranspose3d" eSuperTypes="#//Convolution_layers/transpose"/>
+    <eClassifiers xsi:type="ecore:EClass" name="Conv1d" eSuperTypes="#//Convolution_layers/basic"/>
+    <eClassifiers xsi:type="ecore:EClass" name="Separable" abstract="true" eSuperTypes="#//Convolution_layers/LayerWithFilter">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="depth_multiplier" ordered="false"
+          upperBound="-1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="depthwise_initializer"
+          ordered="false" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="pointwise_initializer"
+          ordered="false" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="depthwise_regularizer"
+          ordered="false" lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="poitnwise_regularizer"
+          ordered="false" lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="depthwise_constraint"
+          ordered="false" lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="pointwise_constraint"
+          ordered="false" lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="SeparableConv2D" eSuperTypes="#//Convolution_layers/Separable"/>
+    <eClassifiers xsi:type="ecore:EClass" name="SeparableConv1D" eSuperTypes="#//Convolution_layers/Separable"/>
+    <eClassifiers xsi:type="ecore:EClass" name="DepthwiseConv2D" eSuperTypes="#//Convolution_layers/Convolution">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="depth_multiplier" ordered="false"
+          upperBound="-1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="depthwise_initializer"
+          ordered="false" lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="depthwise_regularizer"
+          ordered="false" lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="depthwise_constraint"
+          ordered="false" lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+    </eClassifiers>
+  </eSubpackages>
+  <eSubpackages name="Layer_weight_constraints" nsURI="http:///AIML/Layer_weight_constraints.ecore"
+      nsPrefix="AIML.Layer_weight_constraints">
+    <eClassifiers xsi:type="ecore:EClass" name="min_max_norm" eSuperTypes="#//Layer_weight_constraints/NormWithMaxValue">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="min_value" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="rate" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="NormWithMaxValue" abstract="true"
+        eSuperTypes="#//Layer_weight_constraints/norm">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="max_value" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="norm" abstract="true" eSuperTypes="#//Layer_weight_constraints/constraints">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="axis" ordered="false"
+          lowerBound="1" upperBound="-1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="max_norm" eSuperTypes="#//Layer_weight_constraints/NormWithMaxValue"/>
+    <eClassifiers xsi:type="ecore:EClass" name="non_neg" eSuperTypes="#//Layer_weight_constraints/constraints"/>
+    <eClassifiers xsi:type="ecore:EClass" name="radial_constraint" eSuperTypes="#//Layer_weight_constraints/constraints"/>
+    <eClassifiers xsi:type="ecore:EClass" name="unit_norm" eSuperTypes="#//Layer_weight_constraints/norm"/>
+    <eClassifiers xsi:type="ecore:EClass" name="constraints" abstract="true"/>
+  </eSubpackages>
+  <eSubpackages name="Padding_layers" nsURI="http://www.eclipse.org/papyrus/AIML/padding/1"
+      nsPrefix="AIML.Padding_layers">
+    <eClassifiers xsi:type="ecore:EClass" name="Padding_layers" abstract="true" eSuperTypes="#//Module/Model">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="padding" ordered="false"
+          upperBound="-1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="ReflectionPad1d" eSuperTypes="#//Padding_layers/Padding_layers"/>
+    <eClassifiers xsi:type="ecore:EClass" name="ReflectionPad2d" eSuperTypes="#//Padding_layers/Padding_layers"/>
+    <eClassifiers xsi:type="ecore:EClass" name="ReplicationPad1d" eSuperTypes="#//Padding_layers/Padding_layers"/>
+    <eClassifiers xsi:type="ecore:EClass" name="ReplicationPad2d" eSuperTypes="#//Padding_layers/Padding_layers"/>
+    <eClassifiers xsi:type="ecore:EClass" name="ReplicationPad3d" eSuperTypes="#//Padding_layers/Padding_layers"/>
+    <eClassifiers xsi:type="ecore:EClass" name="ZeroPad2d" eSuperTypes="#//Padding_layers/Padding_layers"/>
+    <eClassifiers xsi:type="ecore:EClass" name="ConstantPad1d" eSuperTypes="#//Padding_layers/Padding_layers"/>
+    <eClassifiers xsi:type="ecore:EClass" name="ConstantPad2d" eSuperTypes="#//Padding_layers/Padding_layers"/>
+    <eClassifiers xsi:type="ecore:EClass" name="ConstantPad3d" eSuperTypes="#//Padding_layers/Padding_layers"/>
+  </eSubpackages>
+  <eSubpackages name="NonLinearActivations" nsURI="http://www.eclipse.org/papyrus/AIML/nonlinear/1"
+      nsPrefix="AIML.NonLinearActivations">
+    <eClassifiers xsi:type="ecore:EClass" name="Nonlinear_activations_weightedsumnonlinearity"
+        abstract="true" eSuperTypes="#//Module/Model">
+      <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <details key="originalName" value="Non-linear_activations_(weighted sum, nonlinearity)"/>
+      </eAnnotations>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="ELU" eSuperTypes="#//NonLinearActivations/Nonlinear_activations_weightedsumnonlinearity_1">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="alpha" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Nonlinear_activations_weightedsumnonlinearity_1"
+        abstract="true" eSuperTypes="#//NonLinearActivations/Nonlinear_activations_weightedsumnonlinearity">
+      <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
+        <details key="originalName" value="Non-linear_activations_(weighted sum, nonlinearity)_1"/>
+      </eAnnotations>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="inplace" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="shrink" abstract="true" eSuperTypes="#//NonLinearActivations/Nonlinear_activations_weightedsumnonlinearity">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="lambd" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="LeakyReLU" eSuperTypes="#//NonLinearActivations/Nonlinear_activations_weightedsumnonlinearity_1">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="negative_slope" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="LogSigmoid" eSuperTypes="#//NonLinearActivations/Nonlinear_activations_weightedsumnonlinearity"/>
+    <eClassifiers xsi:type="ecore:EClass" name="MultiheadAttention" eSuperTypes="#//NonLinearActivations/Nonlinear_activations_weightedsumnonlinearity">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="embed_dim" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="num_heads" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="dropout" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="bias" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="add_bias_kv" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean">
+        <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
+          <details key="originalName" value="add_bias_kv "/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="add_zero_attn" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="kdim" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="vdim" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="PReLU" eSuperTypes="#//NonLinearActivations/Nonlinear_activations_weightedsumnonlinearity">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="num_parameters" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="init" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="ReLU" eSuperTypes="#//NonLinearActivations/Nonlinear_activations_weightedsumnonlinearity_1"/>
+    <eClassifiers xsi:type="ecore:EClass" name="ReLU6" eSuperTypes="#//NonLinearActivations/Nonlinear_activations_weightedsumnonlinearity_1"/>
+    <eClassifiers xsi:type="ecore:EClass" name="SELU" eSuperTypes="#//NonLinearActivations/Nonlinear_activations_weightedsumnonlinearity_1"/>
+    <eClassifiers xsi:type="ecore:EClass" name="RReLU" eSuperTypes="#//NonLinearActivations/Nonlinear_activations_weightedsumnonlinearity_1">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="lower" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="upper" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="CELU" eSuperTypes="#//NonLinearActivations/Nonlinear_activations_weightedsumnonlinearity_1">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="alpha" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="GELU" eSuperTypes="#//NonLinearActivations/Nonlinear_activations_weightedsumnonlinearity"/>
+    <eClassifiers xsi:type="ecore:EClass" name="Sigmoid" eSuperTypes="#//NonLinearActivations/Nonlinear_activations_weightedsumnonlinearity"/>
+    <eClassifiers xsi:type="ecore:EClass" name="Softplus" eSuperTypes="#//NonLinearActivations/Nonlinear_activations_weightedsumnonlinearity">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="beta" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="threshold" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Softshrink" eSuperTypes="#//NonLinearActivations/shrink"/>
+    <eClassifiers xsi:type="ecore:EClass" name="Hardshrink" eSuperTypes="#//NonLinearActivations/shrink"/>
+    <eClassifiers xsi:type="ecore:EClass" name="Softsign" eSuperTypes="#//NonLinearActivations/Nonlinear_activations_weightedsumnonlinearity"/>
+    <eClassifiers xsi:type="ecore:EClass" name="Tanhshrink" eSuperTypes="#//NonLinearActivations/Nonlinear_activations_weightedsumnonlinearity"/>
+    <eClassifiers xsi:type="ecore:EClass" name="Tanh" eSuperTypes="#//NonLinearActivations/Nonlinear_activations_weightedsumnonlinearity"/>
+    <eClassifiers xsi:type="ecore:EClass" name="Threshold" eSuperTypes="#//NonLinearActivations/Nonlinear_activations_weightedsumnonlinearity_1">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="threshold" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Hardtanh" eSuperTypes="#//NonLinearActivations/Nonlinear_activations_weightedsumnonlinearity_1">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="min_val" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="max_val" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+    </eClassifiers>
+  </eSubpackages>
+  <eSubpackages name="SoftMinMaxActivations" nsURI="http://www.eclipse.org/papyrus/AIML/softminmax/1"
+      nsPrefix="AIML.SoftMinMaxActivations">
+    <eClassifiers xsi:type="ecore:EClass" name="SoftMinMax" abstract="true" eSuperTypes="#//Module/Model"/>
+    <eClassifiers xsi:type="ecore:EClass" name="SoftMinMax_1" abstract="true" eSuperTypes="#//SoftMinMaxActivations/SoftMinMax">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="dim" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Softmin" eSuperTypes="#//SoftMinMaxActivations/SoftMinMax_1"/>
+    <eClassifiers xsi:type="ecore:EClass" name="Softmax" eSuperTypes="#//SoftMinMaxActivations/SoftMinMax_1"/>
+    <eClassifiers xsi:type="ecore:EClass" name="Softmax2d" eSuperTypes="#//SoftMinMaxActivations/SoftMinMax"/>
+    <eClassifiers xsi:type="ecore:EClass" name="LogSoftmax" eSuperTypes="#//SoftMinMaxActivations/SoftMinMax_1"/>
+    <eClassifiers xsi:type="ecore:EClass" name="AdaptiveLogSoftmaxWithLoss" eSuperTypes="#//SoftMinMaxActivations/SoftMinMax">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="in_features" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="n_classes" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="cutoffs" ordered="false"
+          upperBound="-1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="div_value" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="head_biais" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+    </eClassifiers>
+  </eSubpackages>
+  <eSubpackages name="Normalization_layers" nsURI="http://www.eclipse.org/papyrus/AIML/normalization/1"
+      nsPrefix="AIML.Normalization_layers">
+    <eClassifiers xsi:type="ecore:EClass" name="Normalization_layers" abstract="true"
+        eSuperTypes="#//Module/Model"/>
+    <eClassifiers xsi:type="ecore:EClass" name="Normalization_layers_1" abstract="true"
+        eSuperTypes="#//Normalization_layers/Normalization_layers">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="eps" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="LayerNorm" eSuperTypes="#//Normalization_layers/Normalization_layers_1">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="normalized_shape" ordered="false"
+          upperBound="-1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="elementwise_affine" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="LocalResponseNorm" eSuperTypes="#//Normalization_layers/Normalization_layers">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="size" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="alpha" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="beta" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="k" ordered="false" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Normalization_layers_1_1" eSuperTypes="#//Normalization_layers/Normalization_layers_1">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="affine" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Normalization_layers_1_1_1" abstract="true"
+        eSuperTypes="#//Normalization_layers/Normalization_layers_1_1">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="num_features" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="momentum" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="track_running_stats"
+          ordered="false" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean">
+        <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
+          <details key="originalName" value="track_running_stats "/>
+        </eAnnotations>
+      </eStructuralFeatures>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="GroupNorm" eSuperTypes="#//Normalization_layers/Normalization_layers_1_1">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="num_groups" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="num_channels" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="BatchNorm1d" eSuperTypes="#//Normalization_layers/Normalization_layers_1_1_1"/>
+    <eClassifiers xsi:type="ecore:EClass" name="BatchNorm2d" eSuperTypes="#//Normalization_layers/Normalization_layers_1_1_1"/>
+    <eClassifiers xsi:type="ecore:EClass" name="BatchNorm3d" eSuperTypes="#//Normalization_layers/Normalization_layers_1_1_1"/>
+    <eClassifiers xsi:type="ecore:EClass" name="SyncBatchNorm" eSuperTypes="#//Normalization_layers/Normalization_layers_1_1_1">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="process_group" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer">
+        <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
+          <details key="originalName" value="process_group "/>
+        </eAnnotations>
+      </eStructuralFeatures>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="InstanceNorm1d" eSuperTypes="#//Normalization_layers/Normalization_layers_1_1_1"/>
+    <eClassifiers xsi:type="ecore:EClass" name="InstanceNorm2d" eSuperTypes="#//Normalization_layers/Normalization_layers_1_1_1"/>
+    <eClassifiers xsi:type="ecore:EClass" name="InstanceNorm3d" eSuperTypes="#//Normalization_layers/Normalization_layers_1_1_1"/>
+  </eSubpackages>
+  <eSubpackages name="Recurrent_layers" nsURI="http://www.eclipse.org/papyrus/AIML/recurrent/1"
+      nsPrefix="AIML.Recurrent_layers">
+    <eClassifiers xsi:type="ecore:EClass" name="Recurrent_layers" abstract="true"
+        eSuperTypes="#//Module/Model">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="input_size" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="hidden_size" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="bias_pt" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Recurrent_layers_1" abstract="true"
+        eSuperTypes="#//Recurrent_layers/Recurrent_layers">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="num_layers" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="batch_first_pt" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="dropout" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="bidirectional_pt" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="activation" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="recurrent_activation"
+          ordered="false" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="use_bias" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="kernel_initializer" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="recurrent_initializer"
+          ordered="false" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="bias_initializer" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="return_sequences" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="return_state" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="bidirectional_k" ordered="false"
+          eType="#//Recurrent_layers/Recurrent_layers_1"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="recurrent_dropout" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="RNNCell" eSuperTypes="#//Recurrent_layers/Recurrent_layers">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="nonlinearity" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="LSTMCell" eSuperTypes="#//Recurrent_layers/Recurrent_layers"/>
+    <eClassifiers xsi:type="ecore:EClass" name="GRUCell" eSuperTypes="#//Recurrent_layers/Recurrent_layers"/>
+    <eClassifiers xsi:type="ecore:EClass" name="RNN" eSuperTypes="#//Recurrent_layers/Recurrent_layers_1">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="nonlinearity" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="LSTM" eSuperTypes="#//Recurrent_layers/Recurrent_layers_1"/>
+    <eClassifiers xsi:type="ecore:EClass" name="GRU" eSuperTypes="#//Recurrent_layers/Recurrent_layers_1"/>
+  </eSubpackages>
+  <eSubpackages name="Transformer_layers" nsURI="http://www.eclipse.org/papyrus/AIML/transformer/1"
+      nsPrefix="AIML.Transformer_layers">
+    <eClassifiers xsi:type="ecore:EClass" name="Transformer_layers" abstract="true"
+        eSuperTypes="#//Module/Model"/>
+    <eClassifiers xsi:type="ecore:EClass" name="Transformer_layers_1" abstract="true"
+        eSuperTypes="#//Transformer_layers/Transformer_layers">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="d_model" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="nhead" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="dim_feedforward" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="dropout" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="activation" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Transformer_layers_2" abstract="true"
+        eSuperTypes="#//Transformer_layers/Transformer_layers">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="num_layers" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="norm" ordered="false"
+          eType="#//Normalization_layers/LayerNorm"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Transformer" eSuperTypes="#//Transformer_layers/Transformer_layers_1">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="num_encoder_layers" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer">
+        <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
+          <details key="originalName" value="num_encoder_layers "/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="num_decoder_layers" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer">
+        <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
+          <details key="originalName" value="num_decoder_layers "/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="custom_encoder" ordered="false"
+          lowerBound="1" eType="#//Transformer_layers/TransformerEncoder"/>
+      <eStructuralFeatures xsi:type="ecore:EReference" name="custom_decoder" ordered="false"
+          lowerBound="1" eType="#//Transformer_layers/TransformerDecoder"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="TransformerEncoder" eSuperTypes="#//Transformer_layers/Transformer_layers_2">
+      <eStructuralFeatures xsi:type="ecore:EReference" name="encoder_layer" ordered="false"
+          lowerBound="1" eType="#//Transformer_layers/TransformerEncoderLayer"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="TransformerEncoderLayer" eSuperTypes="#//Transformer_layers/Transformer_layers_1"/>
+    <eClassifiers xsi:type="ecore:EClass" name="TransformerDecoder" eSuperTypes="#//Transformer_layers/Transformer_layers_2">
+      <eStructuralFeatures xsi:type="ecore:EReference" name="decoder_layer" ordered="false"
+          lowerBound="1" eType="#//Transformer_layers/TransformerDecoderLayer"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="TransformerDecoderLayer" eSuperTypes="#//Transformer_layers/Transformer_layers_1"/>
+  </eSubpackages>
+  <eSubpackages name="Linear_layers" nsURI="http://www.eclipse.org/papyrus/AIML/linear/1"
+      nsPrefix="AIML.Linear_layers">
+    <eClassifiers xsi:type="ecore:EClass" name="Linear_layers" abstract="true" eSuperTypes="#//Module/Model"/>
+    <eClassifiers xsi:type="ecore:EClass" name="Identity" eSuperTypes="#//Linear_layers/Linear_layers"/>
+    <eClassifiers xsi:type="ecore:EClass" name="Linear_layers_1" abstract="true" eSuperTypes="#//Linear_layers/Linear_layers">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="out_features" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="bias" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Linear" eSuperTypes="#//Linear_layers/Linear_layers_1">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="in_features" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="activation" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="kernel_initializer" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="bias_initializer" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Bilinear" eSuperTypes="#//Linear_layers/Linear_layers_1">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="in1_features" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="in2_features" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+    </eClassifiers>
+  </eSubpackages>
+  <eSubpackages name="Dropout_layers" nsURI="http://www.eclipse.org/papyrus/AIML/dropout/1"
+      nsPrefix="AIML.Dropout_layers">
+    <eClassifiers xsi:type="ecore:EClass" name="Dropout_layers" abstract="true" eSuperTypes="#//Module/Model">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="p" ordered="false" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="inplace" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="noise_shape" ordered="false"
+          upperBound="-1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="seed" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Dropout" eSuperTypes="#//Dropout_layers/Dropout_layers"/>
+    <eClassifiers xsi:type="ecore:EClass" name="Dropout2d" eSuperTypes="#//Dropout_layers/Dropout_layers"/>
+    <eClassifiers xsi:type="ecore:EClass" name="Dropout3d" eSuperTypes="#//Dropout_layers/Dropout_layers"/>
+    <eClassifiers xsi:type="ecore:EClass" name="AlphaDropout" eSuperTypes="#//Dropout_layers/Dropout_layers"/>
+  </eSubpackages>
+  <eSubpackages name="Sparse_layers" nsURI="http://www.eclipse.org/papyrus/AIML/sparse/1"
+      nsPrefix="AIML.Sparse_layers">
+    <eClassifiers xsi:type="ecore:EClass" name="Sparse_layers" abstract="true" eSuperTypes="#//Module/Model">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="num_embeddings" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="embedding_dim" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="max_norm" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="norm_type" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real">
+        <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
+          <details key="originalName" value="norm_type "/>
+        </eAnnotations>
+      </eStructuralFeatures>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="sparse" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="scale_grad_by_freq" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Embedding" eSuperTypes="#//Sparse_layers/Sparse_layers">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="padding_idx" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="EmbeddingBag" eSuperTypes="#//Sparse_layers/Sparse_layers">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="mode" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="include_last_offset"
+          ordered="false" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+    </eClassifiers>
+  </eSubpackages>
+  <eSubpackages name="Distance_functions" nsURI="http://www.eclipse.org/papyrus/AIML/distance/1"
+      nsPrefix="AIML.Distance_functions">
+    <eClassifiers xsi:type="ecore:EClass" name="Distance_functions" abstract="true"
+        eSuperTypes="#//Module/Model">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="eps" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="CosineSimilarity" eSuperTypes="#//Distance_functions/Distance_functions">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="dim" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="PairwiseDistance" eSuperTypes="#//Distance_functions/Distance_functions">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="p" ordered="false" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="keepdim" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+    </eClassifiers>
+  </eSubpackages>
+  <eSubpackages name="Loss_functions" nsURI="http://www.eclipse.org/papyrus/AIML/loss/1"
+      nsPrefix="AIML.Loss_functions">
+    <eClassifiers xsi:type="ecore:EClass" name="Loss_functions" abstract="true" eSuperTypes="#//Module/Model">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="reduction" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Loss_functions_1" abstract="true"
+        eSuperTypes="#//Loss_functions/Loss_functions">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="size_average" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="reduce" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="L1Loss" eSuperTypes="#//Loss_functions/Loss_functions_1"/>
+    <eClassifiers xsi:type="ecore:EClass" name="MSELoss" eSuperTypes="#//Loss_functions/Loss_functions_1"/>
+    <eClassifiers xsi:type="ecore:EClass" name="CTCLoss" eSuperTypes="#//Loss_functions/Loss_functions">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="blank" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="zero_infinity" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="KLDivLoss" eSuperTypes="#//Loss_functions/Loss_functions_1"/>
+    <eClassifiers xsi:type="ecore:EClass" name="MultiLabelMarginLoss" eSuperTypes="#//Loss_functions/Loss_functions_1"/>
+    <eClassifiers xsi:type="ecore:EClass" name="Loss_functions_1_1" eSuperTypes="#//Loss_functions/Loss_functions_1">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="margin" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Loss_functions_1_2" eSuperTypes="#//Loss_functions/Loss_functions_1">
+      <eStructuralFeatures xsi:type="ecore:EReference" name="weight" ordered="false"
+          eType="#//Tensor/Tensor"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="CosineEmbeddingLoss" eSuperTypes="#//Loss_functions/Loss_functions_1_1"/>
+    <eClassifiers xsi:type="ecore:EClass" name="MarginRankingLoss" eSuperTypes="#//Loss_functions/Loss_functions_1_1"/>
+    <eClassifiers xsi:type="ecore:EClass" name="HingeEmbeddingLoss" eSuperTypes="#//Loss_functions/Loss_functions_1_1"/>
+    <eClassifiers xsi:type="ecore:EClass" name="BCELoss" eSuperTypes="#//Loss_functions/Loss_functions_1_2"/>
+    <eClassifiers xsi:type="ecore:EClass" name="Loss_functions_1_1_1" abstract="true"
+        eSuperTypes="#//Loss_functions/Loss_functions_1_1">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="p" ordered="false" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="MultiMarginLoss" eSuperTypes="#//Loss_functions/Loss_functions_1_1_1">
+      <eStructuralFeatures xsi:type="ecore:EReference" name="weight" ordered="false"
+          eType="#//Tensor/Tensor"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="TripletMarginLoss" eSuperTypes="#//Loss_functions/Loss_functions_1_1_1">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="swap" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Loss_functions_1_2_1" abstract="true"
+        eSuperTypes="#//Loss_functions/Loss_functions_1_2">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="ignore_index" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="CrossEntropyLoss" eSuperTypes="#//Loss_functions/Loss_functions_1_2_1"/>
+    <eClassifiers xsi:type="ecore:EClass" name="NLLLoss" eSuperTypes="#//Loss_functions/Loss_functions_1_2_1"/>
+    <eClassifiers xsi:type="ecore:EClass" name="PoissonNLLLoss" eSuperTypes="#//Loss_functions/Loss_functions_1_2">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="log_input" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="full" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="eps" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="BCEWithLogitsLoss" eSuperTypes="#//Loss_functions/Loss_functions_1_2">
+      <eStructuralFeatures xsi:type="ecore:EReference" name="pos_weight" ordered="false"
+          eType="#//Tensor/Tensor"/>
+    </eClassifiers>
+  </eSubpackages>
+  <eSubpackages name="Vision_layers" nsURI="http://www.eclipse.org/papyrus/AIML/vision/1"
+      nsPrefix="AIML.Vision_layers">
+    <eClassifiers xsi:type="ecore:EClass" name="Vision_layers" abstract="true" eSuperTypes="#//Module/Model"/>
+    <eClassifiers xsi:type="ecore:EClass" name="Vision_layers_1" abstract="true" eSuperTypes="#//Vision_layers/Vision_layers">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="size" ordered="false"
+          upperBound="-1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="scale_factor" ordered="false"
+          upperBound="-1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="PixelShuffle" eSuperTypes="#//Vision_layers/Vision_layers">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="upscale_factor" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="Upsample" eSuperTypes="#//Vision_layers/Vision_layers_1">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="mode" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="align_corners" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="UpsamplingNearest2d" eSuperTypes="#//Vision_layers/Vision_layers_1"/>
+    <eClassifiers xsi:type="ecore:EClass" name="UpsamplingBilinear2d" eSuperTypes="#//Vision_layers/Vision_layers_1"/>
+  </eSubpackages>
+  <eSubpackages name="DataParallel_layers" nsURI="http://www.eclipse.org/papyrus/AIML/dataparallel/1"
+      nsPrefix="AIML.DataParallel_layers">
+    <eClassifiers xsi:type="ecore:EClass" name="DataParallel_layers" abstract="true"
+        eSuperTypes="#//Module/Model">
+      <eStructuralFeatures xsi:type="ecore:EReference" name="module" ordered="false"
+          lowerBound="1" eType="#//Module/Model"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="device_ids" ordered="false"
+          upperBound="-1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="output_device" ordered="false"
+          upperBound="-1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="DistributedDataParallel" eSuperTypes="#//DataParallel_layers/DataParallel_layers">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="broadcast_buffers" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="process_group" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="bucket_cap_mb" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="find_unsused_parameters"
+          ordered="false" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="check_reduction" ordered="false"
+          eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Boolean"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="DataParallel" eSuperTypes="#//DataParallel_layers/DataParallel_layers"/>
+  </eSubpackages>
+  <eSubpackages name="Layer_weight_regularizers" nsURI="http:///AIML/Layer_weight_regularizers.ecore"
+      nsPrefix="AIML.Layer_weight_regularizers">
+    <eClassifiers xsi:type="ecore:EClass" name="l1" eSuperTypes="#//Layer_weight_regularizers/ReguWithl1"/>
+    <eClassifiers xsi:type="ecore:EClass" name="ReguWithl1" abstract="true">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="l1" ordered="false" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="l2" eSuperTypes="#//Layer_weight_regularizers/ReguWithl2"/>
+    <eClassifiers xsi:type="ecore:EClass" name="ReguWithl2" abstract="true">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="l2" ordered="false" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="l1_l2" eSuperTypes="#//Layer_weight_regularizers/ReguWithl1 #//Layer_weight_regularizers/ReguWithl2"/>
+  </eSubpackages>
+  <eSubpackages name="Layer_weight_initializers" nsURI="http:///AIML/Layer_weight_initializers.ecore"
+      nsPrefix="AIML.Layer_weight_initializers">
+    <eClassifiers xsi:type="ecore:EClass" name="random_normal" eSuperTypes="#//Layer_weight_initializers/initializer_with_mean_stddev"/>
+    <eClassifiers xsi:type="ecore:EClass" name="initializer_with_mean_stddev" abstract="true"
+        eSuperTypes="#//Layer_weight_initializers/initializer_with_seed">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="mean" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="stddev" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="initializer_with_seed" abstract="true">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="seed" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Integer"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="random_uniform" eSuperTypes="#//Layer_weight_initializers/initializer_with_seed">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="minval" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="maxval" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="truncated_normal" eSuperTypes="#//Layer_weight_initializers/initializer_with_mean_stddev"/>
+    <eClassifiers xsi:type="ecore:EClass" name="zeros"/>
+    <eClassifiers xsi:type="ecore:EClass" name="ones"/>
+    <eClassifiers xsi:type="ecore:EClass" name="glorot_normal" eSuperTypes="#//Layer_weight_initializers/initializer_with_seed"/>
+    <eClassifiers xsi:type="ecore:EClass" name="glorot_uniform" eSuperTypes="#//Layer_weight_initializers/initializer_with_seed"/>
+    <eClassifiers xsi:type="ecore:EClass" name="identity" eSuperTypes="#//Layer_weight_initializers/initializer_with_gain"/>
+    <eClassifiers xsi:type="ecore:EClass" name="initializer_with_gain" abstract="true">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="gain" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="orthogonal" eSuperTypes="#//Layer_weight_initializers/initializer_with_gain #//Layer_weight_initializers/initializer_with_seed"/>
+    <eClassifiers xsi:type="ecore:EClass" name="constant">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="value" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+    </eClassifiers>
+    <eClassifiers xsi:type="ecore:EClass" name="variance_scaling" eSuperTypes="#//Layer_weight_initializers/initializer_with_seed">
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="scale" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//Real"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="mode" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+      <eStructuralFeatures xsi:type="ecore:EAttribute" name="distribution" ordered="false"
+          lowerBound="1" eType="ecore:EDataType ../../org.eclipse.uml2.types/model/Types.ecore#//String"/>
+    </eClassifiers>
+  </eSubpackages>
+</ecore:EPackage>
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/profile/AIML.genmodel b/aiml/org.eclipse.papyrus.aiml.profile/profile/AIML.genmodel
new file mode 100644
index 0000000..383f3f1
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/profile/AIML.genmodel
@@ -0,0 +1,643 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:genmodel="http://www.eclipse.org/uml2/2.2.0/GenModel"
+    copyrightText="Copyright (c) 2020 CEA LIST&#xA;&#xA;All rights reserved. This program and the accompanying materials are&#xA;made available under the terms of the Eclipse Public License v2.0 which&#xA;accompanies this distribution, and is available at&#xA;https://www.eclipse.org/legal/epl-2.0/&#xA;&#xA;SPDX-License-Identifier: EPL-2.0&#xA;"
+    modelDirectory="/org.eclipse.papyrus.aiml.profile/src-gen" modelPluginID="org.eclipse.papyrus.aiml.profile"
+    modelName="AIML" nonNLSMarkers="true" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+    importerID="org.eclipse.uml2.uml.ecore.importer" complianceLevel="8.0" copyrightFields="false"
+    usedGenPackages="../../org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore ../../org.eclipse.uml2.types/model/Types.genmodel#//types ../../org.eclipse.uml2.uml/model/UML.genmodel#//uml"
+    operationReflection="true" importOrganizing="true">
+  <genAnnotations source="http://www.eclipse.org/emf/2002/GenModel/importer/org.eclipse.uml2.uml.ecore.importer">
+    <details key="OPPOSITE_ROLE_NAMES" value="IGNORE"/>
+    <details key="DUPLICATE_FEATURES" value="DISCARD"/>
+    <details key="ANNOTATION_DETAILS" value="PROCESS"/>
+    <details key="PROPERTY_DEFAULT_EXPRESSIONS" value="IGNORE"/>
+    <details key="DUPLICATE_FEATURE_INHERITANCE" value="DISCARD"/>
+    <details key="COMMENTS" value="PROCESS"/>
+    <details key="DERIVED_FEATURES" value="PROCESS"/>
+    <details key="SUPER_CLASS_ORDER" value="PROCESS"/>
+    <details key="DUPLICATE_OPERATION_INHERITANCE" value="DISCARD"/>
+    <details key="REDEFINING_OPERATIONS" value="REPORT"/>
+    <details key="INVARIANT_CONSTRAINTS" value="PROCESS"/>
+    <details key="UNION_PROPERTIES" value="REPORT"/>
+    <details key="DUPLICATE_OPERATIONS" value="DISCARD"/>
+    <details key="NON_API_INVARIANTS" value="IGNORE"/>
+    <details key="CAMEL_CASE_NAMES" value="IGNORE"/>
+    <details key="SUBSETTING_PROPERTIES" value="REPORT"/>
+    <details key="OPERATION_BODIES" value="IGNORE"/>
+    <details key="ECORE_TAGGED_VALUES" value="PROCESS"/>
+    <details key="UNTYPED_PROPERTIES" value="REPORT"/>
+    <details key="REDEFINING_PROPERTIES" value="REPORT"/>
+    <details key="INVOCATION_DELEGATES" value="IGNORE"/>
+    <details key="VALIDATION_DELEGATES" value="IGNORE"/>
+  </genAnnotations>
+  <foreignModel>AIML.profile.uml</foreignModel>
+  <genPackages xsi:type="genmodel:GenPackage" prefix="AIML" basePackage="org.eclipse.papyrus.aiml.profile"
+      disposableProviderFactory="true" ecorePackage="AIML.ecore#/">
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//SmoothL1Loss"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//SoftMarginLoss"/>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//MultiLabelSoftMarginLoss"/>
+    <nestedGenPackages xsi:type="genmodel:GenPackage" prefix="Module" basePackage="org.eclipse.papyrus.aiml.profile.AIML"
+        disposableProviderFactory="true" ecorePackage="AIML.ecore#//Module">
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Module/Model">
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference AIML.ecore#//Module/Model/base_Class"/>
+        <genFeatures xsi:type="genmodel:GenFeature" property="Readonly" createChild="false"
+            ecoreFeature="ecore:EAttribute AIML.ecore#//Module/Model/name"/>
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference AIML.ecore#//Module/Model/data"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Module/Model/requires_grad"/>
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference AIML.ecore#//Module/Model/subModule"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Module/Model/optimizer"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Module/Model/loss"/>
+      </genClasses>
+    </nestedGenPackages>
+    <nestedGenPackages xsi:type="genmodel:GenPackage" prefix="Tensor" basePackage="org.eclipse.papyrus.aiml.profile.AIML"
+        disposableProviderFactory="true" ecorePackage="AIML.ecore#//Tensor">
+      <genEnums xsi:type="genmodel:GenEnum" typeSafeEnumCompatible="false" ecoreEnum="AIML.ecore#//Tensor/EDType">
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="AIML.ecore#//Tensor/EDType/float32"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="AIML.ecore#//Tensor/EDType/float64"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="AIML.ecore#//Tensor/EDType/float16"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="AIML.ecore#//Tensor/EDType/uint8"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="AIML.ecore#//Tensor/EDType/int8"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="AIML.ecore#//Tensor/EDType/int16"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="AIML.ecore#//Tensor/EDType/int32"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="AIML.ecore#//Tensor/EDType/int64"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="AIML.ecore#//Tensor/EDType/bool"/>
+      </genEnums>
+      <genEnums xsi:type="genmodel:GenEnum" typeSafeEnumCompatible="false" ecoreEnum="AIML.ecore#//Tensor/ETensorTypes">
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="AIML.ecore#//Tensor/ETensorTypes/FloatTensor"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="AIML.ecore#//Tensor/ETensorTypes/DoubleTensor"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="AIML.ecore#//Tensor/ETensorTypes/HalfTensor"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="AIML.ecore#//Tensor/ETensorTypes/ByteTensor"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="AIML.ecore#//Tensor/ETensorTypes/CharTensor"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="AIML.ecore#//Tensor/ETensorTypes/ShortTensor"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="AIML.ecore#//Tensor/ETensorTypes/IntTensor"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="AIML.ecore#//Tensor/ETensorTypes/LongTensor"/>
+        <genEnumLiterals xsi:type="genmodel:GenEnumLiteral" ecoreEnumLiteral="AIML.ecore#//Tensor/ETensorTypes/BoolTensor"/>
+      </genEnums>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Tensor/Tensor">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Tensor/Tensor/data"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Tensor/Tensor/dtype"/>
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference AIML.ecore#//Tensor/Tensor/device"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Tensor/Tensor/requires_grad"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Tensor/Tensor/pin_memory"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Tensor/Tensor/shape"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Tensor/Tensor/name"/>
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference AIML.ecore#//Tensor/Tensor/base_Class"/>
+      </genClasses>
+    </nestedGenPackages>
+    <nestedGenPackages xsi:type="genmodel:GenPackage" prefix="Datatypes" basePackage="org.eclipse.papyrus.aiml.profile.AIML"
+        disposableProviderFactory="true" ecorePackage="AIML.ecore#//datatypes">
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//datatypes/Device">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//datatypes/Device/type"/>
+      </genClasses>
+    </nestedGenPackages>
+    <nestedGenPackages xsi:type="genmodel:GenPackage" prefix="Pooling_layers" basePackage="org.eclipse.papyrus.aiml.profile.AIML"
+        disposableProviderFactory="true" ecorePackage="AIML.ecore#//Pooling_layers">
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Pooling_layers/Pooling_layers"/>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Pooling_layers/Pooling_layers_1">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Pooling_layers/Pooling_layers_1/kernel_size"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Pooling_layers/Pooling_layers_2">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Pooling_layers/Pooling_layers_2/output_size"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Pooling_layers/AdaptativeMaxPool">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Pooling_layers/AdaptativeMaxPool/return_indices"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Pooling_layers/AdaptativeMaxPool1d"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Pooling_layers/AdaptativeMaxPool2d"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Pooling_layers/AdaptativeMaxPool3d"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Pooling_layers/AdaptiveAvgPool3d"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Pooling_layers/AdaptiveAvgPool2d"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Pooling_layers/AdaptiveAvgPool1d"/>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Pooling_layers/Pooling_layers_1_1">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Pooling_layers/Pooling_layers_1_1/stride"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Pooling_layers/MaxPool1d"/>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Pooling_layers/MaxPool">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Pooling_layers/MaxPool/dilation"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Pooling_layers/MaxPool/return_indices"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Pooling_layers/Pooling_layers_1_1_1_1">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Pooling_layers/Pooling_layers_1_1_1_1/ceil_mode"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Pooling_layers/Pooling_layers_1_1_1_1/pool_size"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Pooling_layers/Pooling_layers_1_1_1">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Pooling_layers/Pooling_layers_1_1_1/padding"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Pooling_layers/Pooling_layers_1_1_1/padding_k"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Pooling_layers/MaxUnpool1d"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Pooling_layers/AvgPool1d"/>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Pooling_layers/Pooling_layers_1_1_2_1">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Pooling_layers/Pooling_layers_1_1_2_1/count_include_pad"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Pooling_layers/MaxUnpool2d"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Pooling_layers/MaxUnpool3d"/>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Pooling_layers/Pooling_layers_1_1_2">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Pooling_layers/Pooling_layers_1_1_2/ceil_mode"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Pooling_layers/LPPool1d"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Pooling_layers/LPPool2d"/>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Pooling_layers/AvgPool2d3d">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Pooling_layers/AvgPool2d3d/divisor_override"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Pooling_layers/AvgPool2d"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Pooling_layers/AvgPool3d"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Pooling_layers/MaxPool2d"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Pooling_layers/MaxPool3d"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Pooling_layers/FractionalMaxPool2d">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Pooling_layers/FractionalMaxPool2d/output_size"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Pooling_layers/FractionalMaxPool2d/output_ratio"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Pooling_layers/FractionalMaxPool2d/return_indices"/>
+      </genClasses>
+    </nestedGenPackages>
+    <nestedGenPackages xsi:type="genmodel:GenPackage" prefix="Convolution_layers"
+        basePackage="org.eclipse.papyrus.aiml.profile.AIML" disposableProviderFactory="true"
+        ecorePackage="AIML.ecore#//Convolution_layers">
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Convolution_layers/Convolution">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Convolution_layers/Convolution/in_channels"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Convolution_layers/Convolution/groups"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Convolution_layers/Convolution/biais"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Convolution_layers/Convolution/padding_mode"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Convolution_layers/Convolution/data_format"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Convolution_layers/Convolution/dilation_rate"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Convolution_layers/Convolution/activation"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Convolution_layers/Convolution/bias_initializer"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Convolution_layers/Convolution/activity_regularizer"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Convolution_layers/Convolution/bias_constraint"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Convolution_layers/Convolution/bias_regularizer"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Convolution_layers/Convolution_layers">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Convolution_layers/Convolution_layers/kernel_size"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Convolution_layers/Convolution_layers/stride"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Convolution_layers/Convolution_layers/padding"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Convolution_layers/Convolution_layers/dilation"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Convolution_layers/Unfold"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Convolution_layers/Fold">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Convolution_layers/Fold/output_size"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Convolution_layers/Conv2d"/>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Convolution_layers/basic">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Convolution_layers/basic/kernel_initializer"/>
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference AIML.ecore#//Convolution_layers/basic/kernel_constraint"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Convolution_layers/basic/kernel_regularizer"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Convolution_layers/LayerWithFilter">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Convolution_layers/LayerWithFilter/out_channels"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Convolution_layers/Conv3d"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Convolution_layers/ConvTranspose1d"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Convolution_layers/ConvTranspose2d"/>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Convolution_layers/transpose">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Convolution_layers/transpose/output_padding"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Convolution_layers/ConvTranspose3d"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Convolution_layers/Conv1d"/>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Convolution_layers/Separable">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Convolution_layers/Separable/depth_multiplier"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Convolution_layers/Separable/depthwise_initializer"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Convolution_layers/Separable/pointwise_initializer"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Convolution_layers/Separable/depthwise_regularizer"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Convolution_layers/Separable/poitnwise_regularizer"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Convolution_layers/Separable/depthwise_constraint"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Convolution_layers/Separable/pointwise_constraint"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Convolution_layers/SeparableConv2D"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Convolution_layers/SeparableConv1D"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Convolution_layers/DepthwiseConv2D">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Convolution_layers/DepthwiseConv2D/depth_multiplier"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Convolution_layers/DepthwiseConv2D/depthwise_initializer"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Convolution_layers/DepthwiseConv2D/depthwise_regularizer"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Convolution_layers/DepthwiseConv2D/depthwise_constraint"/>
+      </genClasses>
+    </nestedGenPackages>
+    <nestedGenPackages xsi:type="genmodel:GenPackage" prefix="Layer_weight_constraints"
+        basePackage="org.eclipse.papyrus.aiml.profile.AIML" disposableProviderFactory="true"
+        ecorePackage="AIML.ecore#//Layer_weight_constraints">
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Layer_weight_constraints/min_max_norm">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Layer_weight_constraints/min_max_norm/min_value"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Layer_weight_constraints/min_max_norm/rate"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Layer_weight_constraints/NormWithMaxValue">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Layer_weight_constraints/NormWithMaxValue/max_value"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Layer_weight_constraints/norm">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Layer_weight_constraints/norm/axis"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Layer_weight_constraints/max_norm"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Layer_weight_constraints/non_neg"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Layer_weight_constraints/radial_constraint"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Layer_weight_constraints/unit_norm"/>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Layer_weight_constraints/constraints"/>
+    </nestedGenPackages>
+    <nestedGenPackages xsi:type="genmodel:GenPackage" prefix="Padding_layers" basePackage="org.eclipse.papyrus.aiml.profile.AIML"
+        disposableProviderFactory="true" ecorePackage="AIML.ecore#//Padding_layers">
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Padding_layers/Padding_layers">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Padding_layers/Padding_layers/padding"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Padding_layers/ReflectionPad1d"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Padding_layers/ReflectionPad2d"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Padding_layers/ReplicationPad1d"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Padding_layers/ReplicationPad2d"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Padding_layers/ReplicationPad3d"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Padding_layers/ZeroPad2d"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Padding_layers/ConstantPad1d"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Padding_layers/ConstantPad2d"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Padding_layers/ConstantPad3d"/>
+    </nestedGenPackages>
+    <nestedGenPackages xsi:type="genmodel:GenPackage" prefix="NonLinearActivations"
+        basePackage="org.eclipse.papyrus.aiml.profile.AIML" disposableProviderFactory="true"
+        ecorePackage="AIML.ecore#//NonLinearActivations">
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//NonLinearActivations/Nonlinear_activations_weightedsumnonlinearity"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//NonLinearActivations/ELU">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//NonLinearActivations/ELU/alpha"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//NonLinearActivations/Nonlinear_activations_weightedsumnonlinearity_1">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//NonLinearActivations/Nonlinear_activations_weightedsumnonlinearity_1/inplace"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//NonLinearActivations/shrink">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//NonLinearActivations/shrink/lambd"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//NonLinearActivations/LeakyReLU">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//NonLinearActivations/LeakyReLU/negative_slope"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//NonLinearActivations/LogSigmoid"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//NonLinearActivations/MultiheadAttention">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//NonLinearActivations/MultiheadAttention/embed_dim"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//NonLinearActivations/MultiheadAttention/num_heads"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//NonLinearActivations/MultiheadAttention/dropout"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//NonLinearActivations/MultiheadAttention/bias"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//NonLinearActivations/MultiheadAttention/add_bias_kv"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//NonLinearActivations/MultiheadAttention/add_zero_attn"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//NonLinearActivations/MultiheadAttention/kdim"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//NonLinearActivations/MultiheadAttention/vdim"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//NonLinearActivations/PReLU">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//NonLinearActivations/PReLU/num_parameters"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//NonLinearActivations/PReLU/init"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//NonLinearActivations/ReLU"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//NonLinearActivations/ReLU6"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//NonLinearActivations/SELU"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//NonLinearActivations/RReLU">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//NonLinearActivations/RReLU/lower"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//NonLinearActivations/RReLU/upper"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//NonLinearActivations/CELU">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//NonLinearActivations/CELU/alpha"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//NonLinearActivations/GELU"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//NonLinearActivations/Sigmoid"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//NonLinearActivations/Softplus">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//NonLinearActivations/Softplus/beta"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//NonLinearActivations/Softplus/threshold"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//NonLinearActivations/Softshrink"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//NonLinearActivations/Hardshrink"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//NonLinearActivations/Softsign"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//NonLinearActivations/Tanhshrink"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//NonLinearActivations/Tanh"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//NonLinearActivations/Threshold">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//NonLinearActivations/Threshold/threshold"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//NonLinearActivations/Threshold/value"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//NonLinearActivations/Hardtanh">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//NonLinearActivations/Hardtanh/min_val"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//NonLinearActivations/Hardtanh/max_val"/>
+      </genClasses>
+    </nestedGenPackages>
+    <nestedGenPackages xsi:type="genmodel:GenPackage" prefix="SoftMinMaxActivations"
+        basePackage="org.eclipse.papyrus.aiml.profile.AIML" disposableProviderFactory="true"
+        ecorePackage="AIML.ecore#//SoftMinMaxActivations">
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//SoftMinMaxActivations/SoftMinMax"/>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//SoftMinMaxActivations/SoftMinMax_1">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//SoftMinMaxActivations/SoftMinMax_1/dim"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//SoftMinMaxActivations/Softmin"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//SoftMinMaxActivations/Softmax"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//SoftMinMaxActivations/Softmax2d"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//SoftMinMaxActivations/LogSoftmax"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//SoftMinMaxActivations/AdaptiveLogSoftmaxWithLoss">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//SoftMinMaxActivations/AdaptiveLogSoftmaxWithLoss/in_features"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//SoftMinMaxActivations/AdaptiveLogSoftmaxWithLoss/n_classes"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//SoftMinMaxActivations/AdaptiveLogSoftmaxWithLoss/cutoffs"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//SoftMinMaxActivations/AdaptiveLogSoftmaxWithLoss/div_value"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//SoftMinMaxActivations/AdaptiveLogSoftmaxWithLoss/head_biais"/>
+      </genClasses>
+    </nestedGenPackages>
+    <nestedGenPackages xsi:type="genmodel:GenPackage" prefix="Normalization_layers"
+        basePackage="org.eclipse.papyrus.aiml.profile.AIML" disposableProviderFactory="true"
+        ecorePackage="AIML.ecore#//Normalization_layers">
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Normalization_layers/Normalization_layers"/>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Normalization_layers/Normalization_layers_1">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Normalization_layers/Normalization_layers_1/eps"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Normalization_layers/LayerNorm">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Normalization_layers/LayerNorm/normalized_shape"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Normalization_layers/LayerNorm/elementwise_affine"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Normalization_layers/LocalResponseNorm">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Normalization_layers/LocalResponseNorm/size"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Normalization_layers/LocalResponseNorm/alpha"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Normalization_layers/LocalResponseNorm/beta"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Normalization_layers/LocalResponseNorm/k"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Normalization_layers/Normalization_layers_1_1">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Normalization_layers/Normalization_layers_1_1/affine"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Normalization_layers/Normalization_layers_1_1_1">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Normalization_layers/Normalization_layers_1_1_1/num_features"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Normalization_layers/Normalization_layers_1_1_1/momentum"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Normalization_layers/Normalization_layers_1_1_1/track_running_stats"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Normalization_layers/GroupNorm">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Normalization_layers/GroupNorm/num_groups"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Normalization_layers/GroupNorm/num_channels"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Normalization_layers/BatchNorm1d"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Normalization_layers/BatchNorm2d"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Normalization_layers/BatchNorm3d"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Normalization_layers/SyncBatchNorm">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Normalization_layers/SyncBatchNorm/process_group"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Normalization_layers/InstanceNorm1d"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Normalization_layers/InstanceNorm2d"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Normalization_layers/InstanceNorm3d"/>
+    </nestedGenPackages>
+    <nestedGenPackages xsi:type="genmodel:GenPackage" prefix="Recurrent_layers" basePackage="org.eclipse.papyrus.aiml.profile.AIML"
+        disposableProviderFactory="true" ecorePackage="AIML.ecore#//Recurrent_layers">
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Recurrent_layers/Recurrent_layers">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Recurrent_layers/Recurrent_layers/input_size"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Recurrent_layers/Recurrent_layers/hidden_size"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Recurrent_layers/Recurrent_layers/bias_pt"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Recurrent_layers/Recurrent_layers_1">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Recurrent_layers/Recurrent_layers_1/num_layers"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Recurrent_layers/Recurrent_layers_1/batch_first_pt"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Recurrent_layers/Recurrent_layers_1/dropout"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Recurrent_layers/Recurrent_layers_1/bidirectional_pt"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Recurrent_layers/Recurrent_layers_1/activation"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Recurrent_layers/Recurrent_layers_1/recurrent_activation"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Recurrent_layers/Recurrent_layers_1/use_bias"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Recurrent_layers/Recurrent_layers_1/kernel_initializer"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Recurrent_layers/Recurrent_layers_1/recurrent_initializer"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Recurrent_layers/Recurrent_layers_1/bias_initializer"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Recurrent_layers/Recurrent_layers_1/return_sequences"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Recurrent_layers/Recurrent_layers_1/return_state"/>
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference AIML.ecore#//Recurrent_layers/Recurrent_layers_1/bidirectional_k"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Recurrent_layers/Recurrent_layers_1/recurrent_dropout"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Recurrent_layers/RNNCell">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Recurrent_layers/RNNCell/nonlinearity"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Recurrent_layers/LSTMCell"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Recurrent_layers/GRUCell"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Recurrent_layers/RNN">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Recurrent_layers/RNN/nonlinearity"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Recurrent_layers/LSTM"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Recurrent_layers/GRU"/>
+    </nestedGenPackages>
+    <nestedGenPackages xsi:type="genmodel:GenPackage" prefix="Transformer_layers"
+        basePackage="org.eclipse.papyrus.aiml.profile.AIML" disposableProviderFactory="true"
+        ecorePackage="AIML.ecore#//Transformer_layers">
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Transformer_layers/Transformer_layers"/>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Transformer_layers/Transformer_layers_1">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Transformer_layers/Transformer_layers_1/d_model"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Transformer_layers/Transformer_layers_1/nhead"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Transformer_layers/Transformer_layers_1/dim_feedforward"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Transformer_layers/Transformer_layers_1/dropout"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Transformer_layers/Transformer_layers_1/activation"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Transformer_layers/Transformer_layers_2">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Transformer_layers/Transformer_layers_2/num_layers"/>
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference AIML.ecore#//Transformer_layers/Transformer_layers_2/norm"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Transformer_layers/Transformer">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Transformer_layers/Transformer/num_encoder_layers"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Transformer_layers/Transformer/num_decoder_layers"/>
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference AIML.ecore#//Transformer_layers/Transformer/custom_encoder"/>
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference AIML.ecore#//Transformer_layers/Transformer/custom_decoder"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Transformer_layers/TransformerEncoder">
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference AIML.ecore#//Transformer_layers/TransformerEncoder/encoder_layer"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Transformer_layers/TransformerEncoderLayer"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Transformer_layers/TransformerDecoder">
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference AIML.ecore#//Transformer_layers/TransformerDecoder/decoder_layer"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Transformer_layers/TransformerDecoderLayer"/>
+    </nestedGenPackages>
+    <nestedGenPackages xsi:type="genmodel:GenPackage" prefix="Linear_layers" basePackage="org.eclipse.papyrus.aiml.profile.AIML"
+        disposableProviderFactory="true" ecorePackage="AIML.ecore#//Linear_layers">
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Linear_layers/Linear_layers"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Linear_layers/Identity"/>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Linear_layers/Linear_layers_1">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Linear_layers/Linear_layers_1/out_features"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Linear_layers/Linear_layers_1/bias"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Linear_layers/Linear">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Linear_layers/Linear/in_features"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Linear_layers/Linear/activation"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Linear_layers/Linear/kernel_initializer"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Linear_layers/Linear/bias_initializer"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Linear_layers/Bilinear">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Linear_layers/Bilinear/in1_features"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Linear_layers/Bilinear/in2_features"/>
+      </genClasses>
+    </nestedGenPackages>
+    <nestedGenPackages xsi:type="genmodel:GenPackage" prefix="Dropout_layers" basePackage="org.eclipse.papyrus.aiml.profile.AIML"
+        disposableProviderFactory="true" ecorePackage="AIML.ecore#//Dropout_layers">
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Dropout_layers/Dropout_layers">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Dropout_layers/Dropout_layers/p"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Dropout_layers/Dropout_layers/inplace"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Dropout_layers/Dropout_layers/noise_shape"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Dropout_layers/Dropout_layers/seed"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Dropout_layers/Dropout"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Dropout_layers/Dropout2d"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Dropout_layers/Dropout3d"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Dropout_layers/AlphaDropout"/>
+    </nestedGenPackages>
+    <nestedGenPackages xsi:type="genmodel:GenPackage" prefix="Sparse_layers" basePackage="org.eclipse.papyrus.aiml.profile.AIML"
+        disposableProviderFactory="true" ecorePackage="AIML.ecore#//Sparse_layers">
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Sparse_layers/Sparse_layers">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Sparse_layers/Sparse_layers/num_embeddings"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Sparse_layers/Sparse_layers/embedding_dim"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Sparse_layers/Sparse_layers/max_norm"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Sparse_layers/Sparse_layers/norm_type"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Sparse_layers/Sparse_layers/sparse"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Sparse_layers/Sparse_layers/scale_grad_by_freq"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Sparse_layers/Embedding">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Sparse_layers/Embedding/padding_idx"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Sparse_layers/EmbeddingBag">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Sparse_layers/EmbeddingBag/mode"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Sparse_layers/EmbeddingBag/include_last_offset"/>
+      </genClasses>
+    </nestedGenPackages>
+    <nestedGenPackages xsi:type="genmodel:GenPackage" prefix="Distance_functions"
+        basePackage="org.eclipse.papyrus.aiml.profile.AIML" disposableProviderFactory="true"
+        ecorePackage="AIML.ecore#//Distance_functions">
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Distance_functions/Distance_functions">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Distance_functions/Distance_functions/eps"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Distance_functions/CosineSimilarity">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Distance_functions/CosineSimilarity/dim"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Distance_functions/PairwiseDistance">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Distance_functions/PairwiseDistance/p"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Distance_functions/PairwiseDistance/keepdim"/>
+      </genClasses>
+    </nestedGenPackages>
+    <nestedGenPackages xsi:type="genmodel:GenPackage" prefix="Loss_functions" basePackage="org.eclipse.papyrus.aiml.profile.AIML"
+        disposableProviderFactory="true" ecorePackage="AIML.ecore#//Loss_functions">
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Loss_functions/Loss_functions">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Loss_functions/Loss_functions/reduction"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Loss_functions/Loss_functions_1">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Loss_functions/Loss_functions_1/size_average"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Loss_functions/Loss_functions_1/reduce"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Loss_functions/L1Loss"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Loss_functions/MSELoss"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Loss_functions/CTCLoss">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Loss_functions/CTCLoss/blank"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Loss_functions/CTCLoss/zero_infinity"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Loss_functions/KLDivLoss"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Loss_functions/MultiLabelMarginLoss"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Loss_functions/Loss_functions_1_1">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Loss_functions/Loss_functions_1_1/margin"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Loss_functions/Loss_functions_1_2">
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference AIML.ecore#//Loss_functions/Loss_functions_1_2/weight"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Loss_functions/CosineEmbeddingLoss"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Loss_functions/MarginRankingLoss"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Loss_functions/HingeEmbeddingLoss"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Loss_functions/BCELoss"/>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Loss_functions/Loss_functions_1_1_1">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Loss_functions/Loss_functions_1_1_1/p"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Loss_functions/MultiMarginLoss">
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference AIML.ecore#//Loss_functions/MultiMarginLoss/weight"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Loss_functions/TripletMarginLoss">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Loss_functions/TripletMarginLoss/swap"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Loss_functions/Loss_functions_1_2_1">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Loss_functions/Loss_functions_1_2_1/ignore_index"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Loss_functions/CrossEntropyLoss"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Loss_functions/NLLLoss"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Loss_functions/PoissonNLLLoss">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Loss_functions/PoissonNLLLoss/log_input"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Loss_functions/PoissonNLLLoss/full"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Loss_functions/PoissonNLLLoss/eps"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Loss_functions/BCEWithLogitsLoss">
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference AIML.ecore#//Loss_functions/BCEWithLogitsLoss/pos_weight"/>
+      </genClasses>
+    </nestedGenPackages>
+    <nestedGenPackages xsi:type="genmodel:GenPackage" prefix="Vision_layers" basePackage="org.eclipse.papyrus.aiml.profile.AIML"
+        disposableProviderFactory="true" ecorePackage="AIML.ecore#//Vision_layers">
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Vision_layers/Vision_layers"/>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Vision_layers/Vision_layers_1">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Vision_layers/Vision_layers_1/size"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Vision_layers/Vision_layers_1/scale_factor"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Vision_layers/PixelShuffle">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Vision_layers/PixelShuffle/upscale_factor"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Vision_layers/Upsample">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Vision_layers/Upsample/mode"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Vision_layers/Upsample/align_corners"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Vision_layers/UpsamplingNearest2d"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Vision_layers/UpsamplingBilinear2d"/>
+    </nestedGenPackages>
+    <nestedGenPackages xsi:type="genmodel:GenPackage" prefix="DataParallel_layers"
+        basePackage="org.eclipse.papyrus.aiml.profile.AIML" disposableProviderFactory="true"
+        ecorePackage="AIML.ecore#//DataParallel_layers">
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//DataParallel_layers/DataParallel_layers">
+        <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+            propertySortChoices="true" ecoreFeature="ecore:EReference AIML.ecore#//DataParallel_layers/DataParallel_layers/module"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//DataParallel_layers/DataParallel_layers/device_ids"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//DataParallel_layers/DataParallel_layers/output_device"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//DataParallel_layers/DistributedDataParallel">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//DataParallel_layers/DistributedDataParallel/broadcast_buffers"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//DataParallel_layers/DistributedDataParallel/process_group"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//DataParallel_layers/DistributedDataParallel/bucket_cap_mb"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//DataParallel_layers/DistributedDataParallel/find_unsused_parameters"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//DataParallel_layers/DistributedDataParallel/check_reduction"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//DataParallel_layers/DataParallel"/>
+    </nestedGenPackages>
+    <nestedGenPackages xsi:type="genmodel:GenPackage" prefix="Layer_weight_regularizers"
+        basePackage="org.eclipse.papyrus.aiml.profile.AIML" disposableProviderFactory="true"
+        ecorePackage="AIML.ecore#//Layer_weight_regularizers">
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Layer_weight_regularizers/l1"/>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Layer_weight_regularizers/ReguWithl1">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Layer_weight_regularizers/ReguWithl1/l1"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Layer_weight_regularizers/l2"/>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Layer_weight_regularizers/ReguWithl2">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Layer_weight_regularizers/ReguWithl2/l2"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Layer_weight_regularizers/l1_l2"/>
+    </nestedGenPackages>
+    <nestedGenPackages xsi:type="genmodel:GenPackage" prefix="Layer_weight_initializers"
+        basePackage="org.eclipse.papyrus.aiml.profile.AIML" disposableProviderFactory="true"
+        ecorePackage="AIML.ecore#//Layer_weight_initializers">
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Layer_weight_initializers/random_normal"/>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Layer_weight_initializers/initializer_with_mean_stddev">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Layer_weight_initializers/initializer_with_mean_stddev/mean"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Layer_weight_initializers/initializer_with_mean_stddev/stddev"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Layer_weight_initializers/initializer_with_seed">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Layer_weight_initializers/initializer_with_seed/seed"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Layer_weight_initializers/random_uniform">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Layer_weight_initializers/random_uniform/minval"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Layer_weight_initializers/random_uniform/maxval"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Layer_weight_initializers/truncated_normal"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Layer_weight_initializers/zeros"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Layer_weight_initializers/ones"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Layer_weight_initializers/glorot_normal"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Layer_weight_initializers/glorot_uniform"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Layer_weight_initializers/identity"/>
+      <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="AIML.ecore#//Layer_weight_initializers/initializer_with_gain">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Layer_weight_initializers/initializer_with_gain/gain"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Layer_weight_initializers/orthogonal"/>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Layer_weight_initializers/constant">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Layer_weight_initializers/constant/value"/>
+      </genClasses>
+      <genClasses xsi:type="genmodel:GenClass" ecoreClass="AIML.ecore#//Layer_weight_initializers/variance_scaling">
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Layer_weight_initializers/variance_scaling/scale"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Layer_weight_initializers/variance_scaling/mode"/>
+        <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute AIML.ecore#//Layer_weight_initializers/variance_scaling/distribution"/>
+      </genClasses>
+    </nestedGenPackages>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/profile/AIML.profile.di b/aiml/org.eclipse.papyrus.aiml.profile/profile/AIML.profile.di
new file mode 100644
index 0000000..247ed5e
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/profile/AIML.profile.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<architecture:ArchitectureDescription xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:architecture="http://www.eclipse.org/papyrus/infra/core/architecture" contextId="org.eclipse.papyrus.uml.architecture.Profile"/>
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/profile/AIML.profile.notation b/aiml/org.eclipse.papyrus.aiml.profile/profile/AIML.profile.notation
new file mode 100644
index 0000000..a3e2ba0
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/profile/AIML.profile.notation
@@ -0,0 +1,13155 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:css="http://www.eclipse.org/papyrus/infra/gmfdiag/css" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.3/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/gmfdiag/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
+  <notation:Diagram xmi:id="_tRe00H2KEeqSHNFOHg2_Jw" type="PapyrusUMLProfileDiagram" name="AIML" measurementUnit="Pixel">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Qv6tsYvAEeqlnrZTj0aPoA" source="PapyrusCSSForceValue">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Qv6tsovAEeqlnrZTj0aPoA" key="canonical" value="true"/>
+    </eAnnotations>
+    <children xmi:type="notation:Shape" xmi:id="_1ARFcH2KEeqSHNFOHg2_Jw" type="Class_MetaclassShape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_1AnqwH2KEeqSHNFOHg2_Jw" type="Class_MetaclassNameLabel"/>
+      <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1ARFcX2KEeqSHNFOHg2_Jw" x="12300" y="-280" width="121"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Nu8ksJOPEeqnY_bZg2Ebjg" type="Profile_Shape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_N9c6wJOPEeqnY_bZg2Ebjg" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_N9c6wZOPEeqnY_bZg2Ebjg" key="mutable" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_Nu9y0JOPEeqnY_bZg2Ebjg" type="Profile_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Nu9y0ZOPEeqnY_bZg2Ebjg" type="Profile_PackagedElementCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Nu9y0pOPEeqnY_bZg2Ebjg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Nu9y05OPEeqnY_bZg2Ebjg"/>
+      </children>
+      <element xmi:type="uml:Profile" href="AIML.profile.uml#_Nr2NYJOPEeqnY_bZg2Ebjg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Nu8ksZOPEeqnY_bZg2Ebjg" x="4540" y="-4"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_BpSA0JT3Eeq5BK6mmo2rWg" type="Profile_Shape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CAV18JT3Eeq5BK6mmo2rWg" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CAV18ZT3Eeq5BK6mmo2rWg" key="mutable" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_BpT2AJT3Eeq5BK6mmo2rWg" type="Profile_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_BpT2AZT3Eeq5BK6mmo2rWg" type="Profile_PackagedElementCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_BpT2ApT3Eeq5BK6mmo2rWg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpT2A5T3Eeq5BK6mmo2rWg"/>
+      </children>
+      <element xmi:type="uml:Profile" href="AIML.profile.uml#_u1dx8JT1Eeq5BK6mmo2rWg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpSn4JT3Eeq5BK6mmo2rWg"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_BpUdEJT3Eeq5BK6mmo2rWg" type="Profile_Shape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CAV18pT3Eeq5BK6mmo2rWg" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CAV185T3Eeq5BK6mmo2rWg" key="mutable" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_BpUdEpT3Eeq5BK6mmo2rWg" type="Profile_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_BpUdE5T3Eeq5BK6mmo2rWg" type="Profile_PackagedElementCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_BpUdFJT3Eeq5BK6mmo2rWg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpUdFZT3Eeq5BK6mmo2rWg"/>
+      </children>
+      <element xmi:type="uml:Profile" href="AIML.profile.uml#_38DjAJT1Eeq5BK6mmo2rWg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpUdEZT3Eeq5BK6mmo2rWg" x="260"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_BpVEIJT3Eeq5BK6mmo2rWg" type="Profile_Shape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CAV19JT3Eeq5BK6mmo2rWg" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CAV19ZT3Eeq5BK6mmo2rWg" key="mutable" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_BpVEIpT3Eeq5BK6mmo2rWg" type="Profile_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_BpVEI5T3Eeq5BK6mmo2rWg" type="Profile_PackagedElementCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_BpVEJJT3Eeq5BK6mmo2rWg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpVEJZT3Eeq5BK6mmo2rWg"/>
+      </children>
+      <element xmi:type="uml:Package" href="AIML.profile.uml#_-8tiUJT1Eeq5BK6mmo2rWg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpVEIZT3Eeq5BK6mmo2rWg" x="520"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_BpVEJpT3Eeq5BK6mmo2rWg" type="Profile_Shape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CAV19pT3Eeq5BK6mmo2rWg" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CAV195T3Eeq5BK6mmo2rWg" key="mutable" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_BpVEKJT3Eeq5BK6mmo2rWg" type="Profile_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_BpVEKZT3Eeq5BK6mmo2rWg" type="Profile_PackagedElementCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_BpVEKpT3Eeq5BK6mmo2rWg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpVEK5T3Eeq5BK6mmo2rWg"/>
+      </children>
+      <element xmi:type="uml:Profile" href="AIML.profile.uml#_Deu8AJT2Eeq5BK6mmo2rWg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpVEJ5T3Eeq5BK6mmo2rWg" x="780"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_BpVrMJT3Eeq5BK6mmo2rWg" type="Profile_Shape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CAV1-JT3Eeq5BK6mmo2rWg" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CAV1-ZT3Eeq5BK6mmo2rWg" key="mutable" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_BpVrMpT3Eeq5BK6mmo2rWg" type="Profile_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_BpVrM5T3Eeq5BK6mmo2rWg" type="Profile_PackagedElementCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_BpVrNJT3Eeq5BK6mmo2rWg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpVrNZT3Eeq5BK6mmo2rWg"/>
+      </children>
+      <element xmi:type="uml:Profile" href="AIML.profile.uml#_2_xEcJT2Eeq5BK6mmo2rWg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpVrMZT3Eeq5BK6mmo2rWg" x="1040"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_BpVrNpT3Eeq5BK6mmo2rWg" type="Profile_Shape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CAV1-pT3Eeq5BK6mmo2rWg" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CAV1-5T3Eeq5BK6mmo2rWg" key="mutable" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_BpVrOJT3Eeq5BK6mmo2rWg" type="Profile_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_BpVrOZT3Eeq5BK6mmo2rWg" type="Profile_PackagedElementCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_BpVrOpT3Eeq5BK6mmo2rWg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpVrO5T3Eeq5BK6mmo2rWg"/>
+      </children>
+      <element xmi:type="uml:Profile" href="AIML.profile.uml#_H7fbMJT2Eeq5BK6mmo2rWg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpVrN5T3Eeq5BK6mmo2rWg" x="1300"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_BpWSQJT3Eeq5BK6mmo2rWg" type="Profile_Shape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CAV1_JT3Eeq5BK6mmo2rWg" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CAV1_ZT3Eeq5BK6mmo2rWg" key="mutable" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_BpWSQpT3Eeq5BK6mmo2rWg" type="Profile_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_BpWSQ5T3Eeq5BK6mmo2rWg" type="Profile_PackagedElementCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_BpWSRJT3Eeq5BK6mmo2rWg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpWSRZT3Eeq5BK6mmo2rWg"/>
+      </children>
+      <element xmi:type="uml:Profile" href="AIML.profile.uml#_K1H6wJT2Eeq5BK6mmo2rWg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpWSQZT3Eeq5BK6mmo2rWg" x="1640"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_BpWSRpT3Eeq5BK6mmo2rWg" type="Profile_Shape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CAV1_pT3Eeq5BK6mmo2rWg" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CAV1_5T3Eeq5BK6mmo2rWg" key="mutable" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_BpWSSJT3Eeq5BK6mmo2rWg" type="Profile_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_BpWSSZT3Eeq5BK6mmo2rWg" type="Profile_PackagedElementCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_BpWSSpT3Eeq5BK6mmo2rWg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpWSS5T3Eeq5BK6mmo2rWg"/>
+      </children>
+      <element xmi:type="uml:Profile" href="AIML.profile.uml#_N5zMsJT2Eeq5BK6mmo2rWg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpWSR5T3Eeq5BK6mmo2rWg" x="1900"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_BpW5UJT3Eeq5BK6mmo2rWg" type="Profile_Shape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CAV2AJT3Eeq5BK6mmo2rWg" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CAV2AZT3Eeq5BK6mmo2rWg" key="mutable" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_BpW5UpT3Eeq5BK6mmo2rWg" type="Profile_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_BpW5U5T3Eeq5BK6mmo2rWg" type="Profile_PackagedElementCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_BpW5VJT3Eeq5BK6mmo2rWg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpW5VZT3Eeq5BK6mmo2rWg"/>
+      </children>
+      <element xmi:type="uml:Profile" href="AIML.profile.uml#_RAjiQJT2Eeq5BK6mmo2rWg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpW5UZT3Eeq5BK6mmo2rWg" x="2160"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_BpW5VpT3Eeq5BK6mmo2rWg" type="Profile_Shape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CAV2ApT3Eeq5BK6mmo2rWg" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CAV2A5T3Eeq5BK6mmo2rWg" key="mutable" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_BpXgYJT3Eeq5BK6mmo2rWg" type="Profile_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_BpXgYZT3Eeq5BK6mmo2rWg" type="Profile_PackagedElementCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_BpXgYpT3Eeq5BK6mmo2rWg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpXgY5T3Eeq5BK6mmo2rWg"/>
+      </children>
+      <element xmi:type="uml:Profile" href="AIML.profile.uml#_T8DDAJT2Eeq5BK6mmo2rWg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpW5V5T3Eeq5BK6mmo2rWg" x="2420"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_BpXgZJT3Eeq5BK6mmo2rWg" type="Profile_Shape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CAV2BJT3Eeq5BK6mmo2rWg" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CAV2BZT3Eeq5BK6mmo2rWg" key="mutable" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_BpXgZpT3Eeq5BK6mmo2rWg" type="Profile_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_BpXgZ5T3Eeq5BK6mmo2rWg" type="Profile_PackagedElementCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_BpXgaJT3Eeq5BK6mmo2rWg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpXgaZT3Eeq5BK6mmo2rWg"/>
+      </children>
+      <element xmi:type="uml:Profile" href="AIML.profile.uml#_WwqfsJT2Eeq5BK6mmo2rWg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpXgZZT3Eeq5BK6mmo2rWg" x="2680"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_BpYHcJT3Eeq5BK6mmo2rWg" type="Profile_Shape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CAV2BpT3Eeq5BK6mmo2rWg" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CAV2B5T3Eeq5BK6mmo2rWg" key="mutable" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_BpYHcpT3Eeq5BK6mmo2rWg" type="Profile_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_BpYHc5T3Eeq5BK6mmo2rWg" type="Profile_PackagedElementCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_BpYHdJT3Eeq5BK6mmo2rWg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpYHdZT3Eeq5BK6mmo2rWg"/>
+      </children>
+      <element xmi:type="uml:Profile" href="AIML.profile.uml#_ZUMzcJT2Eeq5BK6mmo2rWg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpYHcZT3Eeq5BK6mmo2rWg" x="2940"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_BpYugJT3Eeq5BK6mmo2rWg" type="Profile_Shape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CAV2CJT3Eeq5BK6mmo2rWg" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CAV2CZT3Eeq5BK6mmo2rWg" key="mutable" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_BpYugpT3Eeq5BK6mmo2rWg" type="Profile_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_BpYug5T3Eeq5BK6mmo2rWg" type="Profile_PackagedElementCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_BpYuhJT3Eeq5BK6mmo2rWg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpYuhZT3Eeq5BK6mmo2rWg"/>
+      </children>
+      <element xmi:type="uml:Profile" href="AIML.profile.uml#_cKwJ0JT2Eeq5BK6mmo2rWg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpYugZT3Eeq5BK6mmo2rWg" x="3200"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_BpYuhpT3Eeq5BK6mmo2rWg" type="Profile_Shape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CAV2CpT3Eeq5BK6mmo2rWg" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CAV2C5T3Eeq5BK6mmo2rWg" key="mutable" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_BpYuiJT3Eeq5BK6mmo2rWg" type="Profile_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_BpYuiZT3Eeq5BK6mmo2rWg" type="Profile_PackagedElementCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_BpYuipT3Eeq5BK6mmo2rWg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpYui5T3Eeq5BK6mmo2rWg"/>
+      </children>
+      <element xmi:type="uml:Profile" href="AIML.profile.uml#_fjUoIJT2Eeq5BK6mmo2rWg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpYuh5T3Eeq5BK6mmo2rWg" x="3460"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_BpYujJT3Eeq5BK6mmo2rWg" type="Profile_Shape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CAV2DJT3Eeq5BK6mmo2rWg" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CAV2DZT3Eeq5BK6mmo2rWg" key="mutable" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_BpYujpT3Eeq5BK6mmo2rWg" type="Profile_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_BpYuj5T3Eeq5BK6mmo2rWg" type="Profile_PackagedElementCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_BpYukJT3Eeq5BK6mmo2rWg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpYukZT3Eeq5BK6mmo2rWg"/>
+      </children>
+      <element xmi:type="uml:Profile" href="AIML.profile.uml#_nZcP0JT2Eeq5BK6mmo2rWg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpYujZT3Eeq5BK6mmo2rWg" x="3720"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_BpZVkJT3Eeq5BK6mmo2rWg" type="Profile_Shape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CAV2DpT3Eeq5BK6mmo2rWg" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CAV2D5T3Eeq5BK6mmo2rWg" key="mutable" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_BpZVkpT3Eeq5BK6mmo2rWg" type="Profile_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_BpZVk5T3Eeq5BK6mmo2rWg" type="Profile_PackagedElementCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_BpZVlJT3Eeq5BK6mmo2rWg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpZVlZT3Eeq5BK6mmo2rWg"/>
+      </children>
+      <element xmi:type="uml:Profile" href="AIML.profile.uml#_q6FsEJT2Eeq5BK6mmo2rWg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpZVkZT3Eeq5BK6mmo2rWg" x="3980"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_BpZVlpT3Eeq5BK6mmo2rWg" type="Profile_Shape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CAV2EJT3Eeq5BK6mmo2rWg" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CAV2EZT3Eeq5BK6mmo2rWg" key="mutable" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_BpZVmJT3Eeq5BK6mmo2rWg" type="Profile_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_BpZVmZT3Eeq5BK6mmo2rWg" type="Profile_PackagedElementCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_BpZVmpT3Eeq5BK6mmo2rWg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpZVm5T3Eeq5BK6mmo2rWg"/>
+      </children>
+      <element xmi:type="uml:Profile" href="AIML.profile.uml#_wBUroJT2Eeq5BK6mmo2rWg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BpZVl5T3Eeq5BK6mmo2rWg" x="4240"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_f28t0JauEeq1-Ze45jZMTg" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_f28t0ZauEeq1-Ze45jZMTg"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_f28t05auEeq1-Ze45jZMTg" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f28t0pauEeq1-Ze45jZMTg" x="12640" y="-280"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_LLRQIK7wEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LUVskK7wEeqhVOlV64dXmA" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LUVska7wEeqhVOlV64dXmA" key="mutable" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_LLTFUK7wEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_LLTFUa7wEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LLTFUq7wEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LLTFU67wEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_LLTFVK7wEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LLTFVa7wEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_LLTsYK7wEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LLTsYa7wEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LLTsYq7wEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_LLTsY67wEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LLTsZK7wEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_hxbaEJm6Eeq0jfmjFzaebA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LLRQIa7wEeqhVOlV64dXmA"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_LLUTcK7wEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LUVskq7wEeqhVOlV64dXmA" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LUVsk67wEeqhVOlV64dXmA" key="mutable" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_LLUTcq7wEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_LLU6gK7wEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LLU6ga7wEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LLU6gq7wEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_LLU6g67wEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LLU6hK7wEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_LLU6ha7wEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LLU6hq7wEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LLU6h67wEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_LLU6iK7wEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LLU6ia7wEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_w1CjMJm6Eeq0jfmjFzaebA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LLUTca7wEeqhVOlV64dXmA" x="160"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_LLU6iq7wEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LUWToK7wEeqhVOlV64dXmA" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LUWToa7wEeqhVOlV64dXmA" key="mutable" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_LLVhkK7wEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_LLVhka7wEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LLVhkq7wEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LLVhk67wEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_LLVhlK7wEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LLVhla7wEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_LLVhlq7wEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LLVhl67wEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LLVhmK7wEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_LLVhma7wEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LLVhmq7wEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_DSn40Jm7Eeq0jfmjFzaebA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LLU6i67wEeqhVOlV64dXmA" x="320"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_LLVhm67wEeqhVOlV64dXmA" type="Profile_Shape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LUWToq7wEeqhVOlV64dXmA" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LUWTo67wEeqhVOlV64dXmA" key="mutable" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_LLWIoK7wEeqhVOlV64dXmA" type="Profile_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_LLWIoa7wEeqhVOlV64dXmA" type="Profile_PackagedElementCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LLWIoq7wEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LLWIo67wEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Profile" href="AIML.profile.uml#_DtlO0KTlEeqmTOsCAzVBxg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LLVhnK7wEeqhVOlV64dXmA" x="540"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_LLWIpK7wEeqhVOlV64dXmA" type="Profile_Shape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LUWTpK7wEeqhVOlV64dXmA" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LUWTpa7wEeqhVOlV64dXmA" key="mutable" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_LLWvsK7wEeqhVOlV64dXmA" type="Profile_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_LLWvsa7wEeqhVOlV64dXmA" type="Profile_PackagedElementCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LLWvsq7wEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LLWvs67wEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Profile" href="AIML.profile.uml#_X5a5MKTpEeqmTOsCAzVBxg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LLWIpa7wEeqhVOlV64dXmA" x="800"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_LLWvtK7wEeqhVOlV64dXmA" type="Profile_Shape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_LUWTpq7wEeqhVOlV64dXmA" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_LUWTp67wEeqhVOlV64dXmA" key="mutable" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_LLXWwK7wEeqhVOlV64dXmA" type="Profile_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_LLXWwa7wEeqhVOlV64dXmA" type="Profile_PackagedElementCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LLXWwq7wEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LLXWw67wEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Profile" href="AIML.profile.uml#_ZgMWkKWVEeq2dLYfuMvqgg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LLWvta7wEeqhVOlV64dXmA" x="1060"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_MfpSsPmaEeqCRcDdPeQY2A" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_MfpSsfmaEeqCRcDdPeQY2A"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Mfp5wPmaEeqCRcDdPeQY2A" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MfpSsvmaEeqCRcDdPeQY2A" x="12500" y="-280"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_tRe00X2KEeqSHNFOHg2_Jw" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_tRe00n2KEeqSHNFOHg2_Jw"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_tRe0032KEeqSHNFOHg2_Jw" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    </styles>
+    <styles xmi:type="notation:CanonicalStyle" xmi:id="_Qv6tsIvAEeqlnrZTj0aPoA"/>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    <edges xmi:type="notation:Connector" xmi:id="_Mfqg0PmaEeqCRcDdPeQY2A" type="StereotypeCommentLink" source="_1ARFcH2KEeqSHNFOHg2_Jw" target="_MfpSsPmaEeqCRcDdPeQY2A">
+      <styles xmi:type="notation:FontStyle" xmi:id="_Mfqg0fmaEeqCRcDdPeQY2A"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Mfru8PmaEeqCRcDdPeQY2A" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Mfqg0vmaEeqCRcDdPeQY2A" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MfrH4PmaEeqCRcDdPeQY2A"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MfrH4fmaEeqCRcDdPeQY2A"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_m1nccI7UEeq0upQJ9r5s4Q" type="PapyrusUMLProfileDiagram" name="Convolution_layers" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_J4Kf-I8nEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_J4Kf-Y8nEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_J4Kf-o8nEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_J4Kf-48nEeq5HrfdV5ATIg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_J4Kf_I8nEeq5HrfdV5ATIg" key="collapsed" value="true"/>
+        </eAnnotations>
+        <children xmi:type="notation:Shape" xmi:id="_J4Kf_Y8nEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_xLDlAH5nEeqSHNFOHg2_Jw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_J4Kf_o8nEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_J4KgAY8nEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_PgB_YH5oEeqSHNFOHg2_Jw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_J4KgAo8nEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_J4KgA48nEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_RrmfEH5oEeqSHNFOHg2_Jw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_J4KgBI8nEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_J4KgBY8nEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_UPxE8H5oEeqSHNFOHg2_Jw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_J4KgBo8nEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_NJbPgKG2EeqsNvCDUfZJVA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_NJHtgKG2EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_NJbPgaG2EeqsNvCDUfZJVA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_OvP90KG2EeqsNvCDUfZJVA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_Ou9p8KG2EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_OvP90aG2EeqsNvCDUfZJVA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_SXeowKG2EeqsNvCDUfZJVA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_SXLt0KG2EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_SXeowaG2EeqsNvCDUfZJVA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_TH71UKG2EeqsNvCDUfZJVA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_THvoEKG2EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_TH71UaG2EeqsNvCDUfZJVA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_UilOYKG2EeqsNvCDUfZJVA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_UiUvsKG2EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_UilOYaG2EeqsNvCDUfZJVA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_koIVoKG2EeqsNvCDUfZJVA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_kn6TMKG2EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_koIVoaG2EeqsNvCDUfZJVA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_bGnFMKStEeqmTOsCAzVBxg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_bGMOcKStEeqmTOsCAzVBxg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_bGnFMaStEeqmTOsCAzVBxg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_J4KgB48nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_J4KgCI8nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_J4KgCY8nEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J4KgCo8nEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_J4KgC48nEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_J4KgDI8nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_J4KgDY8nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_J4KgDo8nEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J4KgD48nEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_5DtswH2KEeqSHNFOHg2_Jw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J4KgE48nEeq5HrfdV5ATIg" x="-1426" y="318"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_J4LuF48nEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_J4LuGI8nEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_J4LuGY8nEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_J4LuGo8nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_J4LuG48nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_J4LuHI8nEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J4LuHY8nEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_J4LuHo8nEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_J4LuH48nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_J4LuII8nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_J4LuIY8nEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J4LuIo8nEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_AfPLEIVKEeqvud4Ae2T3Lg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J4LuJo8nEeq5HrfdV5ATIg" x="-1506" y="1258"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_J4MVII8nEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_J4MVIY8nEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_J4MVIo8nEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_J4MVI48nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_J4MVJI8nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_J4MVJY8nEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J4MVJo8nEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_J4MVJ48nEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_J4MVKI8nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_J4MVKY8nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_J4MVKo8nEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J4MVK48nEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_anKPYH5pEeqSHNFOHg2_Jw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J4MVL48nEeq5HrfdV5ATIg" x="-820" y="320" width="217"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_J4OxYI8nEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_J4OxYY8nEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_J4OxYo8nEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_J4OxY48nEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_MKi_YH5qEeqSHNFOHg2_Jw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_J4OxZI8nEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_J4OxZY8nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_J4OxZo8nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_J4OxZ48nEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J4OxaI8nEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_J4OxaY8nEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_J4Oxao8nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_J4Oxa48nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_J4OxbI8nEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J4OxbY8nEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_ISZCEH5qEeqSHNFOHg2_Jw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J4OxcY8nEeq5HrfdV5ATIg" x="-1100" y="320" width="217"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_J4Oxc48nEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_J4OxdI8nEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_J4OxdY8nEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_J4Oxdo8nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_J4Oxd48nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_J4OxeI8nEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J4OxeY8nEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_J4Oxeo8nEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_J4Oxe48nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_J4OxfI8nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_J4OxfY8nEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J4Oxfo8nEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_2Ej78IVJEeqvud4Ae2T3Lg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J4Oxgo8nEeq5HrfdV5ATIg" x="-2100" y="1140"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_J4PYcI8nEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_J4PYcY8nEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_J4PYco8nEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_J4PYc48nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_J4PYdI8nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_J4PYdY8nEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J4PYdo8nEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_J4PYd48nEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_J4PYeI8nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_J4PYeY8nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_J4PYeo8nEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J4PYe48nEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_6j6cIIVJEeqvud4Ae2T3Lg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J4PYf48nEeq5HrfdV5ATIg" x="-1966" y="1138"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_J4PYgI8nEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_J4PYgY8nEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_J4PYgo8nEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_J4PYg48nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_J4PYhI8nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_J4PYhY8nEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J4PYho8nEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_J4PYh48nEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_J4PYiI8nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_J4PYiY8nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_J4PYio8nEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J4PYi48nEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_8w4C8IVJEeqvud4Ae2T3Lg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J4PYj48nEeq5HrfdV5ATIg" x="-1500" y="940"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_J4P_iI8nEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_J4P_iY8nEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_J4P_io8nEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_J4P_i48nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_J4P_jI8nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_J4P_jY8nEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J4P_jo8nEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_J4P_j48nEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_J4P_kI8nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_J4P_kY8nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_J4P_ko8nEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J4P_k48nEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#__Er4oIVJEeqvud4Ae2T3Lg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J4P_l48nEeq5HrfdV5ATIg" x="-1646" y="1258"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_J4QmkI8nEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_J4QmkY8nEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_J4Qmko8nEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_J4Qmk48nEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_ZsHuAH5qEeqSHNFOHg2_Jw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_J4QmlI8nEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_J4QmlY8nEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_a-bqcH5qEeqSHNFOHg2_Jw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_J4Qmlo8nEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_J4Qml48nEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_bcYxwH5qEeqSHNFOHg2_Jw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_J4QmmI8nEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_J4QmmY8nEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_cR75sH5qEeqSHNFOHg2_Jw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_J4Qmmo8nEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_J4QmnY8nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_J4Qmno8nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_J4Qmn48nEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J4QmoI8nEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_J4QmoY8nEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_J4Qmoo8nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_J4Qmo48nEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_J4QmpI8nEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J4QmpY8nEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_YZ54MH5qEeqSHNFOHg2_Jw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_J4QmqY8nEeq5HrfdV5ATIg" x="-1080" y="20"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_RBuMMKG1EeqsNvCDUfZJVA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_RBuzQKG1EeqsNvCDUfZJVA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_RBuzQaG1EeqsNvCDUfZJVA" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_SpHn0KG1EeqsNvCDUfZJVA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_SowbcKG1EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_SpHn0aG1EeqsNvCDUfZJVA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_RBuzQqG1EeqsNvCDUfZJVA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_RBuzQ6G1EeqsNvCDUfZJVA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_RBuzRKG1EeqsNvCDUfZJVA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RBuzRaG1EeqsNvCDUfZJVA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_RBuzRqG1EeqsNvCDUfZJVA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_RBuzR6G1EeqsNvCDUfZJVA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_RBuzSKG1EeqsNvCDUfZJVA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_RBuzSaG1EeqsNvCDUfZJVA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RBuzSqG1EeqsNvCDUfZJVA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_RBqh0KG1EeqsNvCDUfZJVA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RBuMMaG1EeqsNvCDUfZJVA" x="-1620" y="1120"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_5JYooKG1EeqsNvCDUfZJVA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_5JZPsKG1EeqsNvCDUfZJVA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_5JZPsaG1EeqsNvCDUfZJVA" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_7rjDYKG1EeqsNvCDUfZJVA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_7rUZ4KG1EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_7rjDYaG1EeqsNvCDUfZJVA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_85y_MKG1EeqsNvCDUfZJVA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_85lj0KG1EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_85y_MaG1EeqsNvCDUfZJVA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_alP7cKG2EeqsNvCDUfZJVA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_ak_cwKG2EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_alP7caG2EeqsNvCDUfZJVA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_5JZPsqG1EeqsNvCDUfZJVA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_5JZPs6G1EeqsNvCDUfZJVA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_5JZPtKG1EeqsNvCDUfZJVA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5JZPtaG1EeqsNvCDUfZJVA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_5JZPtqG1EeqsNvCDUfZJVA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_5JZPt6G1EeqsNvCDUfZJVA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_5JZPuKG1EeqsNvCDUfZJVA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_5JZPuaG1EeqsNvCDUfZJVA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5JZPuqG1EeqsNvCDUfZJVA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_5JUXMKG1EeqsNvCDUfZJVA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5JYooaG1EeqsNvCDUfZJVA" x="-1840" y="920"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_g_XCsKG3EeqsNvCDUfZJVA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_g_XpwKG3EeqsNvCDUfZJVA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_g_XpwaG3EeqsNvCDUfZJVA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_g_XpwqG3EeqsNvCDUfZJVA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_g_Xpw6G3EeqsNvCDUfZJVA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_g_XpxKG3EeqsNvCDUfZJVA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_XpxaG3EeqsNvCDUfZJVA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_g_XpxqG3EeqsNvCDUfZJVA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_g_Xpx6G3EeqsNvCDUfZJVA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_g_XpyKG3EeqsNvCDUfZJVA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_g_XpyaG3EeqsNvCDUfZJVA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_XpyqG3EeqsNvCDUfZJVA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_g_SxQKG3EeqsNvCDUfZJVA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_g_XCsaG3EeqsNvCDUfZJVA" x="-2240" y="1140"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_d-nZEKG4EeqsNvCDUfZJVA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_d-nZEqG4EeqsNvCDUfZJVA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_d-nZE6G4EeqsNvCDUfZJVA" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_euFuMKG4EeqsNvCDUfZJVA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_etxlIKG4EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_euFuMaG4EeqsNvCDUfZJVA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_gALoMKG4EeqsNvCDUfZJVA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_f_57YKG4EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_gALoMaG4EeqsNvCDUfZJVA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_hwg9YKG4EeqsNvCDUfZJVA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_hwRFwKG4EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_hwg9YaG4EeqsNvCDUfZJVA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_i2yB4KG4EeqsNvCDUfZJVA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_i2jYYKG4EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_i2yB4aG4EeqsNvCDUfZJVA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_lGPjEKG4EeqsNvCDUfZJVA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_lF9PMKG4EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_lGPjEaG4EeqsNvCDUfZJVA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_mtXR4KG4EeqsNvCDUfZJVA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_mtJ2gKG4EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_mtXR4aG4EeqsNvCDUfZJVA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_oTOccKG4EeqsNvCDUfZJVA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_oTAaAKG4EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_oTOccaG4EeqsNvCDUfZJVA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_d-nZFKG4EeqsNvCDUfZJVA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_d-nZFaG4EeqsNvCDUfZJVA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_d-nZFqG4EeqsNvCDUfZJVA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_d-nZF6G4EeqsNvCDUfZJVA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_d-nZGKG4EeqsNvCDUfZJVA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_d-nZGaG4EeqsNvCDUfZJVA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_d-nZGqG4EeqsNvCDUfZJVA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_d-nZG6G4EeqsNvCDUfZJVA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_d-nZHKG4EeqsNvCDUfZJVA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_d-jusKG4EeqsNvCDUfZJVA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_d-nZEaG4EeqsNvCDUfZJVA" x="-1260" y="900"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_08WgIKG4EeqsNvCDUfZJVA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_08WgIqG4EeqsNvCDUfZJVA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_08WgI6G4EeqsNvCDUfZJVA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_08WgJKG4EeqsNvCDUfZJVA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_08WgJaG4EeqsNvCDUfZJVA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_08WgJqG4EeqsNvCDUfZJVA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_08WgJ6G4EeqsNvCDUfZJVA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_08WgKKG4EeqsNvCDUfZJVA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_08WgKaG4EeqsNvCDUfZJVA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_08WgKqG4EeqsNvCDUfZJVA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_08WgK6G4EeqsNvCDUfZJVA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_08WgLKG4EeqsNvCDUfZJVA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_08Tc0KG4EeqsNvCDUfZJVA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_08WgIaG4EeqsNvCDUfZJVA" x="-1100" y="1180"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_34N0UKG4EeqsNvCDUfZJVA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_34N0UqG4EeqsNvCDUfZJVA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_34N0U6G4EeqsNvCDUfZJVA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_34N0VKG4EeqsNvCDUfZJVA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_34N0VaG4EeqsNvCDUfZJVA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_34N0VqG4EeqsNvCDUfZJVA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_34N0V6G4EeqsNvCDUfZJVA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_34N0WKG4EeqsNvCDUfZJVA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_34N0WaG4EeqsNvCDUfZJVA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_34N0WqG4EeqsNvCDUfZJVA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_34N0W6G4EeqsNvCDUfZJVA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_34N0XKG4EeqsNvCDUfZJVA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_34MmMKG4EeqsNvCDUfZJVA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_34N0UaG4EeqsNvCDUfZJVA" x="-1260" y="1180"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_IqAhEKG6EeqsNvCDUfZJVA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_IqAhEqG6EeqsNvCDUfZJVA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_IqAhE6G6EeqsNvCDUfZJVA" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_SS5G4KG6EeqsNvCDUfZJVA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_SSgFUKG6EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_SS5G4aG6EeqsNvCDUfZJVA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_ZHqmUKG6EeqsNvCDUfZJVA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_ZHdK8KG6EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_ZHqmUaG6EeqsNvCDUfZJVA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_ch__MKG6EeqsNvCDUfZJVA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_chtrUKG6EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_ch__MaG6EeqsNvCDUfZJVA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_ir0dIKG6EeqsNvCDUfZJVA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_iro28KG6EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_ir0dIaG6EeqsNvCDUfZJVA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_IqAhFKG6EeqsNvCDUfZJVA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_IqAhFaG6EeqsNvCDUfZJVA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_IqAhFqG6EeqsNvCDUfZJVA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IqAhF6G6EeqsNvCDUfZJVA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_IqAhGKG6EeqsNvCDUfZJVA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_IqAhGaG6EeqsNvCDUfZJVA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_IqAhGqG6EeqsNvCDUfZJVA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_IqAhG6G6EeqsNvCDUfZJVA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IqAhHKG6EeqsNvCDUfZJVA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_Ip7BgKG6EeqsNvCDUfZJVA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IqAhEaG6EeqsNvCDUfZJVA" x="-1080" y="680"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_37SKcKStEeqmTOsCAzVBxg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_37SKcqStEeqmTOsCAzVBxg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_37SKc6StEeqmTOsCAzVBxg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_Nbrw0KSuEeqmTOsCAzVBxg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_NbNPsKSuEeqmTOsCAzVBxg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_Nbrw0aSuEeqmTOsCAzVBxg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_37SKdKStEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_37SxgKStEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_37SxgaStEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_37SxgqStEeqmTOsCAzVBxg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_37Sxg6StEeqmTOsCAzVBxg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_37SxhKStEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_37SxhaStEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_37SxhqStEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_37Sxh6StEeqmTOsCAzVBxg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_37PHIKStEeqmTOsCAzVBxg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_37SKcaStEeqmTOsCAzVBxg" x="-1440" y="700"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_m1nccY7UEeq0upQJ9r5s4Q" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_m1ncco7UEeq0upQJ9r5s4Q"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_m1ncc47UEeq0upQJ9r5s4Q" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    </styles>
+    <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_4YbfkK8YEeqhVOlV64dXmA" name="css_stylesheets" eObjectListValue="_mci3oJm1Eeq8nv7tV9lOqQ"/>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    <edges xmi:type="notation:Connector" xmi:id="_J4Kf8I8nEeq5HrfdV5ATIg" type="Generalization_Edge" source="_J4Kf-I8nEeq5HrfdV5ATIg" target="_J4QmkI8nEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_J4Kf8Y8nEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_J4Kf8o8nEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_J4Kf848nEeq5HrfdV5ATIg" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_J4Kf9I8nEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_JBpp4H5sEeqSHNFOHg2_Jw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_J4Kf9Y8nEeq5HrfdV5ATIg" points="[-576, -350, -643984, -643984]$[-516, -399, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_J4Kf9o8nEeq5HrfdV5ATIg" id="(0.8248587570621468,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_J4Kf948nEeq5HrfdV5ATIg" id="(0.3081761006289308,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_J4P_gI8nEeq5HrfdV5ATIg" type="Generalization_Edge" source="_J4MVII8nEeq5HrfdV5ATIg" target="_J4QmkI8nEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_J4P_gY8nEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_J4P_go8nEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_J4P_g48nEeq5HrfdV5ATIg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_J4P_hI8nEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_Je4_gH5sEeqSHNFOHg2_Jw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_J4P_hY8nEeq5HrfdV5ATIg" points="[-820, 320, -643984, -643984]$[-940, 171, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_J4P_ho8nEeq5HrfdV5ATIg" id="(0.0,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_J4P_h48nEeq5HrfdV5ATIg" id="(0.8860759493670886,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_J4P_mI8nEeq5HrfdV5ATIg" type="Generalization_Edge" source="_J4OxYI8nEeq5HrfdV5ATIg" target="_J4QmkI8nEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_J4P_mY8nEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_J4P_mo8nEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_J4P_m48nEeq5HrfdV5ATIg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_J4P_nI8nEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_J9Ae4H5sEeqSHNFOHg2_Jw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_J4P_nY8nEeq5HrfdV5ATIg" points="[-370, -270, -643984, -643984]$[-370, -379, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_J4P_no8nEeq5HrfdV5ATIg" id="(0.2764976958525346,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_J4P_n48nEeq5HrfdV5ATIg" id="(0.6329113924050633,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_QS5scKG3EeqsNvCDUfZJVA" type="Generalization_Edge" source="_J4P_iI8nEeq5HrfdV5ATIg" target="_RBuMMKG1EeqsNvCDUfZJVA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_QS5sc6G3EeqsNvCDUfZJVA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_w1-goKG4EeqsNvCDUfZJVA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_QS5sdKG3EeqsNvCDUfZJVA" x="-1" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_QS5scaG3EeqsNvCDUfZJVA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_QScZcKG3EeqsNvCDUfZJVA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QS5scqG3EeqsNvCDUfZJVA" points="[-1600, 1258, -643984, -643984]$[-1560, 1223, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QThXgKG3EeqsNvCDUfZJVA" id="(0.4339622641509434,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QThXgaG3EeqsNvCDUfZJVA" id="(0.2702702702702703,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_QuNvcKG3EeqsNvCDUfZJVA" type="Generalization_Edge" source="_J4LuF48nEeq5HrfdV5ATIg" target="_RBuMMKG1EeqsNvCDUfZJVA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_QuNvc6G3EeqsNvCDUfZJVA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_w3SIMKG4EeqsNvCDUfZJVA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_QuNvdKG3EeqsNvCDUfZJVA" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_QuNvcaG3EeqsNvCDUfZJVA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_Qt4YQKG3EeqsNvCDUfZJVA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QuNvcqG3EeqsNvCDUfZJVA" points="[-1440, 1258, -643984, -643984]$[-1460, 1223, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QuxJEKG3EeqsNvCDUfZJVA" id="(0.6226415094339622,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QuxwIKG3EeqsNvCDUfZJVA" id="(0.7207207207207207,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_RMTZoKG3EeqsNvCDUfZJVA" type="Generalization_Edge" source="_RBuMMKG1EeqsNvCDUfZJVA" target="_5JYooKG1EeqsNvCDUfZJVA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_RMTZo6G3EeqsNvCDUfZJVA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_w2hTMKG4EeqsNvCDUfZJVA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_RMTZpKG3EeqsNvCDUfZJVA" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_RMTZoaG3EeqsNvCDUfZJVA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_RL6_IKG3EeqsNvCDUfZJVA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_RMTZoqG3EeqsNvCDUfZJVA" points="[-1560, 1120, -643984, -643984]$[-1680, 1055, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RMx6wKG3EeqsNvCDUfZJVA" id="(0.2702702702702703,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RMx6waG3EeqsNvCDUfZJVA" id="(0.6986899563318777,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_pumqwKG3EeqsNvCDUfZJVA" type="Generalization_Edge" source="_J4PYcI8nEeq5HrfdV5ATIg" target="_5JYooKG1EeqsNvCDUfZJVA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_pumqw6G3EeqsNvCDUfZJVA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_w2v8sKG4EeqsNvCDUfZJVA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_pumqxKG3EeqsNvCDUfZJVA" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_pumqwaG3EeqsNvCDUfZJVA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_pt11wKG3EeqsNvCDUfZJVA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_pumqwqG3EeqsNvCDUfZJVA" points="[-1900, 1138, -643984, -643984]$[-1760, 1055, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pvL5kKG3EeqsNvCDUfZJVA" id="(0.66,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pvL5kaG3EeqsNvCDUfZJVA" id="(0.34934497816593885,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_qNZfkKG3EeqsNvCDUfZJVA" type="Generalization_Edge" source="_J4Oxc48nEeq5HrfdV5ATIg" target="_5JYooKG1EeqsNvCDUfZJVA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_qNbUwKG3EeqsNvCDUfZJVA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_w2L8AKG4EeqsNvCDUfZJVA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_qNbUwaG3EeqsNvCDUfZJVA" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_qNZfkaG3EeqsNvCDUfZJVA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_qNQVoKG3EeqsNvCDUfZJVA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_qNZfkqG3EeqsNvCDUfZJVA" points="[-2040, 1140, -643984, -643984]$[-1780, 1055, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qN2LgKG3EeqsNvCDUfZJVA" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_qN2LgaG3EeqsNvCDUfZJVA" id="(0.26200873362445415,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_q2CM4KG3EeqsNvCDUfZJVA" type="Generalization_Edge" source="_g_XCsKG3EeqsNvCDUfZJVA" target="_5JYooKG1EeqsNvCDUfZJVA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_q2CM46G3EeqsNvCDUfZJVA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_w25tsKG4EeqsNvCDUfZJVA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_q2CM5KG3EeqsNvCDUfZJVA" x="-1" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_q2CM4aG3EeqsNvCDUfZJVA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_q1mIAKG3EeqsNvCDUfZJVA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_q2CM4qG3EeqsNvCDUfZJVA" points="[-2180, 1140, -643984, -643984]$[-1820, 1055, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_q2s7QKG3EeqsNvCDUfZJVA" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_q2s7QaG3EeqsNvCDUfZJVA" id="(0.08733624454148471,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_Kvk74KG5EeqsNvCDUfZJVA" type="Generalization_Edge" source="_08WgIKG4EeqsNvCDUfZJVA" target="_d-nZEKG4EeqsNvCDUfZJVA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Kvk746G5EeqsNvCDUfZJVA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_KDH5kKSuEeqmTOsCAzVBxg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Kvk75KG5EeqsNvCDUfZJVA" x="-2" y="57"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_Kvk74aG5EeqsNvCDUfZJVA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_KvNvgKG5EeqsNvCDUfZJVA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Kvk74qG5EeqsNvCDUfZJVA" points="[-1020, 1180, -643984, -643984]$[-1080, 1099, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KwHHYKG5EeqsNvCDUfZJVA" id="(0.7547169811320755,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KwHHYaG5EeqsNvCDUfZJVA" id="(0.7171314741035857,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_L9lnIKG5EeqsNvCDUfZJVA" type="Generalization_Edge" source="_34N0UKG4EeqsNvCDUfZJVA" target="_d-nZEKG4EeqsNvCDUfZJVA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_L9oqcKG5EeqsNvCDUfZJVA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_KCtp4KSuEeqmTOsCAzVBxg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_L9oqcaG5EeqsNvCDUfZJVA" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_L9lnIaG5EeqsNvCDUfZJVA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_L9aA8KG5EeqsNvCDUfZJVA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_L9lnIqG5EeqsNvCDUfZJVA" points="[-1200, 1180, -643984, -643984]$[-1180, 1099, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_L-DhMKG5EeqsNvCDUfZJVA" id="(0.5660377358490566,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_L-DhMaG5EeqsNvCDUfZJVA" id="(0.3187250996015936,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_Qv4FcKSuEeqmTOsCAzVBxg" type="Generalization_Edge" source="_5JYooKG1EeqsNvCDUfZJVA" target="_37SKcKStEeqmTOsCAzVBxg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Qv4sgKSuEeqmTOsCAzVBxg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Qv4sgaSuEeqmTOsCAzVBxg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_Qv4FcaSuEeqmTOsCAzVBxg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_QvZkUKSuEeqmTOsCAzVBxg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Qv4FcqSuEeqmTOsCAzVBxg" points="[-1660, 920, -643984, -643984]$[-1420, 803, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QwfJcKSuEeqmTOsCAzVBxg" id="(0.7860262008733624,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QwfJcaSuEeqmTOsCAzVBxg" id="(0.0966183574879227,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_RPARcKSuEeqmTOsCAzVBxg" type="Generalization_Edge" source="_J4PYgI8nEeq5HrfdV5ATIg" target="_37SKcKStEeqmTOsCAzVBxg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_RPARc6SuEeqmTOsCAzVBxg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_RPARdKSuEeqmTOsCAzVBxg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_RPARcaSuEeqmTOsCAzVBxg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_ROpsIKSuEeqmTOsCAzVBxg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_RPARcqSuEeqmTOsCAzVBxg" points="[-1440, 940, -643984, -643984]$[-1380, 803, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RPfZoKSuEeqmTOsCAzVBxg" id="(0.5660377358490566,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RPfZoaSuEeqmTOsCAzVBxg" id="(0.2898550724637681,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_RwKdwKSuEeqmTOsCAzVBxg" type="Generalization_Edge" source="_d-nZEKG4EeqsNvCDUfZJVA" target="_37SKcKStEeqmTOsCAzVBxg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_RwKdw6SuEeqmTOsCAzVBxg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_RwKdxKSuEeqmTOsCAzVBxg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_RwKdwaSuEeqmTOsCAzVBxg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_Rvo5UKSuEeqmTOsCAzVBxg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_RwKdwqSuEeqmTOsCAzVBxg" points="[-1180, 900, -643984, -643984]$[-1280, 803, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RwvFgKSuEeqmTOsCAzVBxg" id="(0.3187250996015936,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RwvFgaSuEeqmTOsCAzVBxg" id="(0.7729468599033816,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_SberoKSuEeqmTOsCAzVBxg" type="Generalization_Edge" source="_37SKcKStEeqmTOsCAzVBxg" target="_J4Kf-I8nEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Sbero6SuEeqmTOsCAzVBxg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_SberpKSuEeqmTOsCAzVBxg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_SberoaSuEeqmTOsCAzVBxg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_SbB_sKSuEeqmTOsCAzVBxg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_SberoqSuEeqmTOsCAzVBxg" points="[-1340, 700, -643984, -643984]$[-1340, 597, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ScYqkKSuEeqmTOsCAzVBxg" id="(0.4830917874396135,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ScYqkaSuEeqmTOsCAzVBxg" id="(0.3659574468085106,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_gwdNIKSuEeqmTOsCAzVBxg" type="Generalization_Edge" source="_IqAhEKG6EeqsNvCDUfZJVA" target="_J4Kf-I8nEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_gwdNI6SuEeqmTOsCAzVBxg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_gwdNJKSuEeqmTOsCAzVBxg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_gwdNIaSuEeqmTOsCAzVBxg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_gvxQoKSuEeqmTOsCAzVBxg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gwdNIqSuEeqmTOsCAzVBxg" points="[-1000, 680, -643984, -643984]$[-1220, 581, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gxPQQKSuEeqmTOsCAzVBxg" id="(0.3187250996015936,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gxPQQaSuEeqmTOsCAzVBxg" id="(0.8765957446808511,1.0)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_kJJLUI8lEeq5HrfdV5ATIg" type="PapyrusUMLProfileDiagram" name="Module" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_m2CPYI8lEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cqEVMI8mEeq5HrfdV5ATIg" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_cqEVMY8mEeq5HrfdV5ATIg" key="canonical" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_m2DdgI8lEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_m2EEkI8lEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UzO1AKWREeq2dLYfuMvqgg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UzO1AaWREeq2dLYfuMvqgg" key="mutable" value="true"/>
+        </eAnnotations>
+        <children xmi:type="notation:Shape" xmi:id="_sDX28I8lEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_7EMR4IhuEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_sDX28Y8lEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_sDZsII8lEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_7vDMwIhuEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_sDZsIY8lEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_sDaTMI8lEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_9DLHEIhuEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_sDaTMY8lEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_sDa6QI8lEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_ivxlgIvAEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_sDa6QY8lEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="__PMOkLYUEeq1Koq3J5meEA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#__N7qULYUEeq1Koq3J5meEA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="__PM1oLYUEeq1Koq3J5meEA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_AtTyYLYVEeq1Koq3J5meEA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_AtDTsLYVEeq1Koq3J5meEA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_AtTyYbYVEeq1Koq3J5meEA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_m2EEkY8lEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_m2EEko8lEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_m2EEk48lEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_m2EElI8lEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_m2EElY8lEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_m2EElo8lEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_m2EEl48lEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_m2EEmI8lEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_m2EEmY8lEeq5HrfdV5ATIg"/>
+      </children>
+      <styles xmi:type="notation:CanonicalStyle" xmi:id="_cqDuII8mEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_2E9coH2KEeqSHNFOHg2_Jw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_m2CPYY8lEeq5HrfdV5ATIg" x="376" y="313"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_nKeOUI8lEeq5HrfdV5ATIg" type="Class_MetaclassShape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_nKe1YI8lEeq5HrfdV5ATIg" type="Class_MetaclassNameLabel"/>
+      <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nKeOUY8lEeq5HrfdV5ATIg" x="394" y="101"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_3vW_8LYUEeq1Koq3J5meEA" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_3vW_8bYUEeq1Koq3J5meEA"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_3vXnALYUEeq1Koq3J5meEA" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3vW_8rYUEeq1Koq3J5meEA" x="594" y="101"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_kJJLUY8lEeq5HrfdV5ATIg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_kJJLUo8lEeq5HrfdV5ATIg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_kJJLU48lEeq5HrfdV5ATIg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    </styles>
+    <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_g_ZjoK8YEeqhVOlV64dXmA" name="css_stylesheets" eObjectListValue="_mci3oJm1Eeq8nv7tV9lOqQ"/>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    <edges xmi:type="notation:Connector" xmi:id="_nLI8sI8lEeq5HrfdV5ATIg" type="Extension_Edge" source="_m2CPYI8lEeq5HrfdV5ATIg" target="_nKeOUI8lEeq5HrfdV5ATIg">
+      <styles xmi:type="notation:FontStyle" xmi:id="_nLI8sY8lEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Extension" href="AIML.profile.uml#_n3BRAH5rEeqSHNFOHg2_Jw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_nLI8so8lEeq5HrfdV5ATIg" points="[376, 320, -643984, -643984]$[0, 0, -643984, -643984]"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_3vXnAbYUEeq1Koq3J5meEA" type="StereotypeCommentLink" source="_nKeOUI8lEeq5HrfdV5ATIg" target="_3vW_8LYUEeq1Koq3J5meEA">
+      <styles xmi:type="notation:FontStyle" xmi:id="_3vYOELYUEeq1Koq3J5meEA"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_3vY1ILYUEeq1Koq3J5meEA" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3vYOEbYUEeq1Koq3J5meEA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3vYOErYUEeq1Koq3J5meEA"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3vYOE7YUEeq1Koq3J5meEA"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_xCeOMI8lEeq5HrfdV5ATIg" type="PapyrusUMLProfileDiagram" name="Tensor" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_1c7AQI8lEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jEYGMY8mEeq5HrfdV5ATIg" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jEYGMo8mEeq5HrfdV5ATIg" key="canonical" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_1c7nUY8lEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_1c8OYI8lEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jFWWkI8mEeq5HrfdV5ATIg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jFWWkY8mEeq5HrfdV5ATIg" key="mutable" value="true"/>
+        </eAnnotations>
+        <children xmi:type="notation:Shape" xmi:id="_jEZ7YI8mEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jFWWko8mEeq5HrfdV5ATIg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jFWWk48mEeq5HrfdV5ATIg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_mlHloIhuEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_jEZ7YY8mEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_jEaicI8mEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jFWWlI8mEeq5HrfdV5ATIg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jFWWlY8mEeq5HrfdV5ATIg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_ncDNoIhuEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_jEaicY8mEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_jEbJgI8mEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jFWWlo8mEeq5HrfdV5ATIg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jFWWl48mEeq5HrfdV5ATIg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_oUgfoIhuEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_jEbJgY8mEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_jEbJgo8mEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jFWWmI8mEeq5HrfdV5ATIg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jFWWmY8mEeq5HrfdV5ATIg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_o5TOwIhuEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_jEbJg48mEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_jEbwkI8mEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jFW9oI8mEeq5HrfdV5ATIg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jFW9oY8mEeq5HrfdV5ATIg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_pnJzQIhuEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_jEbwkY8mEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_wpWrsKWvEeq2dLYfuMvqgg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_wocFsKWvEeq2dLYfuMvqgg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_wpWrsaWvEeq2dLYfuMvqgg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_xtNVYKWvEeq2dLYfuMvqgg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_xs8PoKWvEeq2dLYfuMvqgg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_xtNVYaWvEeq2dLYfuMvqgg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_1c8OYY8lEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_1c8OYo8lEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_1c8OY48lEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1c8OZI8lEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_1c8OZY8lEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_1c8OZo8lEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_1c8OZ48lEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_1c8OaI8lEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1c8OaY8lEeq5HrfdV5ATIg"/>
+      </children>
+      <styles xmi:type="notation:CanonicalStyle" xmi:id="_jEYGMI8mEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_kkWnwIhuEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1c7nUI8lEeq5HrfdV5ATIg" x="260" y="340"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_1dH0kI8lEeq5HrfdV5ATIg" type="Enumeration_Shape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kC_DgY8mEeq5HrfdV5ATIg" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kC_Dgo8mEeq5HrfdV5ATIg" key="canonical" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_1dH0ko8lEeq5HrfdV5ATIg" type="Enumeration_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_1dIboI8lEeq5HrfdV5ATIg" type="Enumeration_LiteralCompartment">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kEAXMI8mEeq5HrfdV5ATIg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kEAXMY8mEeq5HrfdV5ATIg" key="mutable" value="true"/>
+        </eAnnotations>
+        <children xmi:type="notation:Shape" xmi:id="_kDARoI8mEeq5HrfdV5ATIg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kEAXMo8mEeq5HrfdV5ATIg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kEAXM48mEeq5HrfdV5ATIg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_GeF-8IvIEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kDARoY8mEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_kDA4sI8mEeq5HrfdV5ATIg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kEAXNI8mEeq5HrfdV5ATIg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kEAXNY8mEeq5HrfdV5ATIg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_VdQs8IvIEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kDA4sY8mEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_kDA4so8mEeq5HrfdV5ATIg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kEAXNo8mEeq5HrfdV5ATIg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kEAXN48mEeq5HrfdV5ATIg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_YIbSsIvIEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kDA4s48mEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_kDBfwI8mEeq5HrfdV5ATIg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kEAXOI8mEeq5HrfdV5ATIg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kEAXOY8mEeq5HrfdV5ATIg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_bZFyMIvIEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kDBfwY8mEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_kDCG0I8mEeq5HrfdV5ATIg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kEAXOo8mEeq5HrfdV5ATIg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kEAXO48mEeq5HrfdV5ATIg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_czCAoIvIEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kDCG0Y8mEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_kDCG0o8mEeq5HrfdV5ATIg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kEAXPI8mEeq5HrfdV5ATIg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kEAXPY8mEeq5HrfdV5ATIg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_dzPgcIvIEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kDCG048mEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_kDCt4I8mEeq5HrfdV5ATIg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kEAXPo8mEeq5HrfdV5ATIg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kEAXP48mEeq5HrfdV5ATIg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_ez5sMIvIEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kDCt4Y8mEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_kDDU8I8mEeq5HrfdV5ATIg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kEA-QI8mEeq5HrfdV5ATIg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kEA-QY8mEeq5HrfdV5ATIg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_flb20IvIEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kDDU8Y8mEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_kDDU8o8mEeq5HrfdV5ATIg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kEA-Qo8mEeq5HrfdV5ATIg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kEA-Q48mEeq5HrfdV5ATIg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_gV4cUIvIEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kDDU848mEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_1dIboY8lEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_1dIboo8lEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_1dIbo48lEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1dIbpI8lEeq5HrfdV5ATIg"/>
+      </children>
+      <styles xmi:type="notation:CanonicalStyle" xmi:id="_kC_DgI8mEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Enumeration" href="AIML.profile.uml#_D6R-YIvIEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1dH0kY8lEeq5HrfdV5ATIg" x="500" y="320"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_1dQ-gI8lEeq5HrfdV5ATIg" type="Enumeration_Shape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ksodcY8mEeq5HrfdV5ATIg" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kspEgI8mEeq5HrfdV5ATIg" key="canonical" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_1dRlkI8lEeq5HrfdV5ATIg" type="Enumeration_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_1dRlkY8lEeq5HrfdV5ATIg" type="Enumeration_LiteralCompartment">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kt7d8I8mEeq5HrfdV5ATIg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kt7d8Y8mEeq5HrfdV5ATIg" key="mutable" value="true"/>
+        </eAnnotations>
+        <children xmi:type="notation:Shape" xmi:id="_ksqSoI8mEeq5HrfdV5ATIg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kt7d8o8mEeq5HrfdV5ATIg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kt7d848mEeq5HrfdV5ATIg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_FE7PwIvMEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_ksqSoY8mEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_ksqSoo8mEeq5HrfdV5ATIg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kt7d9I8mEeq5HrfdV5ATIg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kt7d9Y8mEeq5HrfdV5ATIg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_GM6ykIvMEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_ksqSo48mEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_ksq5sI8mEeq5HrfdV5ATIg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kt7d9o8mEeq5HrfdV5ATIg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kt7d948mEeq5HrfdV5ATIg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_IXWp0IvMEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_ksq5sY8mEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_ksq5so8mEeq5HrfdV5ATIg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kt7d-I8mEeq5HrfdV5ATIg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kt7d-Y8mEeq5HrfdV5ATIg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_KEe6AIvMEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_ksq5s48mEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_ksq5tI8mEeq5HrfdV5ATIg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kt7d-o8mEeq5HrfdV5ATIg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kt7d-48mEeq5HrfdV5ATIg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_LzG_AIvMEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_ksq5tY8mEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_ksrgwI8mEeq5HrfdV5ATIg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kt7d_I8mEeq5HrfdV5ATIg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kt8FAI8mEeq5HrfdV5ATIg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_MmTWgIvMEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_ksrgwY8mEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_ksrgwo8mEeq5HrfdV5ATIg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kt8FAY8mEeq5HrfdV5ATIg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kt8FAo8mEeq5HrfdV5ATIg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_Ndwi8IvMEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_ksrgw48mEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_ksrgxI8mEeq5HrfdV5ATIg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kt8FA48mEeq5HrfdV5ATIg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kt8FBI8mEeq5HrfdV5ATIg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_OHKFQIvMEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_ksrgxY8mEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_kssH0I8mEeq5HrfdV5ATIg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kt8FBY8mEeq5HrfdV5ATIg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kt8FBo8mEeq5HrfdV5ATIg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_O3f9EIvMEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kssH0Y8mEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_1dRlko8lEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_1dRlk48lEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_1dRllI8lEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1dRllY8lEeq5HrfdV5ATIg"/>
+      </children>
+      <styles xmi:type="notation:CanonicalStyle" xmi:id="_ksodcI8mEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Enumeration" href="AIML.profile.uml#_AiQ84IvMEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1dQ-gY8lEeq5HrfdV5ATIg" x="720" y="320"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_If4SAK8eEeqUEZ8AVVPlLA" type="Class_MetaclassShape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_If7VUK8eEeqUEZ8AVVPlLA" source="Stereotype_Annotation">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_If7VUa8eEeqUEZ8AVVPlLA" key="StereotypeWithQualifiedNameList" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_If7VUq8eEeqUEZ8AVVPlLA" key="StereotypeList" value="StandardProfile::Metaclass"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_If7VU68eEeqUEZ8AVVPlLA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_If7VVK8eEeqUEZ8AVVPlLA" key="PropStereoDisplay" value=""/>
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_If7VVa8eEeqUEZ8AVVPlLA" key="StereotypePropertyLocation" value="Compartment"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_If6HMK8eEeqUEZ8AVVPlLA" type="Class_MetaclassNameLabel"/>
+      <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_If6HMa8eEeqUEZ8AVVPlLA" x="360" y="220"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_ThxeYLBsEeqpLKLYM3OEXg" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_ThxeYbBsEeqpLKLYM3OEXg"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_ThxeY7BsEeqpLKLYM3OEXg" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ThxeYrBsEeqpLKLYM3OEXg" x="560" y="220"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_xCeOMY8lEeq5HrfdV5ATIg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_xCeOMo8lEeq5HrfdV5ATIg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_xCeOM48lEeq5HrfdV5ATIg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    </styles>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    <edges xmi:type="notation:Connector" xmi:id="_JNlskK8eEeqUEZ8AVVPlLA" type="Extension_Edge" source="_1c7AQI8lEeq5HrfdV5ATIg" target="_If4SAK8eEeqUEZ8AVVPlLA">
+      <styles xmi:type="notation:FontStyle" xmi:id="_JNlska8eEeqUEZ8AVVPlLA"/>
+      <element xmi:type="uml:Extension" href="AIML.profile.uml#_JM3T0K8eEeqUEZ8AVVPlLA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_JNlskq8eEeqUEZ8AVVPlLA" points="[400, 340, -643984, -643984]$[400, 270, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JORpEK8eEeqUEZ8AVVPlLA" id="(0.7291666666666666,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JOSQIK8eEeqUEZ8AVVPlLA" id="(0.4,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_ThyFcLBsEeqpLKLYM3OEXg" type="StereotypeCommentLink" source="_If4SAK8eEeqUEZ8AVVPlLA" target="_ThxeYLBsEeqpLKLYM3OEXg">
+      <styles xmi:type="notation:FontStyle" xmi:id="_ThyFcbBsEeqpLKLYM3OEXg"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_ThzTkbBsEeqpLKLYM3OEXg" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ThyFcrBsEeqpLKLYM3OEXg" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ThysgLBsEeqpLKLYM3OEXg"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ThzTkLBsEeqpLKLYM3OEXg"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_M23iMI8mEeq5HrfdV5ATIg" type="PapyrusUMLProfileDiagram" name="Type of Data" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_ZQV4UJbREeq1-Ze45jZMTg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_ZQWfYJbREeq1-Ze45jZMTg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ZQWfYZbREeq1-Ze45jZMTg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_mwGpEJbREeq1-Ze45jZMTg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_mveW8JbREeq1-Ze45jZMTg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_mwGpEZbREeq1-Ze45jZMTg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ZQWfYpbREeq1-Ze45jZMTg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ZQWfY5bREeq1-Ze45jZMTg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ZQWfZJbREeq1-Ze45jZMTg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZQWfZZbREeq1-Ze45jZMTg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ZQXGcJbREeq1-Ze45jZMTg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ZQXGcZbREeq1-Ze45jZMTg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ZQXGcpbREeq1-Ze45jZMTg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ZQXGc5bREeq1-Ze45jZMTg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZQXGdJbREeq1-Ze45jZMTg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_ZQQYwJbREeq1-Ze45jZMTg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZQV4UZbREeq1-Ze45jZMTg" x="380" y="360"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_M23iMY8mEeq5HrfdV5ATIg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_M23iMo8mEeq5HrfdV5ATIg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_M23iM48mEeq5HrfdV5ATIg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    </styles>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_ZJoe4I8nEeq5HrfdV5ATIg" type="PapyrusUMLProfileDiagram" name="Pooling_layers" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_As8REI8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_As8REY8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_As8REo8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_As8RE48oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_tPrdkIVXEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_As8RFI8oEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_As8RFY8oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_uGxdoIVXEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_As8RFo8oEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_As8RF48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_As8RGI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_As8RGY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_As8RGo8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_As8RG48oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_As8RHI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_As8RHY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_As8RHo8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_As8RH48oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_rL8rQIVXEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_As8RI48oEeq5HrfdV5ATIg" x="-100" y="820"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_As84II8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_As84IY8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_As84Io8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_As84I48oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_Y5DYIIVWEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_As84JI8oEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_As84JY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_As9fMI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_As9fMY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_As9fMo8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_As9fM48oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_As9fNI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_As9fNY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_As9fNo8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_As9fN48oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_TS3LsIVWEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_As9fO48oEeq5HrfdV5ATIg" x="400" y="980"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_As9fPI8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_As9fPY8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_As9fPo8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_As9fP48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_As9fQI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_As9fQY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_As9fQo8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_As9fQ48oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_As9fRI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_As9fRY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_As9fRo8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_As9fR48oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_y5HSoIVUEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_As9fS48oEeq5HrfdV5ATIg" x="-160" y="640"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_As_UYI8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_As_UYY8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_As_UYo8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_As_UY48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_As_UZI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_As_UZY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_As_UZo8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_As_UZ48oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_As_UaI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_As_UaY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_As_Uao8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_As_Ua48oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_vkD30IVTEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_As_Ub48oEeq5HrfdV5ATIg" x="960" y="540"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_AtAih48oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtAiiI8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtAiiY8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtAiio8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtAii48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtAijI8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtAijY8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtAijo8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtAij48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtAikI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtAikY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtAiko8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_b9-hsIVWEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtAilo8oEeq5HrfdV5ATIg" x="420" y="1120"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_AtBwqI8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtBwqY8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtBwqo8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_AtBwq48oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_mqeLgIVUEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_AtBwrI8oEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_jyM2MKZ3EeqIr7xwFiWQGQ" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_jxSQMKZ3EeqIr7xwFiWQGQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_jyM2MaZ3EeqIr7xwFiWQGQ"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtBwrY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtBwro8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtBwr48oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtBwsI8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtBwsY8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtBwso8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtBws48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtBwtI8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtBwtY8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_h3EG4IVUEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtBwuY8oEeq5HrfdV5ATIg" x="-300" y="460"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_AtCXsI8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtCXsY8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtCXso8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtCXs48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtCXtI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtCXtY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtCXto8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtCXt48oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtCXuI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtCXuY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtCXuo8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtCXu48oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_1WhB0IVXEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtCXv48oEeq5HrfdV5ATIg" x="-40" y="980"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_AtDl0I8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtDl0Y8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtDl0o8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_AtDl048oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_K5-DkIVVEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_AtDl1I8oEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtDl1Y8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtDl1o8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtDl148oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtDl2I8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtDl2Y8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtDl2o8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtDl248oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtDl3I8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtDl3Y8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_FjbcsIVVEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtDl4Y8oEeq5HrfdV5ATIg" x="380" y="480" width="181" height="81"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_AtEM948oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtEM-I8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtEM-Y8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtEM-o8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtEM-48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtEM_I8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtEM_Y8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtEM_o8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtEM_48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtENAI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtENAY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtENAo8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_VqZVsIVUEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtEz8o8oEeq5HrfdV5ATIg" x="240" y="980"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_AtEz848oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtEz9I8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtEz9Y8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtEz9o8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtEz948oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtEz-I8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtEz-Y8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtEz-o8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtEz-48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtEz_I8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtEz_Y8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtEz_o8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_sAviEIVTEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtE0Ao8oEeq5HrfdV5ATIg" x="1240" y="540"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_AtE0A48oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtE0BI8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtE0BY8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtE0Bo8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtE0B48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtE0CI8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtE0CY8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtE0Co8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtE0C48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtE0DI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtE0DY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtE0Do8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_wYbekIVUEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtE0Eo8oEeq5HrfdV5ATIg" x="-280" y="640"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_AtGCII8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtGCIY8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtGCIo8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_AtGCI48oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_vvW-UIVSEeqvavUi0dxRAw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_AtGCJI8oEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtGCJY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtGCJo8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtGCJ48oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtGCKI8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtGCKY8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtGCKo8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtGCK48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtGCLI8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtGCLY8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_spFw8IVSEeqvavUi0dxRAw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtGCMY8oEeq5HrfdV5ATIg" x="1060" y="200"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_AtGpII8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtGpIY8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtGpIo8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtGpI48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtGpJI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtGpJY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtGpJo8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtGpJ48oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtGpKI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtGpKY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtGpKo8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtGpK48oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_nMBrUIVSEeqvavUi0dxRAw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtGpL48oEeq5HrfdV5ATIg" x="480" y="40"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_AtHQMI8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtHQMY8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtHQMo8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtHQM48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtHQNI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtHQNY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtHQNo8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtHQN48oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtHQOI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtHQOY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtHQOo8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtHQO48oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_dQfZ0IVTEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtHQP48oEeq5HrfdV5ATIg" x="1700" y="540"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_AtHQQY8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtHQQo8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtHQQ48oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtHQRI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtHQRY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtHQRo8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtHQR48oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtHQSI8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtHQSY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtHQSo8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtHQS48oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtHQTI8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_ddho4IVWEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtHQUI8oEeq5HrfdV5ATIg" x="580" y="1120"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_AtH3QI8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtH3QY8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtH3Qo8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtH3Q48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtH3RI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtH3RY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtH3Ro8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtH3R48oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtH3SI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtH3SY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtH3So8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtH3S48oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_cdWFoIVTEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtH3T48oEeq5HrfdV5ATIg" x="1560" y="540"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_AtH3UI8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtH3UY8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtH3Uo8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtH3U48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtH3VI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtH3VY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtH3Vo8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtH3V48oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtH3WI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtH3WY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtH3Wo8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtH3W48oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_QF-D0IVUEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtH3X48oEeq5HrfdV5ATIg" x="-160" y="980"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_AtIeUI8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtIeUY8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtIeUo8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtIeU48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtIeVI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtIeVY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtIeVo8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtIeV48oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtIeWI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtIeWY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtIeWo8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtIeW48oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_XxquwIVVEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtIeX48oEeq5HrfdV5ATIg" x="320" y="620"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_AtIeaI8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtIeaY8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtIeao8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_AtIea48oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_cdy_UIVYEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_AtIebI8oEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_AtIebY8oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_dhzaAIVYEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_AtIebo8oEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_AtIeb48oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_fG5IgIVYEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_AtIecI8oEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtIecY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtIeco8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtIec48oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtIedI8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtIedY8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtIedo8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtIed48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtIeeI8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtIeeY8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_Y3zwEIVYEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtIefY8oEeq5HrfdV5ATIg" x="700" y="360"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_AtJFYI8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtJFYY8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtJFYo8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_AtJFY48oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_Ayj5QIVWEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_AtJFZI8oEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtJFZY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtJFZo8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtJFZ48oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtJFaI8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtJFaY8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtJFao8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtJFa48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtJFbI8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtJFbY8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_6bJEMIVVEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtJFcY8oEeq5HrfdV5ATIg" x="280" y="820" width="161" height="101"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_AtJseo8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtJse48oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtJsfI8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_AtJsfY8oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_CkDW8IVUEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_AtJsfo8oEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtJsf48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtJsgI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtJsgY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtJsgo8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtJsg48oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtJshI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtJshY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtJsho8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtJsh48oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_qYSzAIVSEeqvavUi0dxRAw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtJsi48oEeq5HrfdV5ATIg" x="320" y="200"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_AtKTgI8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtKTgY8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtKTgo8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtKTg48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtKThI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtKThY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtKTho8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtKTh48oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtKTiI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtKTiY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtKTio8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtKTi48oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_uVbhgIVTEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtKTj48oEeq5HrfdV5ATIg" x="1100" y="540"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_AtKTl48oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtKTmI8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtKTmY8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_AtKTmo8oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_KnpSkIVXEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_AtKTm48oEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_xB1gQKZ3EeqIr7xwFiWQGQ" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_xBPDUKZ3EeqIr7xwFiWQGQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_xB1gQaZ3EeqIr7xwFiWQGQ"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtKTnI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtKTnY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtKTno8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtKTn48oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtKToI8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtKToY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtKToo8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtKTo48oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtKTpI8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_Cfb1UIVXEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtKTqI8oEeq5HrfdV5ATIg" y="640"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_AtKTqY8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtKTqo8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtKTq48oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtK6kI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtK6kY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtK6ko8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtK6k48oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtK6lI8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtK6lY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtK6lo8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtK6l48oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtK6mI8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_2J_tMIVXEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtK6nI8oEeq5HrfdV5ATIg" x="80" y="980"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_AtK6nY8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtK6no8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtK6n48oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtK6oI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtK6oY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtK6oo8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtK6o48oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtK6pI8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtK6pY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtK6po8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtK6p48oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtK6qI8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_aIzlQIVVEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtK6rI8oEeq5HrfdV5ATIg" x="440" y="620"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_AtK6rY8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtK6ro8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtK6r48oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_AtK6sI8oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_3JChoIVSEeqvavUi0dxRAw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_AtK6sY8oEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtK6so8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtK6s48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtK6tI8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtK6tY8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtK6to8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtK6t48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtK6uI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtK6uY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtK6uo8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_x9fp0IVSEeqvavUi0dxRAw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtK6vo8oEeq5HrfdV5ATIg" x="1500" y="340"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_AtLhoI8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtLhoY8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtLhoo8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtLho48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtLhpI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtLhpY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtLhpo8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtLhp48oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtLhqI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtLhqY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtLhqo8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtLhq48oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_Y8sCUIVTEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtLhr48oEeq5HrfdV5ATIg" x="1420" y="540"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_AtMIwI8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtMIwY8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtMIwo8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtMIw48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtMIxI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtMIxY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtMIxo8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtMIx48oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtMIyI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtMIyY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtMIyo8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtMIy48oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_SVcMEIVUEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtMIz48oEeq5HrfdV5ATIg" x="-400" y="640"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_AtMI0I8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtMI0Y8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtMI0o8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_AtMI048oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_K3ga4IVUEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_AtMI1I8oEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtMvwI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtMvwY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtMvwo8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtMvw48oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_AtMvxI8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_AtMvxY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_AtMvxo8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_AtMvx48oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtMvyI8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_H6da8IVUEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_AtMvzI8oEeq5HrfdV5ATIg" x="20" y="320"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_ZJoe4Y8nEeq5HrfdV5ATIg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_ZJoe4o8nEeq5HrfdV5ATIg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_ZJoe448nEeq5HrfdV5ATIg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    </styles>
+    <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_6vmLQK8YEeqhVOlV64dXmA" name="css_stylesheets" eObjectListValue="_mci3oJm1Eeq8nv7tV9lOqQ"/>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    <edges xmi:type="notation:Connector" xmi:id="_As7C8I8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_AtCXsI8oEeq5HrfdV5ATIg" target="_As8REI8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_As7C8Y8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_OGCZII8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_As7C8o8oEeq5HrfdV5ATIg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_As7C848oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_6B2IgIVXEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_As7C9I8oEeq5HrfdV5ATIg" points="[10, 970, -643984, -643984]$[10, 929, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_As7C9Y8oEeq5HrfdV5ATIg" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_As7C9o8oEeq5HrfdV5ATIg" id="(0.5687203791469194,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_As-GQY8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_AtEz848oEeq5HrfdV5ATIg" target="_AtGCII8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_As-GQo8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_As-GQ48oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_As-GRI8oEeq5HrfdV5ATIg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_As-GRY8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_7a4U0IVTEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_As-GRo8oEeq5HrfdV5ATIg" points="[1290, 530, -643984, -643984]$[1210, 293, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_As-GR48oEeq5HrfdV5ATIg" id="(0.5084745762711864,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_As-GSI8oEeq5HrfdV5ATIg" id="(0.8121827411167513,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_As-tUY8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_AtEM948oEeq5HrfdV5ATIg" target="_AtJFYI8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_As-tUo8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_As-tU48oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_As-tVI8oEeq5HrfdV5ATIg" x="1" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_As-tVY8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_geEBsIVWEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_As-tVo8oEeq5HrfdV5ATIg" points="[190, 970, -643984, -643984]$[250, 911, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_As-tV48oEeq5HrfdV5ATIg" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_As-tWI8oEeq5HrfdV5ATIg" id="(0.37267080745341613,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_As_7cI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_AtBwqI8oEeq5HrfdV5ATIg" target="_AtMI0I8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtAigI8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_AtAigY8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_AtAigo8oEeq5HrfdV5ATIg" x="-1" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_AtAig48oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_Ud9iUIVVEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AtAihI8oEeq5HrfdV5ATIg" points="[-170, 450, -643984, -643984]$[30, 413, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtAihY8oEeq5HrfdV5ATIg" id="(0.7734806629834254,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtAiho8oEeq5HrfdV5ATIg" id="(0.4819277108433735,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_AtBJkI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_AtGCII8oEeq5HrfdV5ATIg" target="_AtGpII8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtBJkY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_AtBJko8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_AtBJk48oEeq5HrfdV5ATIg" x="-633" y="148"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_AtBJlI8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_CV1X8IVYEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AtBJlY8oEeq5HrfdV5ATIg" points="[830, 170, -643984, -643984]$[550, 130, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtBJlo8oEeq5HrfdV5ATIg" id="(0.5076142131979695,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtBJl48oEeq5HrfdV5ATIg" id="(0.8,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_AtBJmY8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_AtLhoI8oEeq5HrfdV5ATIg" target="_AtK6rY8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtBJmo8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_AtBJm48oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_AtBJnI8oEeq5HrfdV5ATIg" x="1" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_AtBJnY8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_g8dVQIVTEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AtBJno8oEeq5HrfdV5ATIg" points="[1450, 530, -643984, -643984]$[1530, 433, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtBJn48oEeq5HrfdV5ATIg" id="(0.46153846153846156,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtBJoI8oEeq5HrfdV5ATIg" id="(0.1895734597156398,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_AtBwoI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_AtDl0I8oEeq5HrfdV5ATIg" target="_AtMI0I8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtBwoY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_AtBwoo8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_AtBwo48oEeq5HrfdV5ATIg" x="-155" y="96"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_AtBwpI8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_TaQCkIVVEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AtBwpY8oEeq5HrfdV5ATIg" points="[390, 470, -643984, -643984]$[70, 413, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtBwpo8oEeq5HrfdV5ATIg" id="(0.4419889502762431,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtBwp48oEeq5HrfdV5ATIg" id="(0.7228915662650602,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_AtC-wI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_AtIeaI8oEeq5HrfdV5ATIg" target="_AtJseo8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtC-wY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_AtC-wo8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_AtC-w48oEeq5HrfdV5ATIg" x="1" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_AtC-xI8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_hzfRoIVYEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AtC-xY8oEeq5HrfdV5ATIg" points="[770, 450, -643984, -643984]$[470, 293, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtC-xo8oEeq5HrfdV5ATIg" id="(0.2843601895734597,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtC-x48oEeq5HrfdV5ATIg" id="(0.8290155440414507,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_AtC-yI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_AtKTqY8oEeq5HrfdV5ATIg" target="_As8REI8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtC-yY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_OGXwUI8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_AtC-yo8oEeq5HrfdV5ATIg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_AtC-y48oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_6loyEIVXEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AtC-zI8oEeq5HrfdV5ATIg" points="[130, 970, -643984, -643984]$[70, 929, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtC-zY8oEeq5HrfdV5ATIg" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtC-zo8oEeq5HrfdV5ATIg" id="(0.8530805687203792,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_AtEM4I8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_AtMIwI8oEeq5HrfdV5ATIg" target="_AtBwqI8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtEM4Y8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_OHWAsI8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_AtEM4o8oEeq5HrfdV5ATIg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_AtEM448oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_3UmmgIVUEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AtEM5I8oEeq5HrfdV5ATIg" points="[-360, 1360, -643984, -643984]$[-280, 1283, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtEM5Y8oEeq5HrfdV5ATIg" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtEM5o8oEeq5HrfdV5ATIg" id="(0.22099447513812154,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_AtEM6I8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_AtH3UI8oEeq5HrfdV5ATIg" target="_As8REI8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtEM6Y8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_OFHMEI8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_AtEM6o8oEeq5HrfdV5ATIg" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_AtEM648oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_5a1L0IVXEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AtEM7I8oEeq5HrfdV5ATIg" points="[-130, 970, -643984, -643984]$[-70, 929, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtEM7Y8oEeq5HrfdV5ATIg" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtEM7o8oEeq5HrfdV5ATIg" id="(0.1895734597156398,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_AtEM748oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_As_UYI8oEeq5HrfdV5ATIg" target="_AtGCII8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtEM8I8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_AtEM8Y8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_AtEM8o8oEeq5HrfdV5ATIg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_AtEM848oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_9Q2_AIVTEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AtEM9I8oEeq5HrfdV5ATIg" points="[1010, 530, -643984, -643984]$[1090, 293, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtEM9Y8oEeq5HrfdV5ATIg" id="(0.5084745762711864,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtEM9o8oEeq5HrfdV5ATIg" id="(0.20304568527918782,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_AtFbAI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_AtHQMI8oEeq5HrfdV5ATIg" target="_AtK6rY8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtFbAY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_AtFbAo8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_AtFbA48oEeq5HrfdV5ATIg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_AtFbBI8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_iK5eUIVTEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AtFbBY8oEeq5HrfdV5ATIg" points="[1770, 530, -643984, -643984]$[1670, 433, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtFbBo8oEeq5HrfdV5ATIg" id="(0.46153846153846156,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtFbB48oEeq5HrfdV5ATIg" id="(0.8530805687203792,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_AtFbCI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_As8REI8oEeq5HrfdV5ATIg" target="_AtKTl48oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtFbCY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_AtFbCo8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_AtFbC48oEeq5HrfdV5ATIg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_AtFbDI8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_zKvGwIVXEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AtFbDY8oEeq5HrfdV5ATIg" points="[-30, 810, -643984, -643984]$[70, 733, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtFbDo8oEeq5HrfdV5ATIg" id="(0.6635071090047393,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtFbD48oEeq5HrfdV5ATIg" id="(0.418848167539267,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_AtFbEI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_AtE0A48oEeq5HrfdV5ATIg" target="_AtBwqI8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtFbEY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_OFpXkI8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_AtFbEo8oEeq5HrfdV5ATIg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_AtFbE48oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_2i3nkIVUEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AtFbFI8oEeq5HrfdV5ATIg" points="[-250, 630, -643984, -643984]$[-230, 553, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtFbFY8oEeq5HrfdV5ATIg" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtFbFo8oEeq5HrfdV5ATIg" id="(0.4419889502762431,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_AtGCEI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_AtK6rY8oEeq5HrfdV5ATIg" target="_AtGCII8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtGCEY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_AtGCEo8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_AtGCE48oEeq5HrfdV5ATIg" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_AtGCFI8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_i7emsIVTEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AtGCFY8oEeq5HrfdV5ATIg" points="[1590, 330, -643984, -643984]$[1230, 293, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtGCFo8oEeq5HrfdV5ATIg" id="(0.47393364928909953,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtGCF48oEeq5HrfdV5ATIg" id="(0.9137055837563451,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_AtGCGI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_AtK6nY8oEeq5HrfdV5ATIg" target="_AtDl0I8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtGCGY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_AtGCGo8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_AtGCG48oEeq5HrfdV5ATIg" x="120" y="131"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_AtGCHI8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_dg9M0IVVEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AtGCHY8oEeq5HrfdV5ATIg" points="[450, 610, -643984, -643984]$[450, 551, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtGCHo8oEeq5HrfdV5ATIg" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtGCH48oEeq5HrfdV5ATIg" id="(0.4419889502762431,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_AtHQUY8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_AtJFYI8oEeq5HrfdV5ATIg" target="_AtKTl48oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtHQUo8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_AtHQU48oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_AtHQVI8oEeq5HrfdV5ATIg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_AtHQVY8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_eWQLMIVXEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AtHQVo8oEeq5HrfdV5ATIg" points="[10, 810, -643984, -643984]$[90, 733, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtHQV48oEeq5HrfdV5ATIg" id="(0.4968944099378882,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtHQWI8oEeq5HrfdV5ATIg" id="(0.837696335078534,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_AtIeYI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_AtH3QI8oEeq5HrfdV5ATIg" target="_AtK6rY8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtIeYY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_AtIeYo8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_AtIeY48oEeq5HrfdV5ATIg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_AtIeZI8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_hguf8IVTEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AtIeZY8oEeq5HrfdV5ATIg" points="[1610, 530, -643984, -643984]$[1610, 433, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtIeZo8oEeq5HrfdV5ATIg" id="(0.46153846153846156,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtIeZ48oEeq5HrfdV5ATIg" id="(0.5687203791469194,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_AtJFc48oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_AtMI0I8oEeq5HrfdV5ATIg" target="_AtJseo8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtJFdI8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_AtJFdY8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_AtJFdo8oEeq5HrfdV5ATIg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_AtJFd48oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_2P_c8IVWEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AtJFeI8oEeq5HrfdV5ATIg" points="[50, 310, -643984, -643984]$[130, 273, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtJFeY8oEeq5HrfdV5ATIg" id="(0.6024096385542169,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtJFeo8oEeq5HrfdV5ATIg" id="(0.41450777202072536,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_AtJFe48oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_AtKTgI8oEeq5HrfdV5ATIg" target="_AtGCII8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtJFfI8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_AtJFfY8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_AtJFfo8oEeq5HrfdV5ATIg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_AtJFf48oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_8DbikIVTEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AtJFgI8oEeq5HrfdV5ATIg" points="[1150, 530, -643984, -643984]$[1150, 293, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtJFgY8oEeq5HrfdV5ATIg" id="(0.5084745762711864,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtJFgo8oEeq5HrfdV5ATIg" id="(0.5076142131979695,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_AtJsco8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_AtIeUI8oEeq5HrfdV5ATIg" target="_AtDl0I8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtJsc48oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_AtJsdI8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_AtJsdY8oEeq5HrfdV5ATIg" x="128" y="114"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_AtJsdo8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_dGXikIVVEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AtJsd48oEeq5HrfdV5ATIg" points="[350, 610, -643984, -643984]$[350, 551, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtJseI8oEeq5HrfdV5ATIg" id="(0.8,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtJseY8oEeq5HrfdV5ATIg" id="(0.11049723756906077,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_AtKTkI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_As9fPI8oEeq5HrfdV5ATIg" target="_AtBwqI8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtKTkY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_OG6i4I8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_AtKTko8oEeq5HrfdV5ATIg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_AtKTk48oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_2DdHsIVUEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AtKTlI8oEeq5HrfdV5ATIg" points="[-110, 630, -643984, -643984]$[-170, 553, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtKTlY8oEeq5HrfdV5ATIg" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtKTlo8oEeq5HrfdV5ATIg" id="(0.7734806629834254,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_AtLhsI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_AtAih48oEeq5HrfdV5ATIg" target="_As84II8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtLhsY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_AtLhso8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_AtLhs48oEeq5HrfdV5ATIg" x="67" y="98"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_AtLhtI8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_e4Tk0IVWEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AtLhtY8oEeq5HrfdV5ATIg" points="[390, 1110, -643984, -643984]$[410, 1073, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtLhto8oEeq5HrfdV5ATIg" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtLht48oEeq5HrfdV5ATIg" id="(0.36363636363636365,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_AtLhuI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_AtKTl48oEeq5HrfdV5ATIg" target="_AtBwqI8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtLhuY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_OEwmwI8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_AtLhuo8oEeq5HrfdV5ATIg" x="-1" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_AtLhu48oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_V3zYMIVXEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AtLhvI8oEeq5HrfdV5ATIg" points="[50, 630, -643984, -643984]$[-129, 510, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtLhvY8oEeq5HrfdV5ATIg" id="(0.31413612565445026,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtLhvo8oEeq5HrfdV5ATIg" id="(1.0,0.5825242718446602)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_AtMIsI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_As84II8oEeq5HrfdV5ATIg" target="_AtJFYI8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtMIsY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_AtMIso8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_AtMIs48oEeq5HrfdV5ATIg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_AtMItI8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_f8tBEIVWEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AtMItY8oEeq5HrfdV5ATIg" points="[410, 970, -643984, -643984]$[310, 911, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtMIto8oEeq5HrfdV5ATIg" id="(0.36363636363636365,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtMIt48oEeq5HrfdV5ATIg" id="(0.7453416149068323,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_AtMIuI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_AtJseo8oEeq5HrfdV5ATIg" target="_AtGpII8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtMIuY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_AtMIuo8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_AtMIu48oEeq5HrfdV5ATIg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_AtMIvI8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_DTFDUIVYEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AtMIvY8oEeq5HrfdV5ATIg" points="[170, 170, -643984, -643984]$[510, 130, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtMIvo8oEeq5HrfdV5ATIg" id="(0.6217616580310881,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtMIv48oEeq5HrfdV5ATIg" id="(0.4,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_AtMvzY8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_AtHQQY8oEeq5HrfdV5ATIg" target="_As84II8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_AtMvzo8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_AtMvz48oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_AtMv0I8oEeq5HrfdV5ATIg" x="8" y="135"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_AtMv0Y8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_fQk64IVWEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_AtMv0o8oEeq5HrfdV5ATIg" points="[550, 1110, -643984, -643984]$[510, 1073, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtMv048oEeq5HrfdV5ATIg" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_AtMv1I8oEeq5HrfdV5ATIg" id="(0.8181818181818182,1.0)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_dNXaEI8nEeq5HrfdV5ATIg" type="PapyrusUMLProfileDiagram" name="Padding_layers" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_GBLx6Y8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_GBLx6o8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GBLx648oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_GBLx7I8oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_UZswkIVZEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_GBLx7Y8oEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GBLx7o8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GBLx748oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GBLx8I8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBLx8Y8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GBLx8o8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GBLx848oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GBLx9I8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GBLx9Y8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBLx9o8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_w6iwUIVYEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBLx-o8oEeq5HrfdV5ATIg" x="620" y="80"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_GBLyA48oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_GBLyBI8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GBLyBY8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GBLyBo8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GBLyB48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GBLyCI8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBLyCY8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GBLyCo8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GBLyC48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GBLyDI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GBLyDY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBLyDo8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_mNvZ8IVZEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBLyEo8oEeq5HrfdV5ATIg" x="960" y="300"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_GBLyFI8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_GBLyFY8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GBLyFo8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GBLyF48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GBLyGI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GBLyGY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBLyGo8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GBLyG48oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GBLyHI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GBLyHY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GBLyHo8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBLyH48oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_aphv4IVZEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBLyI48oEeq5HrfdV5ATIg" x="260" y="300"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_GBMY8Y8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_GBMY8o8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GBMY848oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GBMY9I8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GBMY9Y8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GBMY9o8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBMY948oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GBMY-I8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GBMY-Y8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GBMY-o8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GBMY-48oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBMY_I8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_sNFGMIVZEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBMZAI8oEeq5HrfdV5ATIg" x="1220" y="300"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_GBMZAY8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_GBMZAo8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GBMZA48oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GBMZBI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GBMZBY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GBMZBo8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBMZB48oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GBMZCI8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GBMZCY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GBMZCo8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GBMZC48oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBMZDI8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_gxtPEIVZEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBMZEI8oEeq5HrfdV5ATIg" x="680" y="300"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_GBMZEY8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_GBMZEo8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GBMZE48oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GBMZFI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GBMZFY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GBMZFo8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBMZF48oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GBMZGI8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GBMZGY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GBMZGo8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GBMZG48oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBMZHI8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_okP-UIVZEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBMZII8oEeq5HrfdV5ATIg" x="1080" y="300"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_GBMZIY8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_GBMZIo8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GBMZI48oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GBMZJI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GBMZJY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GBMZJo8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBMZJ48oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GBMZKI8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GBMZKY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GBMZKo8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GBMZK48oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBMZLI8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_kjrr4IVZEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBMZMI8oEeq5HrfdV5ATIg" x="820" y="300"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_GBMZMY8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_GBMZMo8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GBMZM48oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GBMZNI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GBMZNY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GBMZNo8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBMZN48oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GBMZOI8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GBMZOY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GBMZOo8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GBMZO48oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBMZPI8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_YlZU8IVZEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBMZQI8oEeq5HrfdV5ATIg" x="120" y="300"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_GBMZSY8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_GBMZSo8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GBMZS48oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GBMZTI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GBMZTY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GBMZTo8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBMZT48oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GBMZUI8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GBMZUY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GBMZUo8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GBMZU48oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBMZVI8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_cIwG8IVZEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBMZWI8oEeq5HrfdV5ATIg" x="400" y="300"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_GBNAAI8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_GBNAAY8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GBNAAo8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GBNAA48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GBNABI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GBNABY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBNABo8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GBNAB48oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GBNACI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GBNACY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GBNACo8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBNAC48oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_fdB7IIVZEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GBNAD48oEeq5HrfdV5ATIg" x="540" y="300"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_dNXaEY8nEeq5HrfdV5ATIg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_dNXaEo8nEeq5HrfdV5ATIg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_dNXaE48nEeq5HrfdV5ATIg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    </styles>
+    <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_8IfQ0K8YEeqhVOlV64dXmA" name="css_stylesheets" eObjectListValue="_mci3oJm1Eeq8nv7tV9lOqQ"/>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    <edges xmi:type="notation:Connector" xmi:id="_GBLK0Y8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_GBMZIY8oEeq5HrfdV5ATIg" target="_GBLx6Y8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_GBLK0o8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GBLK048oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_GBLK1I8oEeq5HrfdV5ATIg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_GBLK1Y8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_5Tm3kIVZEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GBLK1o8oEeq5HrfdV5ATIg" points="[870, 290, -643984, -643984]$[690, 173, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBLK148oEeq5HrfdV5ATIg" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBLK2I8oEeq5HrfdV5ATIg" id="(0.54421768707483,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_GBLx4Y8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_GBMZMY8oEeq5HrfdV5ATIg" target="_GBLx6Y8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_GBLx4o8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GBLx448oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_GBLx5I8oEeq5HrfdV5ATIg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_GBLx5Y8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_zJF2EIVZEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GBLx5o8oEeq5HrfdV5ATIg" points="[150, 290, -643984, -643984]$[630, 173, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBLx548oEeq5HrfdV5ATIg" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBLx6I8oEeq5HrfdV5ATIg" id="(0.1360544217687075,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_GBLx-48oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_GBMZAY8oEeq5HrfdV5ATIg" target="_GBLx6Y8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_GBLx_I8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GBLx_Y8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_GBLx_o8oEeq5HrfdV5ATIg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_GBLx_48oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_4uA3MIVZEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GBLyAI8oEeq5HrfdV5ATIg" points="[730, 290, -643984, -643984]$[650, 173, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBLyAY8oEeq5HrfdV5ATIg" id="(0.5714285714285714,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBLyAo8oEeq5HrfdV5ATIg" id="(0.272108843537415,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_GBLyJI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_GBLyFI8oEeq5HrfdV5ATIg" target="_GBLx6Y8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_GBLyJY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GBLyJo8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_GBLyJ48oEeq5HrfdV5ATIg" x="-1" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_GBLyKI8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_0IHqIIVZEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GBLyKY8oEeq5HrfdV5ATIg" points="[310, 290, -643984, -643984]$[630, 173, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBLyKo8oEeq5HrfdV5ATIg" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBLyK48oEeq5HrfdV5ATIg" id="(0.1360544217687075,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_GBMZQY8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_GBLyA48oEeq5HrfdV5ATIg" target="_GBLx6Y8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_GBMZQo8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GBMZQ48oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_GBMZRI8oEeq5HrfdV5ATIg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_GBMZRY8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_6g_QsIVZEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GBMZRo8oEeq5HrfdV5ATIg" points="[1010, 290, -643984, -643984]$[730, 173, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBMZR48oEeq5HrfdV5ATIg" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBMZSI8oEeq5HrfdV5ATIg" id="(0.8163265306122449,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_GBNAEI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_GBMY8Y8oEeq5HrfdV5ATIg" target="_GBLx6Y8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_GBNAEY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GBNAEo8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_GBNAE48oEeq5HrfdV5ATIg" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_GBNAFI8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_7vcA0IVZEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GBNAFY8oEeq5HrfdV5ATIg" points="[1270, 290, -643984, -643984]$[730, 173, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBNAFo8oEeq5HrfdV5ATIg" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBNAF48oEeq5HrfdV5ATIg" id="(0.8163265306122449,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_GBNAGI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_GBNAAI8oEeq5HrfdV5ATIg" target="_GBLx6Y8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_GBNAGY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GBNAGo8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_GBNAG48oEeq5HrfdV5ATIg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_GBNAHI8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_3Rpm4IVZEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GBNAHY8oEeq5HrfdV5ATIg" points="[590, 290, -643984, -643984]$[650, 173, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBNAHo8oEeq5HrfdV5ATIg" id="(0.5714285714285714,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBNAH48oEeq5HrfdV5ATIg" id="(0.272108843537415,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_GBNAII8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_GBMZSY8oEeq5HrfdV5ATIg" target="_GBLx6Y8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_GBNAIY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GBNAIo8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_GBNAI48oEeq5HrfdV5ATIg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_GBNAJI8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_2srRkIVZEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GBNAJY8oEeq5HrfdV5ATIg" points="[450, 290, -643984, -643984]$[650, 173, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBNAJo8oEeq5HrfdV5ATIg" id="(0.5714285714285714,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBNAJ48oEeq5HrfdV5ATIg" id="(0.272108843537415,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_GBNAKI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_GBMZEY8oEeq5HrfdV5ATIg" target="_GBLx6Y8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_GBNAKY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GBNAKo8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_GBNAK48oEeq5HrfdV5ATIg" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_GBNALI8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_7KBmoIVZEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_GBNALY8oEeq5HrfdV5ATIg" points="[1130, 290, -643984, -643984]$[730, 173, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBNALo8oEeq5HrfdV5ATIg" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_GBNAL48oEeq5HrfdV5ATIg" id="(0.8163265306122449,1.0)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_qs6IYI8nEeq5HrfdV5ATIg" type="PapyrusUMLProfileDiagram" name="Non-linear_activations_(weighted sum, nonlinearity)" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_dny20I8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dny20Y8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dny20o8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_dny2048oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_vrowYIVcEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_dny21I8oEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dny21Y8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dny21o8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dny2148oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dny22I8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dny22Y8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dny22o8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dny2248oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dny23I8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dny23Y8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_uYqFkIVcEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dny24Y8oEeq5HrfdV5ATIg" x="980" y="500"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_dny24o8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dny2448oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dny25I8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_dny25Y8oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_Ki9qEIVbEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_dny25o8oEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dny2548oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dny26I8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dny26Y8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dny26o8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dny2648oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dny27I8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dny27Y8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dny27o8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dny2748oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_Im3JwIVbEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dny2848oEeq5HrfdV5ATIg" x="700" y="320"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_dnzd6I8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dnzd6Y8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dnzd6o8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dnzd648oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dnzd7I8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dnzd7Y8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dnzd7o8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dnzd748oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dnzd8I8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dnzd8Y8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dnzd8o8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dnzd848oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_-FB30IVcEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dnzd948oEeq5HrfdV5ATIg" x="2080" y="340"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_dnzd-I8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dnzd-Y8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dnzd-o8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_dnzd-48oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_MoLDEIVbEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_dnzd_I8oEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dnzd_Y8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dnzd_o8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dnzd_48oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dnzeAI8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dnzeAY8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dnzeAo8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dnzeA48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dnzeBI8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn0E8I8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_FFiYEIVbEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn0E9I8oEeq5HrfdV5ATIg" x="20" y="500"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_dn0E_Y8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn0E_o8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn0E_48oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_dn0FAI8oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_QsGykIVbEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_dn0FAY8oEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn0FAo8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn0FA48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn0FBI8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn0FBY8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn0FBo8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn0FB48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn0FCI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn0FCY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn0FCo8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_O0zSsIVbEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn0FDo8oEeq5HrfdV5ATIg" x="1660" y="320"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_dn0FFo8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn0FF48oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn0FGI8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn0sAI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn0sAY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn0sAo8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn0sA48oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn0sBI8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn0sBY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn0sBo8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn0sB48oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn0sCI8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_AwFawIVbEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn0sDI8oEeq5HrfdV5ATIg" x="1560" y="40"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_dn0sFI8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn0sFY8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn0sFo8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn0sF48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn0sGI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn0sGY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn0sGo8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn0sG48oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn0sHI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn0sHY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn0sHo8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn0sH48oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_Tr5SkIVdEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn0sI48oEeq5HrfdV5ATIg" x="1640" y="500"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_dn0sK48oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn0sLI8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn0sLY8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn0sLo8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn0sL48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn0sMI8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn0sMY8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn0sMo8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn0sM48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn0sNI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn0sNY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn0sNo8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_PQkzQIVcEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn0sOo8oEeq5HrfdV5ATIg" x="1200" y="500"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_dn1TII8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn1TIY8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn1TIo8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn1TI48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn1TJI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn1TJY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn1TJo8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn1TJ48oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn1TKI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn1TKY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn1TKo8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn1TK48oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_kIQXUIVdEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn1TL48oEeq5HrfdV5ATIg" x="3080" y="340"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_dn2hMI8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn2hMY8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn2hMo8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_dn2hM48oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_pyKbkIVcEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_dn2hNI8oEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_dn2hNY8oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_qj-TAIVcEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_dn2hNo8oEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn2hN48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn2hOI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn2hOY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn2hOo8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn2hO48oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn2hPI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn2hPY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn2hPo8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn2hP48oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_oPGGUIVcEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn2hQ48oEeq5HrfdV5ATIg" x="480" y="500"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_dn2hRI8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn2hRY8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn2hRo8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn2hR48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn2hSI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn2hSY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn2hSo8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn2hS48oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn2hTI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn2hTY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn2hTo8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn2hT48oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_Q1o3IIVdEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn2hU48oEeq5HrfdV5ATIg" x="1774" y="497"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_dn3IQI8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn3IQY8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn3IQo8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_dn3IQ48oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_FZhZIIVdEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_dn3IRI8oEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_dn3IRY8oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_KHN3UIVdEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_dn3IRo8oEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn3IR48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn3ISI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn3ISY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn3ISo8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn3IS48oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn3ITI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn3ITY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn3ITo8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn3IT48oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_AXPyEIVdEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn3IU48oEeq5HrfdV5ATIg" x="1880" y="340"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_dn3vXo8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn3vX48oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn3vYI8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn3vYY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn3vYo8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn3vY48oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn3vZI8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn3vZY8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn3vZo8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn3vZ48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn3vaI8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn3vaY8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_ef3LcIVdEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn3vbY8oEeq5HrfdV5ATIg" x="3220" y="340"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_dn3vbo8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn3vb48oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn3vcI8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_dn3vcY8oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_H7n-8IVcEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_dn3vco8oEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_dn3vc48oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_J_NnUIVcEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_dn3vdI8oEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn3vdY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn3vdo8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn3vd48oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn3veI8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn3veY8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn3veo8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn3ve48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn3vfI8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn3vfY8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_FyhkcIVcEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn3vgY8oEeq5HrfdV5ATIg" x="2680" y="340"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_dn3vg48oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn3vhI8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn3vhY8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn3vho8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn3vh48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn3viI8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn3viY8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn3vio8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn3vi48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn3vjI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn3vjY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn3vjo8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_T9yJQIVcEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn3vko8oEeq5HrfdV5ATIg" x="1440" y="500"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_dn4WZ48oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn4WaI8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn4WaY8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_dn4Wao8oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_6bNcAIVdEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_dn4Wa48oEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_dn4WbI8oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_7aGGIIVdEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_dn4WbY8oEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn4Wbo8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn4Wb48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn4WcI8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn4WcY8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn4Wco8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn4Wc48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn4WdI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn4WdY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn4Wdo8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_4wdxcIVdEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn4Weo8oEeq5HrfdV5ATIg" x="720" y="500"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_dn4Wg48oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn4WhI8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn4WhY8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn4Who8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn4Wh48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn4WiI8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn4WiY8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn4Wio8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn4Wi48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn4WjI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn4WjY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn4Wjo8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#__HL4YIVcEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn4Wko8oEeq5HrfdV5ATIg" x="2200" y="340"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_dn49d48oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn49eI8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn49eY8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn49eo8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn49e48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn49fI8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn49fY8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn49fo8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn49f48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn49gI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn49gY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn49go8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_Q694gIVcEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn49ho8oEeq5HrfdV5ATIg" x="1320" y="500"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_dn49iI8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn49iY8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn49io8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_dn49i48oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_oCRnwIVbEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_dn49jI8oEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_dn49jY8oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_pXDCUIVbEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_dn49jo8oEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_dn49j48oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_qHZhMIVbEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_dn49kI8oEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_dn49kY8oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_qxdK0IVbEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_dn49ko8oEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_dn49k48oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_rp_8YIVbEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_dn49lI8oEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_dn49lY8oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_uscZsIVbEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_dn49lo8oEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_dn49l48oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_wd6XUIVbEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_dn49mI8oEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_dn49mY8oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_w_bI8IVbEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_dn49mo8oEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn49m48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn49nI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn49nY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn49no8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn49n48oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn49oI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn49oY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn49oo8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn49o48oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_mNXUkIVbEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn49p48oEeq5HrfdV5ATIg" x="2439" y="343"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_dn5kiI8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn5kiY8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn5kio8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn5ki48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn5kjI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn5kjY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn5kjo8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn5kj48oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn5kkI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn5kkY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn5kko8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn5kk48oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_hnumMIVbEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn5kl48oEeq5HrfdV5ATIg" x="2320" y="340"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_dn5kmI8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn5kmY8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn5kmo8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_dn5km48oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_VlPEsIVbEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_dn5knI8oEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn5knY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn5kno8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn5kn48oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn5koI8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn5koY8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn5koo8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn5ko48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn5kpI8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn5kpY8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_T1MDYIVbEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn5kqY8oEeq5HrfdV5ATIg" x="220" y="500"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_dn5kqo8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn5kq48oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn5krI8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn5krY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn5kro8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn5kr48oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn5ksI8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_dn5ksY8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_dn5kso8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_dn5ks48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_dn5ktI8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn5ktY8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_dgIz0IVdEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dn5kuY8oEeq5HrfdV5ATIg" x="2940" y="340"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_ymR5wJa5Eeq1-Ze45jZMTg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_ymWLMJa5Eeq1-Ze45jZMTg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ymWLMZa5Eeq1-Ze45jZMTg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_3IDb0Ja5Eeq1-Ze45jZMTg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_3HW4QJa5Eeq1-Ze45jZMTg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_3IDb0Za5Eeq1-Ze45jZMTg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_62CJcJa5Eeq1-Ze45jZMTg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_60q3gJa5Eeq1-Ze45jZMTg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_62CJcZa5Eeq1-Ze45jZMTg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ymWLMpa5Eeq1-Ze45jZMTg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ymWLM5a5Eeq1-Ze45jZMTg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ymWLNJa5Eeq1-Ze45jZMTg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ymWLNZa5Eeq1-Ze45jZMTg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ymWLNpa5Eeq1-Ze45jZMTg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ymWLN5a5Eeq1-Ze45jZMTg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ymWLOJa5Eeq1-Ze45jZMTg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ymWLOZa5Eeq1-Ze45jZMTg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ymWLOpa5Eeq1-Ze45jZMTg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_ymNBQJa5Eeq1-Ze45jZMTg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ymR5wZa5Eeq1-Ze45jZMTg" x="-240" y="500"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_qs6IYY8nEeq5HrfdV5ATIg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_qs6IYo8nEeq5HrfdV5ATIg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_qs6IY48nEeq5HrfdV5ATIg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    </styles>
+    <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_9hsfcK8YEeqhVOlV64dXmA" name="css_stylesheets" eObjectListValue="_mci3oJm1Eeq8nv7tV9lOqQ"/>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    <edges xmi:type="notation:Connector" xmi:id="_dnxosI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_dn4WZ48oEeq5HrfdV5ATIg" target="_dny24o8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dnxosY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_dnyPwI8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dnyPwY8oEeq5HrfdV5ATIg" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_dnyPwo8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_8qf-EIVdEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dnyPw48oEeq5HrfdV5ATIg" points="[810, 490, -643984, -643984]$[870, 413, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dnyPxI8oEeq5HrfdV5ATIg" id="(0.5347593582887701,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dnyPxY8oEeq5HrfdV5ATIg" id="(0.5980066445182725,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_dnzd4I8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_dn4Wg48oEeq5HrfdV5ATIg" target="_dn0FFo8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dnzd4Y8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_lzyA0I8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dnzd4o8oEeq5HrfdV5ATIg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_dnzd448oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_heXHcIVeEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dnzd5I8oEeq5HrfdV5ATIg" points="[2230, 330, -643984, -643984]$[1750, 130, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dnzd5Y8oEeq5HrfdV5ATIg" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dnzd5o8oEeq5HrfdV5ATIg" id="(0.6920415224913494,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_dn0E9Y8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_dn2hRI8oEeq5HrfdV5ATIg" target="_dn0E_Y8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn0E9o8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_dn0E948oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dn0E-I8oEeq5HrfdV5ATIg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_dn0E-Y8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_WoPu8IVdEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dn0E-o8oEeq5HrfdV5ATIg" points="[1810, 487, -643984, -643984]$[1750, 413, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn0E-48oEeq5HrfdV5ATIg" id="(0.46,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn0E_I8oEeq5HrfdV5ATIg" id="(0.5847953216374269,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_dn0FD48oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_dnzd6I8oEeq5HrfdV5ATIg" target="_dn0FFo8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn0FEI8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_lzGrYI8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dn0FEY8oEeq5HrfdV5ATIg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_dn0FEo8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_SfSgEIVeEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dn0FE48oEeq5HrfdV5ATIg" points="[2110, 330, -643984, -643984]$[1650, 130, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn0FFI8oEeq5HrfdV5ATIg" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn0FFY8oEeq5HrfdV5ATIg" id="(0.3460207612456747,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_dn0sDY8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_dn1TII8oEeq5HrfdV5ATIg" target="_dn0FFo8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn0sDo8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_l1zaEI8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dn0sD48oEeq5HrfdV5ATIg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_dn0sEI8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_dbS6oIVeEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dn0sEY8oEeq5HrfdV5ATIg" points="[3110, 330, -643984, -643984]$[1810, 130, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn0sEo8oEeq5HrfdV5ATIg" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn0sE48oEeq5HrfdV5ATIg" id="(0.8996539792387543,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_dn0sJI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_dn49iI8oEeq5HrfdV5ATIg" target="_dn0FFo8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn0sJY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_l0J0QI8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dn0sJo8oEeq5HrfdV5ATIg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_dn0sJ48oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_gMwVoIVeEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dn0sKI8oEeq5HrfdV5ATIg" points="[2510, 333, -643984, -643984]$[1790, 130, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn0sKY8oEeq5HrfdV5ATIg" id="(0.38571428571428573,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn0sKo8oEeq5HrfdV5ATIg" id="(0.8304498269896193,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_dn1TEI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_dn0sFI8oEeq5HrfdV5ATIg" target="_dn0E_Y8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn1TEY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_dn1TEo8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dn1TE48oEeq5HrfdV5ATIg" x="1" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_dn1TFI8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_WKteYIVdEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dn1TFY8oEeq5HrfdV5ATIg" points="[1670, 490, -643984, -643984]$[1710, 413, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn1TFo8oEeq5HrfdV5ATIg" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn1TF48oEeq5HrfdV5ATIg" id="(0.3508771929824561,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_dn1TGI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_dn0E_Y8oEeq5HrfdV5ATIg" target="_dn0FFo8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn1TGY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_l0hAoI8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dn1TGo8oEeq5HrfdV5ATIg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_dn1TG48oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_Kab40IVeEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dn1THI8oEeq5HrfdV5ATIg" points="[1730, 310, -643984, -643984]$[1590, 130, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn1THY8oEeq5HrfdV5ATIg" id="(0.4678362573099415,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn1THo8oEeq5HrfdV5ATIg" id="(0.1384083044982699,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_dn1TMI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_dn49d48oEeq5HrfdV5ATIg" target="_dny24o8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn1TMY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_dn1TMo8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dn1TM48oEeq5HrfdV5ATIg" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_dn1TNI8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_XLnXMIVcEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dn1TNY8oEeq5HrfdV5ATIg" points="[1250, 490, -643984, -643984]$[950, 413, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn1TNo8oEeq5HrfdV5ATIg" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn1TN48oEeq5HrfdV5ATIg" id="(0.8637873754152824,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_dn16II8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_dnzd-I8oEeq5HrfdV5ATIg" target="_dny24o8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn16IY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_dn16Io8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dn16I48oEeq5HrfdV5ATIg" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_dn16JI8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_ckA0sIVbEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dn16JY8oEeq5HrfdV5ATIg" points="[170, 490, -643984, -643984]$[230, 413, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn16Jo8oEeq5HrfdV5ATIg" id="(0.6024096385542169,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn16J48oEeq5HrfdV5ATIg" id="(0.0664451827242525,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_dn16KI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_dn5kqo8oEeq5HrfdV5ATIg" target="_dn0FFo8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn16KY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_l2mEQI8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dn16Ko8oEeq5HrfdV5ATIg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_dn16K48oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_esL6wIVeEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dn16LI8oEeq5HrfdV5ATIg" points="[2970, 330, -643984, -643984]$[1810, 130, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn16LY8oEeq5HrfdV5ATIg" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn16Lo8oEeq5HrfdV5ATIg" id="(0.8996539792387543,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_dn16L48oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_dny24o8oEeq5HrfdV5ATIg" target="_dn0FFo8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn16MI8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_dn16MY8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dn16Mo8oEeq5HrfdV5ATIg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_dn16M48oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_dfBEYIVbEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dn16NI8oEeq5HrfdV5ATIg" points="[310, 310, -643984, -643984]$[390, 270, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn16NY8oEeq5HrfdV5ATIg" id="(0.5980066445182725,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn16No8oEeq5HrfdV5ATIg" id="(0.0,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_dn16N48oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_dny20I8oEeq5HrfdV5ATIg" target="_dny24o8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn16OI8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_dn16OY8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dn16Oo8oEeq5HrfdV5ATIg" x="-1" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_dn16O48oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_ymuBcIVcEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dn16PI8oEeq5HrfdV5ATIg" points="[1070, 490, -643984, -643984]$[910, 413, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn16PY8oEeq5HrfdV5ATIg" id="(0.6024096385542169,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn16Po8oEeq5HrfdV5ATIg" id="(0.7308970099667774,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_dn16P48oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_dn5kmI8oEeq5HrfdV5ATIg" target="_dny24o8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn16QI8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_dn16QY8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dn16Qo8oEeq5HrfdV5ATIg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_dn16Q48oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_dEj9AIVbEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dn16RI8oEeq5HrfdV5ATIg" points="[410, 490, -643984, -643984]$[370, 413, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn16RY8oEeq5HrfdV5ATIg" id="(0.18604651162790697,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn16Ro8oEeq5HrfdV5ATIg" id="(0.39867109634551495,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_dn2hVY8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_dn3vXo8oEeq5HrfdV5ATIg" target="_dn0FFo8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn2hVo8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_l2MboI8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dn2hV48oEeq5HrfdV5ATIg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_dn2hWI8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_bY_rsIVeEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dn2hWY8oEeq5HrfdV5ATIg" points="[3270, 330, -643984, -643984]$[1810, 130, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn2hWo8oEeq5HrfdV5ATIg" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn2hW48oEeq5HrfdV5ATIg" id="(0.8996539792387543,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_dn3IVI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_dn2hMI8oEeq5HrfdV5ATIg" target="_dny24o8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn3vUI8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_dn3vUY8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dn3vUo8oEeq5HrfdV5ATIg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_dn3vU48oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_yH-P8IVcEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dn3vVI8oEeq5HrfdV5ATIg" points="[570, 490, -643984, -643984]$[570, 413, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn3vVY8oEeq5HrfdV5ATIg" id="(0.5952380952380952,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn3vVo8oEeq5HrfdV5ATIg" id="(0.53156146179402,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_dn3vV48oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_dn3vbo8oEeq5HrfdV5ATIg" target="_dn0FFo8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn3vWI8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_lzee0I8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dn3vWY8oEeq5HrfdV5ATIg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_dn3vWo8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_fZNY0IVeEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dn3vW48oEeq5HrfdV5ATIg" points="[2750, 330, -643984, -643984]$[1810, 130, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn3vXI8oEeq5HrfdV5ATIg" id="(0.35398230088495575,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn3vXY8oEeq5HrfdV5ATIg" id="(0.8996539792387543,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_dn4WYI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_dn3IQI8oEeq5HrfdV5ATIg" target="_dn0FFo8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn4WYY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_l1WHEI8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dn4WYo8oEeq5HrfdV5ATIg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_dn4WY48oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_LicCsIVeEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dn4WZI8oEeq5HrfdV5ATIg" points="[1910, 330, -643984, -643984]$[1630, 130, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn4WZY8oEeq5HrfdV5ATIg" id="(0.21390374331550802,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn4WZo8oEeq5HrfdV5ATIg" id="(0.2768166089965398,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_dn4We48oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_dn0sK48oEeq5HrfdV5ATIg" target="_dny24o8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn4WfI8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_dn4WfY8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dn4Wfo8oEeq5HrfdV5ATIg" x="-1" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_dn4Wf48oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_WsaSsIVcEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dn4WgI8oEeq5HrfdV5ATIg" points="[1110, 490, -643984, -643984]$[950, 413, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn4WgY8oEeq5HrfdV5ATIg" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn4Wgo8oEeq5HrfdV5ATIg" id="(0.8637873754152824,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_dn49cI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_dn5kiI8oEeq5HrfdV5ATIg" target="_dn0FFo8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn49cY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_l06pQI8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dn49co8oEeq5HrfdV5ATIg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_dn49c48oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_g0PMYIVeEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dn49dI8oEeq5HrfdV5ATIg" points="[2350, 330, -643984, -643984]$[1770, 130, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn49dY8oEeq5HrfdV5ATIg" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn49do8oEeq5HrfdV5ATIg" id="(0.7612456747404844,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_dn5kgI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_dn3vg48oEeq5HrfdV5ATIg" target="_dny24o8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dn5kgY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_dn5kgo8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dn5kg48oEeq5HrfdV5ATIg" x="-37" y="65"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_dn5khI8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_X3PuIIVcEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dn5khY8oEeq5HrfdV5ATIg" points="[1330, 490, -643984, -643984]$[950, 413, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn5kho8oEeq5HrfdV5ATIg" id="(0.2,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dn5kh48oEeq5HrfdV5ATIg" id="(0.8637873754152824,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_CX7NkJa6Eeq1-Ze45jZMTg" type="Generalization_Edge" source="_ymR5wJa5Eeq1-Ze45jZMTg" target="_dny24o8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_CX70oJa6Eeq1-Ze45jZMTg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_CX70oZa6Eeq1-Ze45jZMTg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_CX7NkZa6Eeq1-Ze45jZMTg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_CXDD0Ja6Eeq1-Ze45jZMTg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CX7Nkpa6Eeq1-Ze45jZMTg" points="[-160, 500, -643984, -643984]$[700, 420, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CYzXUJa6Eeq1-Ze45jZMTg" id="(0.6106870229007634,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CYzXUZa6Eeq1-Ze45jZMTg" id="(0.0,0.970873786407767)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_yrnO4I8oEeq5HrfdV5ATIg" type="PapyrusUMLProfileDiagram" name="Non-linear_activations_(other)" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_1B_QeI8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_1B_QeY8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_1B_Qeo8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_1B_Qe48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_1B_QfI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_1B_QfY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1B_Qfo8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_1B_Qf48oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_1B_QgI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_1B_QgY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_1B_Qgo8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1B_Qg48oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_lbyw4IVfEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1B_Qh48oEeq5HrfdV5ATIg" x="-840" y="380"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_1B_QiI8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_1B_QiY8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_1B_Qio8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_1B_Qi48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_1B_QjI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_1B_QjY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1B_Qjo8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_1B_Qj48oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_1B_QkI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_1B_QkY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_1B_Qko8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1B_Qk48oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_qeP-IIVfEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1B_Ql48oEeq5HrfdV5ATIg" x="-600" y="380"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_1B_3cI8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_1B_3cY8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_1B_3co8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_1B_3c48oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_zzHbwIVfEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_1B_3dI8oEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_1B_3dY8oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_09lDwIVfEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_1B_3do8oEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_1B_3d48oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_1jP8oIVfEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_1B_3eI8oEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_1B_3eY8oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_2sVroIVfEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_1B_3eo8oEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_1B_3e48oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_3ZGrAIVfEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_1B_3fI8oEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_1B_3fY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_1B_3fo8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_1B_3f48oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1B_3gI8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_1B_3gY8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_1B_3go8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_1B_3g48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_1B_3hI8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1B_3hY8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_vpbpkIVfEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1B_3iY8oEeq5HrfdV5ATIg" x="-260" y="180"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_1B_3io8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_1B_3i48oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_1B_3jI8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_1B_3jY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_1B_3jo8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_1B_3j48oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1B_3kI8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_1B_3kY8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_1B_3ko8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_1B_3k48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_1B_3lI8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1B_3lY8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_nBjNwIVfEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1B_3mY8oEeq5HrfdV5ATIg" x="-720" y="380"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_1B_3oo8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_1B_3o48oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_1B_3pI8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_1B_3pY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_1B_3po8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_1B_3p48oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1B_3qI8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_1B_3qY8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_1B_3qo8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_1B_3q48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_1B_3rI8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1B_3rY8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_HyCdwIVfEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1B_3sY8oEeq5HrfdV5ATIg" x="-640"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_1CAeg48oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_1CAehI8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_1CAehY8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_1CAeho8oEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_f3_xIIVfEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_1CAeh48oEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_1CAeiI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_1CAeiY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_1CAeio8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1CAei48oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_1CAejI8oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_1CAejY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_1CAejo8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_1CAej48oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1CAekI8oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_en-TsIVfEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1CAelI8oEeq5HrfdV5ATIg" x="-740" y="180"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_1CBFkI8oEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_1CBFkY8oEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_1CBFko8oEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_1CBFk48oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_1CBFlI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_1CBFlY8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1CBFlo8oEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_1CBFl48oEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_1CBFmI8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_1CBFmY8oEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_1CBFmo8oEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1CBFm48oEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_n_v7YIVfEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1CBFn48oEeq5HrfdV5ATIg" x="-420" y="180"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_yrnO4Y8oEeq5HrfdV5ATIg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_yrnO4o8oEeq5HrfdV5ATIg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_yrnO448oEeq5HrfdV5ATIg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    </styles>
+    <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_-mK0MK8YEeqhVOlV64dXmA" name="css_stylesheets" eObjectListValue="_mci3oJm1Eeq8nv7tV9lOqQ"/>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    <edges xmi:type="notation:Connector" xmi:id="_1B_QYI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_1B_3cI8oEeq5HrfdV5ATIg" target="_1B_3oo8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_1B_QYY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_1B_QYo8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_1B_QY48oEeq5HrfdV5ATIg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_1B_QZI8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_8okZgIVfEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_1B_QZY8oEeq5HrfdV5ATIg" points="[-170, 170, -643984, -643984]$[-510, 90, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1B_QZo8oEeq5HrfdV5ATIg" id="(0.5154639175257731,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1B_QZ48oEeq5HrfdV5ATIg" id="(0.8092485549132948,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_1B_QaI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_1B_QeI8oEeq5HrfdV5ATIg" target="_1CAeg48oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_1B_QaY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_1B_Qao8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_1B_Qa48oEeq5HrfdV5ATIg" x="24" y="118"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_1B_QbI8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#__rKAwIVfEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_1B_QbY8oEeq5HrfdV5ATIg" points="[-790, 370, -643984, -643984]$[-710, 273, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1B_Qbo8oEeq5HrfdV5ATIg" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1B_Qb48oEeq5HrfdV5ATIg" id="(0.21621621621621623,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_1B_QcI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_1B_QiI8oEeq5HrfdV5ATIg" target="_1CAeg48oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_1B_QcY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_1B_Qco8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_1B_Qc48oEeq5HrfdV5ATIg" x="-1" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_1B_QdI8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_-m_OAIVfEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_1B_QdY8oEeq5HrfdV5ATIg" points="[-550, 370, -643984, -643984]$[-610, 273, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1B_Qdo8oEeq5HrfdV5ATIg" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1B_Qd48oEeq5HrfdV5ATIg" id="(0.7567567567567568,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_1B_QmI8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_1CBFkI8oEeq5HrfdV5ATIg" target="_1B_3oo8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_1B_QmY8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_1B_Qmo8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_1B_Qm48oEeq5HrfdV5ATIg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_1B_QnI8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_9EA_YIVfEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_1B_QnY8oEeq5HrfdV5ATIg" points="[-390, 170, -643984, -643984]$[-530, 90, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1B_Qno8oEeq5HrfdV5ATIg" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1B_Qn48oEeq5HrfdV5ATIg" id="(0.6936416184971098,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_1B_3mo8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_1B_3io8oEeq5HrfdV5ATIg" target="_1CAeg48oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_1B_3m48oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_1B_3nI8oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_1B_3nY8oEeq5HrfdV5ATIg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_1B_3no8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#__G9ukIVfEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_1B_3n48oEeq5HrfdV5ATIg" points="[-670, 370, -643984, -643984]$[-670, 273, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1B_3oI8oEeq5HrfdV5ATIg" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1B_3oY8oEeq5HrfdV5ATIg" id="(0.43243243243243246,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_1CAelY8oEeq5HrfdV5ATIg" type="Generalization_Edge" source="_1CAeg48oEeq5HrfdV5ATIg" target="_1B_3oo8oEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_1CAelo8oEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_1CAel48oEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_1CAemI8oEeq5HrfdV5ATIg" x="1" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_1CAemY8oEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_98A-YIVfEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_1CAemo8oEeq5HrfdV5ATIg" points="[-630, 170, -643984, -643984]$[-610, 90, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1CAem48oEeq5HrfdV5ATIg" id="(0.6486486486486487,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1CAenI8oEeq5HrfdV5ATIg" id="(0.23121387283236994,1.0)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_9sdGII8oEeq5HrfdV5ATIg" type="PapyrusUMLProfileDiagram" name="Normalization_layers" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_CqmbII8pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_CqmbIY8pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_CqmbIo8pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_CqmbI48pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_CqmbJI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_CqmbJY8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CqmbJo8pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_CqmbJ48pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_CqmbKI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_CqmbKY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_CqmbKo8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CqmbK48pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_GDAowIViEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CqmbL48pEeq5HrfdV5ATIg" x="780" y="-380"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_CqnCMY8pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_CqnCMo8pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_CqnCM48pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_CqnCNI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_CqnCNY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_CqnCNo8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CqnCN48pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_CqnCOI8pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_CqnCOY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_CqnCOo8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_CqnCO48pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CqnCPI8pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_ws_i4IVgEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CqnCQI8pEeq5HrfdV5ATIg" x="200" y="-1120"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_CqnCT48pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_CqnCUI8pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_CqnCUY8pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_CqnCUo8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_iVdAIIVhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_CqnCU48pEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_CqnCVI8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_ygFbsIVhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_CqnCVY8pEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_CqnCVo8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_2tKgIIVhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_CqnCV48pEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_CqnCWI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_CqnCWY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_CqnCWo8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CqnCW48pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_CqnCXI8pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_CqnCXY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_CqnCXo8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_CqnCX48pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CqnCYI8pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_fbbfAIVhEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CqnCZI8pEeq5HrfdV5ATIg" x="940" y="-600"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_CqnCZo8pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_CqnCZ48pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_CqnCaI8pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_CqnCaY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_CqnCao8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_CqnCa48pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CqnCbI8pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_CqnCbY8pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_CqnCbo8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_CqnCb48pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_CqnCcI8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CqnCcY8pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_ELXxsIViEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CqnCdY8pEeq5HrfdV5ATIg" x="640" y="-380"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_CqnpQI8pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_CqnpQY8pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_CqnpQo8pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_CqnpQ48pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_CqnpRI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_CqnpRY8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CqnpRo8pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_CqnpR48pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_CqnpSI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_CqnpSY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_CqnpSo8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CqnpS48pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_OF6vQIViEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CqnpT48pEeq5HrfdV5ATIg" x="1200" y="-380"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_CqnpUI8pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_CqnpUY8pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_CqnpUo8pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_CqnpU48pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_gvtxYIVhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_CqnpVI8pEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_CqnpVY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_CqnpVo8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_CqnpV48pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CqnpWI8pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_CqnpWY8pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_CqnpWo8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_CqnpW48pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_CqnpXI8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CqnpXY8pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_bf7SwIVhEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CqnpYY8pEeq5HrfdV5ATIg" x="320" y="-760"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_CqnpcI8pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_CqnpcY8pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Cqnpco8pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_Cqnpc48pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_Qt56oIVhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_CqnpdI8pEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_CqnpdY8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_RjEoEIVhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_Cqnpdo8pEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_Cqnpd48pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_SBd0QIVhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_CqnpeI8pEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_CqnpeY8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_SVdHQIVhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_Cqnpeo8pEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Cqnpe48pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_CqnpfI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_CqnpfY8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Cqnpfo8pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Cqnpf48pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_CqnpgI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_CqnpgY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Cqnpgo8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Cqnpg48pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_ILIBQIVhEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Cqnph48pEeq5HrfdV5ATIg" x="520" y="-960"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_CqoQUI8pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_CqoQUY8pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_CqoQUo8pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_CqoQU48pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_4_83kIVgEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_CqoQVI8pEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_CqoQVY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_CqoQVo8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_CqoQV48pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CqoQWI8pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_CqoQWY8pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_CqoQWo8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_CqoQW48pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_CqoQXI8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CqoQXY8pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_2ZKbgIVgEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CqoQYY8pEeq5HrfdV5ATIg" x="60" y="-940"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_CqoQbI8pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_CqoQbY8pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_CqoQbo8pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_CqoQb48pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_CqoQcI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_CqoQcY8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CqoQco8pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_CqoQc48pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_CqoQdI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_CqoQdY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_CqoQdo8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CqoQd48pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_RKVigIViEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CqoQe48pEeq5HrfdV5ATIg" x="1320" y="-380"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_CqoQi48pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_CqoQjI8pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_CqoQjY8pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_CqoQjo8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_mNNU0IVhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_CqoQj48pEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_CqoQkI8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_njZrsIVhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_CqoQkY8pEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_CqoQko8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_CqoQk48pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_CqoQlI8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CqoQlY8pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_CqoQlo8pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_CqoQl48pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_CqoQmI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_CqoQmY8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CqoQmo8pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_kVSw8IVhEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CqoQno8pEeq5HrfdV5ATIg" x="260" y="-600"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Cqo3Z48pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Cqo3aI8pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Cqo3aY8pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_Cqo3ao8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_KI-OAIVhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_Cqo3a48pEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_Cqo3bI8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_OsXgsIVhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_Cqo3bY8pEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Cqo3bo8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Cqo3b48pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Cqo3cI8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Cqo3cY8pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Cqo3co8pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Cqo3c48pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Cqo3dI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Cqo3dY8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Cqo3do8pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_GstigIVhEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Cqo3eo8pEeq5HrfdV5ATIg" y="-760"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Cqo3i48pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Cqo3jI8pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Cqo3jY8pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_Cqo3jo8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_K2rMEIViEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_Cqo3j48pEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Cqo3kI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Cqo3kY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Cqo3ko8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Cqo3k48pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Cqo3lI8pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Cqo3lY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Cqo3lo8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Cqo3l48pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Cqo3mI8pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_Ikef8IViEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Cqo3nI8pEeq5HrfdV5ATIg" x="940" y="-380"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Cqpefo8pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Cqpef48pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_CqpegI8pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_CqpegY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Cqpego8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Cqpeg48pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CqpehI8pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_CqpehY8pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Cqpeho8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Cqpeh48pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_CqpeiI8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CqpeiY8pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_BDZUIIViEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CqpejY8pEeq5HrfdV5ATIg" x="500" y="-380"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Cqpelo8pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Cqpel48pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_CqpemI8pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_CqpemY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Cqpemo8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Cqpem48pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CqpenI8pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_CqpenY8pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Cqpeno8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Cqpen48pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_CqpeoI8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CqpeoY8pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_SiGmsIViEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_CqpepY8pEeq5HrfdV5ATIg" x="1440" y="-380"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_9sdGIY8oEeq5HrfdV5ATIg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_9sdGIo8oEeq5HrfdV5ATIg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_9sdGI48oEeq5HrfdV5ATIg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    </styles>
+    <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_AF9zAK8ZEeqhVOlV64dXmA" name="css_stylesheets" eObjectListValue="_mci3oJm1Eeq8nv7tV9lOqQ"/>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    <edges xmi:type="notation:Connector" xmi:id="_CqnCQY8pEeq5HrfdV5ATIg" type="Generalization_Edge" source="_CqmbII8pEeq5HrfdV5ATIg" target="_CqnCT48pEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_CqnCQo8pEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_LHoR0I8pEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_CqnCQ48pEeq5HrfdV5ATIg" x="1" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_CqnCRI8pEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_ZlFhQIViEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CqnCRY8pEeq5HrfdV5ATIg" points="[810, -390, -643984, -643984]$[970, -475, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CqnCRo8pEeq5HrfdV5ATIg" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CqnCR48pEeq5HrfdV5ATIg" id="(0.1652892561983471,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_CqnCSI8pEeq5HrfdV5ATIg" type="Generalization_Edge" source="_CqoQbI8pEeq5HrfdV5ATIg" target="_CqnCT48pEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_CqnCSY8pEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_LIf0gI8pEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_CqnCSo8pEeq5HrfdV5ATIg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_CqnCS48pEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_a9amIIViEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CqnCTI8pEeq5HrfdV5ATIg" points="[1370, -390, -643984, -643984]$[1130, -475, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CqnCTY8pEeq5HrfdV5ATIg" id="(0.594059405940594,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CqnCTo8pEeq5HrfdV5ATIg" id="(0.8264462809917356,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_CqnpYo8pEeq5HrfdV5ATIg" type="Generalization_Edge" source="_CqnCZo8pEeq5HrfdV5ATIg" target="_CqnCT48pEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_CqnpY48pEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_LHbdgI8pEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_CqnpZI8pEeq5HrfdV5ATIg" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_CqnpZY8pEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_YkOhMIViEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CqnpZo8pEeq5HrfdV5ATIg" points="[670, -390, -643984, -643984]$[970, -475, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CqnpZ48pEeq5HrfdV5ATIg" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CqnpaI8pEeq5HrfdV5ATIg" id="(0.1652892561983471,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_CqnpaY8pEeq5HrfdV5ATIg" type="Generalization_Edge" source="_Cqpefo8pEeq5HrfdV5ATIg" target="_CqnCT48pEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Cqnpao8pEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_LHSTkI8pEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Cqnpa48pEeq5HrfdV5ATIg" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_CqnpbI8pEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_XsCU8IViEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CqnpbY8pEeq5HrfdV5ATIg" points="[510, -390, -643984, -643984]$[950, -475, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Cqnpbo8pEeq5HrfdV5ATIg" id="(0.2,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Cqnpb48pEeq5HrfdV5ATIg" id="(0.08264462809917356,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_CqoQZI8pEeq5HrfdV5ATIg" type="Generalization_Edge" source="_CqnCT48pEeq5HrfdV5ATIg" target="_CqnpUI8pEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_CqoQZY8pEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_CqoQZo8pEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_CqoQZ48pEeq5HrfdV5ATIg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_CqoQaI8pEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_67JjgIVhEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CqoQaY8pEeq5HrfdV5ATIg" points="[590, -610, -643984, -643984]$[450, -667, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CqoQao8pEeq5HrfdV5ATIg" id="(0.3305785123966942,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CqoQa48pEeq5HrfdV5ATIg" id="(0.8383233532934131,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_CqoQfI8pEeq5HrfdV5ATIg" type="Generalization_Edge" source="_CqoQUI8pEeq5HrfdV5ATIg" target="_CqnCMY8pEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_CqoQfY8pEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_LIz9kI8pEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_CqoQfo8pEeq5HrfdV5ATIg" x="1" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_CqoQf48pEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_UxrSEIVhEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CqoQgI8pEeq5HrfdV5ATIg" points="[170, -950, -643984, -643984]$[210, -1030, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CqoQgY8pEeq5HrfdV5ATIg" id="(0.7741935483870968,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CqoQgo8pEeq5HrfdV5ATIg" id="(0.16129032258064516,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_CqoQhI8pEeq5HrfdV5ATIg" type="Generalization_Edge" source="_Cqo3Z48pEeq5HrfdV5ATIg" target="_CqoQUI8pEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_CqoQhY8pEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_LJGRcI8pEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_CqoQho8pEeq5HrfdV5ATIg" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_CqoQh48pEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_WYnasIVhEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CqoQiI8pEeq5HrfdV5ATIg" points="[10, -770, -643984, -643984]$[70, -847, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CqoQiY8pEeq5HrfdV5ATIg" id="(0.08403361344537816,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CqoQio8pEeq5HrfdV5ATIg" id="(0.12903225806451613,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_Cqo3YI8pEeq5HrfdV5ATIg" type="Generalization_Edge" source="_CqnpUI8pEeq5HrfdV5ATIg" target="_CqoQUI8pEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Cqo3YY8pEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_LJw_0I8pEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Cqo3Yo8pEeq5HrfdV5ATIg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_Cqo3Y48pEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_sCPOgIVhEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Cqo3ZI8pEeq5HrfdV5ATIg" points="[330, -770, -643984, -643984]$[170, -847, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Cqo3ZY8pEeq5HrfdV5ATIg" id="(0.11976047904191617,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Cqo3Zo8pEeq5HrfdV5ATIg" id="(0.7741935483870968,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_Cqo3fY8pEeq5HrfdV5ATIg" type="Generalization_Edge" source="_Cqo3i48pEeq5HrfdV5ATIg" target="_CqnCT48pEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Cqo3fo8pEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_LH2UQI8pEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Cqo3f48pEeq5HrfdV5ATIg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_Cqo3gI8pEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_aLhPIIViEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Cqo3gY8pEeq5HrfdV5ATIg" points="[1050, -390, -643984, -643984]$[1050, -475, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Cqo3go8pEeq5HrfdV5ATIg" id="(0.5529953917050692,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Cqo3g48pEeq5HrfdV5ATIg" id="(0.49586776859504134,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_Cqo3hI8pEeq5HrfdV5ATIg" type="Generalization_Edge" source="_CqoQi48pEeq5HrfdV5ATIg" target="_CqnpUI8pEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Cqo3hY8pEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_LJcPsI8pEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Cqo3ho8pEeq5HrfdV5ATIg" x="1" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_Cqo3h48pEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_qWp2cIVhEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Cqo3iI8pEeq5HrfdV5ATIg" points="[410, -610, -643984, -643984]$[410, -667, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Cqo3iY8pEeq5HrfdV5ATIg" id="(0.2803738317757009,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Cqo3io8pEeq5HrfdV5ATIg" id="(0.11976047904191617,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_CqpecI8pEeq5HrfdV5ATIg" type="Generalization_Edge" source="_CqnpQI8pEeq5HrfdV5ATIg" target="_CqnCT48pEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_CqpecY8pEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_LIEWsI8pEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Cqpeco8pEeq5HrfdV5ATIg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_Cqpec48pEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_alo_UIViEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CqpedI8pEeq5HrfdV5ATIg" points="[1230, -390, -643984, -643984]$[1090, -475, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CqpedY8pEeq5HrfdV5ATIg" id="(0.39603960396039606,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Cqpedo8pEeq5HrfdV5ATIg" id="(0.6611570247933884,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_Cqped48pEeq5HrfdV5ATIg" type="Generalization_Edge" source="_Cqpelo8pEeq5HrfdV5ATIg" target="_CqnCT48pEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_CqpeeI8pEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_LHGtYI8pEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_CqpeeY8pEeq5HrfdV5ATIg" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_Cqpeeo8pEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_baXn4IViEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Cqpee48pEeq5HrfdV5ATIg" points="[1470, -390, -643984, -643984]$[1130, -475, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CqpefI8pEeq5HrfdV5ATIg" id="(0.39603960396039606,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CqpefY8pEeq5HrfdV5ATIg" id="(0.8264462809917356,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_Cqpejo8pEeq5HrfdV5ATIg" type="Generalization_Edge" source="_CqnpcI8pEeq5HrfdV5ATIg" target="_CqnCMY8pEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Cqpej48pEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_CqpekI8pEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_CqpekY8pEeq5HrfdV5ATIg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_Cqpeko8pEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_UQtTAIVhEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Cqpek48pEeq5HrfdV5ATIg" points="[450, -970, -643984, -643984]$[290, -1030, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CqpelI8pEeq5HrfdV5ATIg" id="(0.24096385542168675,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CqpelY8pEeq5HrfdV5ATIg" id="(0.8064516129032258,1.0)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_SKxkcI8pEeq5HrfdV5ATIg" type="PapyrusUMLProfileDiagram" name="Recurrent_layers" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_usfGEK8VEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_usfGEa8VEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_usfGEq8VEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_usfGE68VEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_AP36kIVkEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_usfGFK8VEeqhVOlV64dXmA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_usfGFa8VEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_usfGFq8VEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_usfGF68VEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_usfGGK8VEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_usfGGa8VEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_usfGGq8VEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_usfGG68VEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_usfGHK8VEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_usfGHa8VEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_-5MbgIVjEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_usfGIa8VEeqhVOlV64dXmA" x="460" y="220"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_ushiUK8VEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_ushiUa8VEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ushiUq8VEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ushiU68VEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ushiVK8VEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ushiVa8VEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ushiVq8VEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ushiV68VEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ushiWK8VEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ushiWa8VEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ushiWq8VEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ushiW68VEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_CfAEkIVkEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ushiX68VEeqhVOlV64dXmA" x="720" y="220"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_ushiYK8VEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_ushiYa8VEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ushiYq8VEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_ushiY68VEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_495hwIVjEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_ushiZK8VEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_ushiZa8VEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_6la5MIVjEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_ushiZq8VEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_ushiZ68VEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_7-lrkIVjEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_ushiaK8VEeqhVOlV64dXmA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ushiaa8VEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ushiaq8VEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ushia68VEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ushibK8VEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ushiba8VEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ushibq8VEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ushib68VEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ushicK8VEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ushica8VEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_tHLn4IViEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ushida8VEeqhVOlV64dXmA" x="420" y="20"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_ushidq8VEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_ushid68VEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ushieK8VEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_ushiea8VEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_iaV_0IVkEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_ushieq8VEeqhVOlV64dXmA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ushie68VEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ushifK8VEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ushifa8VEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ushifq8VEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ushif68VEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ushigK8VEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ushiga8VEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ushigq8VEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ushig68VEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_f3AgYIVkEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ushih68VEeqhVOlV64dXmA" x="50" y="530"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_usiJYK8VEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_usiJYa8VEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_usiJYq8VEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_usiJY68VEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_Mgv2UIVkEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_usiJZK8VEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_usiJZa8VEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_NmsKsIVkEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_usiJZq8VEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_usiJZ68VEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_bIpT0IVkEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_usiJaK8VEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_usiJaa8VEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_dH_VYIVkEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_usiJaq8VEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_usiJa68VEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_GM1kwKaAEeqIr7xwFiWQGQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_usiJbK8VEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_usiJba8VEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_M26QEKaAEeqIr7xwFiWQGQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_usiJbq8VEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_usiJb68VEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_OalCQKaAEeqIr7xwFiWQGQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_usiJcK8VEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_usiJca8VEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_PFb9IKaAEeqIr7xwFiWQGQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_usiJcq8VEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_usiJc68VEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_TQ4C0KaAEeqIr7xwFiWQGQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_usiJdK8VEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_usiJda8VEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_uo4gUKaBEeqIr7xwFiWQGQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_usiJdq8VEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_usiJd68VEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_zjmG0KaBEeqIr7xwFiWQGQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_usiJeK8VEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_usiJea8VEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_0y_SIKaBEeqIr7xwFiWQGQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_usiJeq8VEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_usiJe68VEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_7QlAoKaBEeqIr7xwFiWQGQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_usiJfK8VEeqhVOlV64dXmA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_usiJfa8VEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_usiJfq8VEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_usiJf68VEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_usiJgK8VEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_usiJga8VEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_usiJgq8VEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_usiJg68VEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_usiJhK8VEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_usiJha8VEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_w_eSoIVjEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_usiJia8VEeqhVOlV64dXmA" x="190" y="190"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_usjXgK8VEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_usjXga8VEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_usjXgq8VEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_usjXg68VEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_usjXhK8VEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_usjXha8VEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_usjXhq8VEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_usjXh68VEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_usjXiK8VEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_usjXia8VEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_usjXiq8VEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_usjXi68VEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_EdBQcIVkEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_usjXj68VEeqhVOlV64dXmA" x="860" y="220"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_usjXkK8VEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_usjXka8VEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_usjXkq8VEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_usjXk68VEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_usjXlK8VEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_usjXla8VEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_usjXlq8VEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_usjXl68VEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_usjXmK8VEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_usjXma8VEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_usjXmq8VEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_usjXm68VEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_kOLU8IVkEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_usjXn68VEeqhVOlV64dXmA" x="290" y="530"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_usjXoK8VEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_usjXoa8VEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_usjXoq8VEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_usjXo68VEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_usjXpK8VEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_usjXpa8VEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_usjXpq8VEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_usjXp68VEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_usjXqK8VEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_usjXqa8VEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_usjXqq8VEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_usjXq68VEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_l8ROcIVkEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_usjXr68VEeqhVOlV64dXmA" x="430" y="530"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_SKxkcY8pEeq5HrfdV5ATIg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_SKxkco8pEeq5HrfdV5ATIg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_SKxkc48pEeq5HrfdV5ATIg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    </styles>
+    <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_BUBhkK8ZEeqhVOlV64dXmA" name="css_stylesheets" eObjectListValue="_mci3oJm1Eeq8nv7tV9lOqQ"/>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    <edges xmi:type="notation:Connector" xmi:id="_usiJiq8VEeqhVOlV64dXmA" type="Generalization_Edge" source="_usjXoK8VEeqhVOlV64dXmA" target="_usiJYK8VEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_usiJi68VEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_usiJjK8VEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_usiJja8VEeqhVOlV64dXmA" x="-2" y="57"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_usiJjq8VEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_qv_cIIVkEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_usiJj68VEeqhVOlV64dXmA" points="[430, 410, -643984, -643984]$[330, 341, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_usiJkK8VEeqhVOlV64dXmA" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_usiJka8VEeqhVOlV64dXmA" id="(0.8264462809917356,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_usiJkq8VEeqhVOlV64dXmA" type="Generalization_Edge" source="_usjXkK8VEeqhVOlV64dXmA" target="_usiJYK8VEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_usiJk68VEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_usiJlK8VEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_usiJla8VEeqhVOlV64dXmA" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_usiJlq8VEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_p2PwsIVkEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_usiJl68VEeqhVOlV64dXmA" points="[310, 410, -643984, -643984]$[290, 341, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_usiJmK8VEeqhVOlV64dXmA" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_usiJma8VEeqhVOlV64dXmA" id="(0.5785123966942148,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_usiwcK8VEeqhVOlV64dXmA" type="Generalization_Edge" source="_ushiUK8VEeqhVOlV64dXmA" target="_ushiYK8VEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_usiwca8VEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_usiwcq8VEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_usiwc68VEeqhVOlV64dXmA" x="-2" y="57"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_usiwdK8VEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_sMLGQIVkEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_usiwda8VEeqhVOlV64dXmA" points="[730, 190, -643984, -643984]$[550, 125, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_usiwdq8VEeqhVOlV64dXmA" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_usiwd68VEeqhVOlV64dXmA" id="(0.8080808080808081,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_usiweK8VEeqhVOlV64dXmA" type="Generalization_Edge" source="_ushidq8VEeqhVOlV64dXmA" target="_usiJYK8VEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_usiwea8VEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_usiweq8VEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_usiwe68VEeqhVOlV64dXmA" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_usiwfK8VEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_pXFIcIVkEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_usiwfa8VEeqhVOlV64dXmA" points="[150, 410, -643984, -643984]$[230, 341, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_usiwfq8VEeqhVOlV64dXmA" id="(0.6976744186046512,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_usiwf68VEeqhVOlV64dXmA" id="(0.3305785123966942,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_usj-kK8VEeqhVOlV64dXmA" type="Generalization_Edge" source="_usiJYK8VEeqhVOlV64dXmA" target="_ushiYK8VEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_usj-ka8VEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_usj-kq8VEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_usj-k68VEeqhVOlV64dXmA" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_usj-lK8VEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_tTUUgIVkEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_usj-la8VEeqhVOlV64dXmA" points="[270, 190, -643984, -643984]$[450, 125, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_usj-lq8VEeqhVOlV64dXmA" id="(0.49586776859504134,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_usj-l68VEeqhVOlV64dXmA" id="(0.3048780487804878,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_usj-mK8VEeqhVOlV64dXmA" type="Generalization_Edge" source="_usjXgK8VEeqhVOlV64dXmA" target="_ushiYK8VEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_usj-ma8VEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_usj-mq8VEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_usj-m68VEeqhVOlV64dXmA" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_usj-nK8VEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_svnxkIVkEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_usj-na8VEeqhVOlV64dXmA" points="[870, 190, -643984, -643984]$[570, 125, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_usj-nq8VEeqhVOlV64dXmA" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_usj-n68VEeqhVOlV64dXmA" id="(0.9090909090909091,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_usj-oK8VEeqhVOlV64dXmA" type="Generalization_Edge" source="_usfGEK8VEeqhVOlV64dXmA" target="_ushiYK8VEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_usj-oa8VEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_usj-oq8VEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_usj-o68VEeqhVOlV64dXmA" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_usj-pK8VEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_rjgjwIVkEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_usj-pa8VEeqhVOlV64dXmA" points="[530, 190, -643984, -643984]$[530, 125, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_usj-pq8VEeqhVOlV64dXmA" id="(0.5,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_usj-p68VEeqhVOlV64dXmA" id="(0.7070707070707071,1.0)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_WSK3oI8pEeq5HrfdV5ATIg" type="PapyrusUMLProfileDiagram" name="Transformer_layers" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_efoBQI8pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_efoBQY8pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_efoBQo8pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_efoBQ48pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_MA0HIIVmEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_efoBRI8pEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_efoBRY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_efoBRo8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_efoBR48pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_efoBSI8pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_efoBSY8pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_efoBSo8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_efoBS48pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_efoBTI8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_efoBTY8pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_Ku6aYIVmEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_efoBUY8pEeq5HrfdV5ATIg" x="11030" y="1150"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_efooX48pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_efooYI8pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_efooYY8pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_efooYo8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_sbCMMIVlEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_efooY48pEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_efooZI8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_tmddgIVlEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_efooZY8pEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_efooZo8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_uFbRcIVlEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_efooZ48pEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_efooaI8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_v6pGoIVlEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_efooaY8pEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_efooao8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_wuIZEIVlEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_efooa48pEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_efoobI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_efoobY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_efoobo8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_efoob48pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_efoocI8pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_efoocY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_efooco8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_efooc48pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_efoodI8pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_gsKxUIVlEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_efooeI8pEeq5HrfdV5ATIg" x="10350" y="890"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_efpPYI8pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_efpPYY8pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_efpPYo8pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_efpPY48pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_efpPZI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_efpPZY8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_efpPZo8pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_efpPZ48pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_efpPaI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_efpPaY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_efpPao8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_efpPa48pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_-aqagIVlEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_efpPb48pEeq5HrfdV5ATIg" x="10370" y="1150"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_efpPeI8pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_efpPeY8pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_efpPeo8pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_efpPe48pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_efpPfI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_efpPfY8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_efpPfo8pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_efpPf48pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_efpPgI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_efpPgY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_efpPgo8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_efpPg48pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_zItakIVkEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_efpPh48pEeq5HrfdV5ATIg" x="10669" y="694"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_efpPiI8pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_efpPiY8pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_efpPio8pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_efpPi48pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_mZVvgIVlEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_efpPjI8pEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_efpPjY8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_oByUAIVlEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_efpPjo8pEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_efpPj48pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_efpPkI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_efpPkY8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_efpPko8pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_efpPk48pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_efpPlI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_efpPlY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_efpPlo8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_efpPl48pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_kfJ6wIVlEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_efpPm48pEeq5HrfdV5ATIg" x="10850" y="890"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_efpPpY8pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_efpPpo8pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_efpPp48pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_efpPqI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_efpPqY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_efpPqo8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_efpPq48pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_efpPrI8pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_efpPrY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_efpPro8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_efpPr48pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_efpPsI8pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_AIIo8IVmEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_efp2cI8pEeq5HrfdV5ATIg" x="10550" y="1150"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_efp2f48pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_efp2gI8pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_efp2gY8pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_efp2go8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_2FyaQIVlEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_efp2g48pEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_efp2hI8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_4EeUgIVlEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_efp2hY8pEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_efp2ho8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_606b0IVlEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_efp2h48pEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_efp2iI8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_8LVcMIVlEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_efp2iY8pEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_efp2io8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_efp2i48pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_efp2jI8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_efp2jY8pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_efp2jo8pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_efp2j48pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_efp2kI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_efp2kY8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_efp2ko8pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_0gXUkIVlEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_efp2lo8pEeq5HrfdV5ATIg" x="10090" y="1150"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_efp2l48pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_efp2mI8pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_efp2mY8pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_efp2mo8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_Nai6MIVmEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_efp2m48pEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_efp2nI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_efp2nY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_efp2no8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_efp2n48pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_efp2oI8pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_efp2oY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_efp2oo8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_efp2o48pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_efp2pI8pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_JjphIIVmEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_efp2qI8pEeq5HrfdV5ATIg" x="10750" y="1150"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_WSK3oY8pEeq5HrfdV5ATIg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_WSK3oo8pEeq5HrfdV5ATIg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_WSK3o48pEeq5HrfdV5ATIg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    </styles>
+    <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_DJMTcK8ZEeqhVOlV64dXmA" name="css_stylesheets" eObjectListValue="_mci3oJm1Eeq8nv7tV9lOqQ"/>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    <edges xmi:type="notation:Connector" xmi:id="_efooUI8pEeq5HrfdV5ATIg" type="Generalization_Edge" source="_efpPYI8pEeq5HrfdV5ATIg" target="_efooX48pEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_efooUY8pEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_efooUo8pEeq5HrfdV5ATIg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_efooU48pEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_GrExgIVmEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_efooVI8pEeq5HrfdV5ATIg" points="[10420, 1140, -643984, -643984]$[10420, 1047, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_efooVY8pEeq5HrfdV5ATIg" id="(0.40540540540540543,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_efooVo8pEeq5HrfdV5ATIg" id="(0.3524229074889868,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_efooV48pEeq5HrfdV5ATIg" type="Generalization_Edge" source="_efp2f48pEeq5HrfdV5ATIg" target="_efooX48pEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_efooWI8pEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_efooWY8pEeq5HrfdV5ATIg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_efooWo8pEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_GMzhIIVmEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_efooW48pEeq5HrfdV5ATIg" points="[10220, 1140, -643984, -643984]$[10380, 1047, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_efooXI8pEeq5HrfdV5ATIg" id="(0.5645161290322581,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_efooXY8pEeq5HrfdV5ATIg" id="(0.1762114537444934,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_efooeY8pEeq5HrfdV5ATIg" type="Generalization_Edge" source="_efooX48pEeq5HrfdV5ATIg" target="_efpPeI8pEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_efooeo8pEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_efooe48pEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_efoofI8pEeq5HrfdV5ATIg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_efoofY8pEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_SF09kIVmEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_efoofo8pEeq5HrfdV5ATIg" points="[10500, 880, -643984, -643984]$[10700, 800, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_efoof48pEeq5HrfdV5ATIg" id="(0.7048458149779736,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_efoogI8pEeq5HrfdV5ATIg" id="(0.36283185840707965,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_efpPcY8pEeq5HrfdV5ATIg" type="Generalization_Edge" source="_efp2l48pEeq5HrfdV5ATIg" target="_efpPiI8pEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_efpPco8pEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_efpPc48pEeq5HrfdV5ATIg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_efpPdI8pEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_P0nv8IVmEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_efpPdY8pEeq5HrfdV5ATIg" points="[10860, 1140, -643984, -643984]$[10920, 999, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_efpPdo8pEeq5HrfdV5ATIg" id="(0.5714285714285714,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_efpPd48pEeq5HrfdV5ATIg" id="(0.40609137055837563,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_efpPnI8pEeq5HrfdV5ATIg" type="Generalization_Edge" source="_efpPiI8pEeq5HrfdV5ATIg" target="_efpPeI8pEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_efpPnY8pEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_efpPno8pEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_efpPn48pEeq5HrfdV5ATIg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_efpPoI8pEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_RehtAIVmEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_efpPoY8pEeq5HrfdV5ATIg" points="[10940, 880, -643984, -643984]$[10740, 800, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_efpPoo8pEeq5HrfdV5ATIg" id="(0.5076142131979695,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_efpPo48pEeq5HrfdV5ATIg" id="(0.7168141592920354,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_efp2cY8pEeq5HrfdV5ATIg" type="Generalization_Edge" source="_efpPpY8pEeq5HrfdV5ATIg" target="_efooX48pEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_efp2co8pEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_efp2c48pEeq5HrfdV5ATIg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_efp2dI8pEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_HJqyAIVmEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_efp2dY8pEeq5HrfdV5ATIg" points="[10580, 1140, -643984, -643984]$[10500, 1047, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_efp2do8pEeq5HrfdV5ATIg" id="(0.272108843537415,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_efp2d48pEeq5HrfdV5ATIg" id="(0.7048458149779736,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_efp2eI8pEeq5HrfdV5ATIg" type="Generalization_Edge" source="_efoBQI8pEeq5HrfdV5ATIg" target="_efpPiI8pEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_efp2eY8pEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_efp2eo8pEeq5HrfdV5ATIg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_efp2e48pEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_QhQMcIVmEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_efp2fI8pEeq5HrfdV5ATIg" points="[11120, 1140, -643984, -643984]$[10980, 999, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_efp2fY8pEeq5HrfdV5ATIg" id="(0.47619047619047616,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_efp2fo8pEeq5HrfdV5ATIg" id="(0.7106598984771574,1.0)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_hjW4AI8pEeq5HrfdV5ATIg" type="PapyrusUMLProfileDiagram" name="Linear_layers" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_jxs-4I8pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_jxs-4Y8pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_jxs-4o8pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_jxs-448pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_jxs-5I8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_jxs-5Y8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jxs-5o8pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_jxs-548pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_jxs-6I8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_jxs-6Y8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_jxs-6o8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jxs-648pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_c_eM8IhhEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jxs-748pEeq5HrfdV5ATIg" x="11970" y="930"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_jxuNB48pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_jxuNCI8pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_jxuNCY8pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_jxuNCo8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_snPzEIhhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_jxuNC48pEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_1xPYAKZeEeqIr7xwFiWQGQ" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_1w4LoKZeEeqIr7xwFiWQGQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_1xPYAaZeEeqIr7xwFiWQGQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_eKSGEKZkEeqIr7xwFiWQGQ" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_eJ6SoKZkEeqIr7xwFiWQGQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_eKSGEaZkEeqIr7xwFiWQGQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_f9-RQKZkEeqIr7xwFiWQGQ" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_f9qvQKZkEeqIr7xwFiWQGQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_f9-RQaZkEeqIr7xwFiWQGQ"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_jxuNDI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_jxuNDY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_jxuNDo8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jxuND48pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_jxuNEI8pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_jxuNEY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_jxuNEo8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_jxuNE48pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jxuNFI8pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_ozz9sIhhEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jxuNGI8pEeq5HrfdV5ATIg" x="11370" y="1210"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_jxu0J48pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_jxu0KI8pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_jxu0KY8pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_jxu0Ko8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_lYOnoIhhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_jxvbII8pEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_jxvbIY8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_m2y3YIhhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_jxvbIo8pEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_jxvbI48pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_jxvbJI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_jxvbJY8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jxvbJo8pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_jxvbJ48pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_jxvbKI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_jxvbKY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_jxvbKo8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jxvbK48pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_hGyAkIhhEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jxvbL48pEeq5HrfdV5ATIg" x="11550" y="930"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_jxvbMI8pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_jxvbMY8pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_jxvbMo8pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_jxvbM48pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_jxvbNI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_jxvbNY8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jxvbNo8pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_jxvbN48pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_jxvbOI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_jxvbOY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_jxvbOo8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jxvbO48pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_ThvuQIhhEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jxvbP48pEeq5HrfdV5ATIg" x="11710" y="690"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_jxvbQI8pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_jxvbQY8pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_jxvbQo8pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_jxvbQ48pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_u5YNwIhhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_jxvbRI8pEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_jxvbRY8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_wboqsIhhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_jxvbRo8pEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_jxvbR48pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_jxvbSI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_jxvbSY8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jxvbSo8pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_jxvbS48pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_jxvbTI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_jxvbTY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_jxvbTo8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jxvbT48pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_pJFqIIhhEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jxvbU48pEeq5HrfdV5ATIg" x="11750" y="1210"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_hjW4AY8pEeq5HrfdV5ATIg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_hjW4Ao8pEeq5HrfdV5ATIg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_hjW4A48pEeq5HrfdV5ATIg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    </styles>
+    <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_EIEWgK8ZEeqhVOlV64dXmA" name="css_stylesheets" eObjectListValue="_mci3oJm1Eeq8nv7tV9lOqQ"/>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    <edges xmi:type="notation:Connector" xmi:id="_jxuNAI8pEeq5HrfdV5ATIg" type="Generalization_Edge" source="_jxvbQI8pEeq5HrfdV5ATIg" target="_jxu0J48pEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_jxuNAY8pEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jxuNAo8pEeq5HrfdV5ATIg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_jxuNA48pEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_4ugf0IhhEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jxuNBI8pEeq5HrfdV5ATIg" points="[11820, 1200, -643984, -643984]$[11700, 1039, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jxuNBY8pEeq5HrfdV5ATIg" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jxuNBo8pEeq5HrfdV5ATIg" id="(0.7920792079207921,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_jxu0Eo8pEeq5HrfdV5ATIg" type="Generalization_Edge" source="_jxs-4I8pEeq5HrfdV5ATIg" target="_jxvbMI8pEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_jxu0E48pEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jxu0FI8pEeq5HrfdV5ATIg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_jxu0FY8pEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_5QYd0IhhEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jxu0Fo8pEeq5HrfdV5ATIg" points="[12000, 920, -643984, -643984]$[11780, 780, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jxu0F48pEeq5HrfdV5ATIg" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jxu0GI8pEeq5HrfdV5ATIg" id="(0.8,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_jxu0GY8pEeq5HrfdV5ATIg" type="Generalization_Edge" source="_jxu0J48pEeq5HrfdV5ATIg" target="_jxvbMI8pEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_jxu0Go8pEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jxu0G48pEeq5HrfdV5ATIg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_jxu0HI8pEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_58n4wIhhEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jxu0HY8pEeq5HrfdV5ATIg" points="[11660, 920, -643984, -643984]$[11720, 780, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jxu0Ho8pEeq5HrfdV5ATIg" id="(0.594059405940594,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jxu0H48pEeq5HrfdV5ATIg" id="(0.2,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_jxu0II8pEeq5HrfdV5ATIg" type="Generalization_Edge" source="_jxuNB48pEeq5HrfdV5ATIg" target="_jxu0J48pEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_jxu0IY8pEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_jxu0Io8pEeq5HrfdV5ATIg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_jxu0I48pEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_4MFvQIhhEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jxu0JI8pEeq5HrfdV5ATIg" points="[11520, 1200, -643984, -643984]$[11600, 1039, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jxu0JY8pEeq5HrfdV5ATIg" id="(0.8247422680412371,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jxu0Jo8pEeq5HrfdV5ATIg" id="(0.297029702970297,1.0)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_mvx5kI8pEeq5HrfdV5ATIg" type="PapyrusUMLProfileDiagram" name="Dropout_layers" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_ouSNoY8pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_ouSNoo8pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ouSNo48pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ouSNpI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ouSNpY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ouSNpo8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ouSNp48pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ouSNqI8pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ouSNqY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ouSNqo8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ouSNq48pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ouSNrI8pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_O7XjkIhiEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ouSNsI8pEeq5HrfdV5ATIg" x="-380" y="280"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_ouSNuY8pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_ouSNuo8pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ouSNu48pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ouSNvI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ouSNvY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ouSNvo8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ouSNv48pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ouSNwI8pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ouSNwY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ouSNwo8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ouSNw48pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ouSNxI8pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_QF418IhiEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ouSNyI8pEeq5HrfdV5ATIg" x="40" y="280"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_ouS0t48pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_ouS0uI8pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ouS0uY8pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ouS0uo8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ouS0u48pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ouS0vI8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ouS0vY8pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ouS0vo8pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ouS0v48pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ouS0wI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ouS0wY8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ouS0wo8pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_Proi4IhiEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ouS0xo8pEeq5HrfdV5ATIg" x="-100" y="280"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_ouS0x48pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_ouS0yI8pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ouS0yY8pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_ouS0yo8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_L5uXgIhiEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_ouS0y48pEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_ouS0zI8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_Mxr6QIhiEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_ouS0zY8pEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_k8lLIKcmEeqkzM30xo7jnw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_k7wEsKcmEeqkzM30xo7jnw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_k8lLIacmEeqkzM30xo7jnw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_m_34kKcmEeqkzM30xo7jnw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_m_lksKcmEeqkzM30xo7jnw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_m_34kacmEeqkzM30xo7jnw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ouS0zo8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ouS0z48pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ouS00I8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ouS00Y8pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ouS00o8pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ouS0048pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ouS01I8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ouS01Y8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ouS01o8pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_JJr40IhiEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ouS02o8pEeq5HrfdV5ATIg" x="-220" y="20"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_ouS0248pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_ouS03I8pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ouS03Y8pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ouS03o8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ouS0348pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ouS04I8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ouS04Y8pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ouS04o8pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ouS0448pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ouS05I8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ouS05Y8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ouS05o8pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_PMP4MIhiEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ouS06o8pEeq5HrfdV5ATIg" x="-240" y="280"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_mvx5kY8pEeq5HrfdV5ATIg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_mvx5ko8pEeq5HrfdV5ATIg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_mvx5k48pEeq5HrfdV5ATIg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    </styles>
+    <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_tG8kQK8YEeqhVOlV64dXmA" name="css_stylesheets" eObjectListValue="_mci3oJm1Eeq8nv7tV9lOqQ"/>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    <edges xmi:type="notation:Connector" xmi:id="_ouSNsY8pEeq5HrfdV5ATIg" type="Generalization_Edge" source="_ouSNoY8pEeq5HrfdV5ATIg" target="_ouS0x48pEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_ouSNso8pEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_FDJJYI81Eeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ouSNs48pEeq5HrfdV5ATIg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_ouSNtI8pEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_rp92AIhiEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ouSNtY8pEeq5HrfdV5ATIg" points="[-350, 270, -643984, -643984]$[-210, 129, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ouSNto8pEeq5HrfdV5ATIg" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ouSNt48pEeq5HrfdV5ATIg" id="(0.11428571428571428,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_ouS0sI8pEeq5HrfdV5ATIg" type="Generalization_Edge" source="_ouS0248pEeq5HrfdV5ATIg" target="_ouS0x48pEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_ouS0sY8pEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_FDFfAI81Eeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ouS0so8pEeq5HrfdV5ATIg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_ouS0s48pEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_sKSU0IhiEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ouS0tI8pEeq5HrfdV5ATIg" points="[-190, 270, -643984, -643984]$[-190, 129, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ouS0tY8pEeq5HrfdV5ATIg" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ouS0to8pEeq5HrfdV5ATIg" id="(0.22857142857142856,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_ouS0648pEeq5HrfdV5ATIg" type="Generalization_Edge" source="_ouS0t48pEeq5HrfdV5ATIg" target="_ouS0x48pEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_ouS07I8pEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_FDMzwI81Eeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ouS07Y8pEeq5HrfdV5ATIg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_ouS07o8pEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_srztgIhiEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ouS0748pEeq5HrfdV5ATIg" points="[-50, 270, -643984, -643984]$[-90, 129, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ouS08I8pEeq5HrfdV5ATIg" id="(0.2,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ouS08Y8pEeq5HrfdV5ATIg" id="(0.8,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_ouS08o8pEeq5HrfdV5ATIg" type="Generalization_Edge" source="_ouSNuY8pEeq5HrfdV5ATIg" target="_ouS0x48pEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_ouS0848pEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_FDQeII81Eeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ouS09I8pEeq5HrfdV5ATIg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_ouS09Y8pEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_t3zmkIhiEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ouS09o8pEeq5HrfdV5ATIg" points="[70, 270, -643984, -643984]$[-70, 129, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ouS0948pEeq5HrfdV5ATIg" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ouS0-I8pEeq5HrfdV5ATIg" id="(0.9142857142857143,1.0)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_rsBxII8pEeq5HrfdV5ATIg" type="PapyrusUMLProfileDiagram" name="Sparse_layers" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_y6OdMI8pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_y6OdMY8pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_y6OdMo8pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_y6OdM48pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_ytrT4IhjEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_y6OdNI8pEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_y6OdNY8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_z2sxcIhjEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_y6OdNo8pEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_y6OdN48pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_y6OdOI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_y6OdOY8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y6OdOo8pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_y6OdO48pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_y6OdPI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_y6OdPY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_y6OdPo8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y6OdP48pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_kIoWEIhjEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y6OdQ48pEeq5HrfdV5ATIg" x="13050" y="950"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_y6OdRI8pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_y6OdRY8pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_y6OdRo8pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_y6OdR48pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_w7GjAIhjEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_y6OdSI8pEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_y6OdSY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_y6OdSo8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_y6OdS48pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y6OdTI8pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_y6OdTY8pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_y6OdTo8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_y6OdT48pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_y6OdUI8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y6OdUY8pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_HDvqkIhjEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y6OdVY8pEeq5HrfdV5ATIg" x="12810" y="950"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_y6OdVo8pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_y6OdV48pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_y6OdWI8pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_y6OdWY8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_nWwe8IhjEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_y6OdWo8pEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_y6OdW48pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_p2G2QIhjEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_y6OdXI8pEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_y6OdXY8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_sIOC0IhjEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_y6OdXo8pEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_y6OdX48pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_tKafoIhjEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_y6OdYI8pEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_y6OdYY8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_vicuAIhjEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_y6OdYo8pEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_UjqNsJm5Eeq0jfmjFzaebA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_UjbkMJm5Eeq0jfmjFzaebA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_UjqNsZm5Eeq0jfmjFzaebA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_y6OdY48pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_y6OdZI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_y6OdZY8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y6OdZo8pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_y6OdZ48pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_y6OdaI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_y6OdaY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_y6Odao8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y6Oda48pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_AdGtwIhjEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y6Odb48pEeq5HrfdV5ATIg" x="12930" y="690"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_rsBxIY8pEeq5HrfdV5ATIg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_rsBxIo8pEeq5HrfdV5ATIg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_rsBxI48pEeq5HrfdV5ATIg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    </styles>
+    <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_ulEvIK8YEeqhVOlV64dXmA" name="css_stylesheets" eObjectListValue="_mci3oJm1Eeq8nv7tV9lOqQ"/>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    <edges xmi:type="notation:Connector" xmi:id="_y6N2II8pEeq5HrfdV5ATIg" type="Generalization_Edge" source="_y6OdRI8pEeq5HrfdV5ATIg" target="_y6OdVo8pEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_y6N2IY8pEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_y6N2Io8pEeq5HrfdV5ATIg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_y6N2I48pEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_7zj6UIhjEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_y6N2JI8pEeq5HrfdV5ATIg" points="[12920, 940, -643984, -643984]$[12980, 847, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_y6N2JY8pEeq5HrfdV5ATIg" id="(0.594059405940594,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_y6N2Jo8pEeq5HrfdV5ATIg" id="(0.2575107296137339,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_y6PEQI8pEeq5HrfdV5ATIg" type="Generalization_Edge" source="_y6OdMI8pEeq5HrfdV5ATIg" target="_y6OdVo8pEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_y6PEQY8pEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_y6PEQo8pEeq5HrfdV5ATIg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_y6PEQ48pEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_8S-aMIhjEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_y6PERI8pEeq5HrfdV5ATIg" points="[13160, 940, -643984, -643984]$[13080, 847, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_y6PERY8pEeq5HrfdV5ATIg" id="(0.5128205128205128,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_y6PERo8pEeq5HrfdV5ATIg" id="(0.6866952789699571,1.0)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_uj59MI8pEeq5HrfdV5ATIg" type="PapyrusUMLProfileDiagram" name="Distance_functions" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_128F_o8pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_128F_48pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_128GAI8pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_128GAY8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_D1Gu4IhkEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_128GAo8pEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_128GA48pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_128GBI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_128GBY8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_128GBo8pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_128GB48pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_128GCI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_128GCY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_128GCo8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_128GC48pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_9-4iYIhjEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_128GD48pEeq5HrfdV5ATIg" x="13550" y="690"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_128GEI8pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_128GEY8pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_128GEo8pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_128GE48pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_Km4ksIhkEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_128GFI8pEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_128GFY8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_LieqQIhkEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_128GFo8pEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_128GF48pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_128GGI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_128GGY8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_128GGo8pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_128GG48pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_128GHI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_128GHY8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_128GHo8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_128GH48pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_F-SB4IhkEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_128GI48pEeq5HrfdV5ATIg" x="13690" y="950"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_128tAY8pEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_128tAo8pEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_128tA48pEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_128tBI8pEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_JmnagIhkEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_128tBY8pEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_128tBo8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_128tB48pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_128tCI8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_128tCY8pEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_128tCo8pEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_128tC48pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_128tDI8pEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_128tDY8pEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_128tDo8pEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_Ff9uMIhkEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_128tEo8pEeq5HrfdV5ATIg" x="13450" y="950"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_uj59MY8pEeq5HrfdV5ATIg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_uj59Mo8pEeq5HrfdV5ATIg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_uj59M48pEeq5HrfdV5ATIg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    </styles>
+    <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_vzoM8K8YEeqhVOlV64dXmA" name="css_stylesheets" eObjectListValue="_mci3oJm1Eeq8nv7tV9lOqQ"/>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    <edges xmi:type="notation:Connector" xmi:id="_128F8I8pEeq5HrfdV5ATIg" type="Generalization_Edge" source="_128GEI8pEeq5HrfdV5ATIg" target="_128F_o8pEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_128F8Y8pEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_128F8o8pEeq5HrfdV5ATIg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_128F848pEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_RFcjkIhkEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_128F9I8pEeq5HrfdV5ATIg" points="[13720, 940, -643984, -643984]$[13660, 783, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_128F9Y8pEeq5HrfdV5ATIg" id="(0.2185792349726776,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_128F9o8pEeq5HrfdV5ATIg" id="(0.7741935483870968,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_128F948pEeq5HrfdV5ATIg" type="Generalization_Edge" source="_128tAY8pEeq5HrfdV5ATIg" target="_128F_o8pEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_128F-I8pEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_128F-Y8pEeq5HrfdV5ATIg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_128F-o8pEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_QjaNgIhkEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_128F-48pEeq5HrfdV5ATIg" points="[13540, 940, -643984, -643984]$[13580, 783, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_128F_I8pEeq5HrfdV5ATIg" id="(0.6329113924050633,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_128F_Y8pEeq5HrfdV5ATIg" id="(0.25806451612903225,1.0)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_5sQxsI8pEeq5HrfdV5ATIg" type="PapyrusUMLProfileDiagram" name="Loss_functions" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_LajYYI8qEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_LajYYY8qEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_LajYYo8qEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LajYY48qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LajYZI8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_LajYZY8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LajYZo8qEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_LajYZ48qEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LajYaI8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LajYaY8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_LajYao8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LajYa48qEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_oavnUIhqEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LajYb48qEeq5HrfdV5ATIg" x="2800" y="780"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Laj_eo8qEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Laj_e48qEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Laj_fI8qEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_Laj_fY8qEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_4J95QIhqEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_Laj_fo8qEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_Laj_f48qEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_5TNZQIhqEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_Laj_gI8qEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_Laj_gY8qEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_6KGlAIhqEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_Laj_go8qEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Laj_g48qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Laj_hI8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Laj_hY8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Laj_ho8qEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Laj_h48qEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Laj_iI8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Laj_iY8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Laj_io8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Laj_i48qEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_0iSA4IhqEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Laj_j48qEeq5HrfdV5ATIg" x="2160" y="560"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Laj_kY8qEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Laj_ko8qEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Laj_k48qEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_Laj_lI8qEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_Hr6rkIhoEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_Laj_lY8qEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_Laj_lo8qEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_KRcjYIhoEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_Laj_l48qEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Laj_mI8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Laj_mY8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Laj_mo8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Laj_m48qEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Laj_nI8qEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Laj_nY8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Laj_no8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Laj_n48qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Laj_oI8qEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_F2VqAIhoEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Laj_pI8qEeq5HrfdV5ATIg" x="1100" y="60"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Laj_vY8qEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Laj_vo8qEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Laj_v48qEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Laj_wI8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Laj_wY8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Laj_wo8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Laj_w48qEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Laj_xI8qEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Laj_xY8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Laj_xo8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Laj_x48qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Laj_yI8qEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_sYrucIhoEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Laj_zI8qEeq5HrfdV5ATIg" x="960" y="320"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_LakmiI8qEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_LakmiY8qEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Lakmio8qEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_Lakmi48qEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_fsyDkIhoEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_LakmjI8qEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_LakmjY8qEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_g54v4IhoEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_Lakmjo8qEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Lakmj48qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LakmkI8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_LakmkY8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Lakmko8qEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Lakmk48qEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LakmlI8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LakmlY8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Lakmlo8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Lakml48qEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_dgekEIhoEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Lakmm48qEeq5HrfdV5ATIg" x="20" y="60"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_LakmpI8qEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_LakmpY8qEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Lakmpo8qEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Lakmp48qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LakmqI8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_LakmqY8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Lakmqo8qEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Lakmq48qEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LakmrI8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LakmrY8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Lakmro8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Lakmr48qEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_UW5JYIhoEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Lakms48qEeq5HrfdV5ATIg" x="660" y="320"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_LakmtI8qEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_LakmtY8qEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Lakmto8qEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_Lakmt48qEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_qCV-oIhnEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_LakmuI8qEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LakmuY8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Lakmuo8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Lakmu48qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LakmvI8qEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_LakmvY8qEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Lakmvo8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Lakmv48qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_LakmwI8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LakmwY8qEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_oNze4IhnEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LakmxY8qEeq5HrfdV5ATIg" x="500" y="-180"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Lakmxo8qEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Lakmx48qEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_LakmyI8qEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_LakmyY8qEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_e4iGsIhpEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_Lakmyo8qEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Lakmy48qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LakmzI8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_LakmzY8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Lakmzo8qEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Lakmz48qEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Lakm0I8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Lakm0Y8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Lakm0o8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Lakm048qEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_cSDMoIhpEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Lakm148qEeq5HrfdV5ATIg" x="2500" y="320"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_LalNkI8qEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_LalNkY8qEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_LalNko8qEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LalNk48qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LalNlI8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_LalNlY8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LalNlo8qEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_LalNl48qEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LalNmI8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LalNmY8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_LalNmo8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LalNm48qEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_yCiS4IhoEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LalNn48qEeq5HrfdV5ATIg" x="1100" y="320"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_LalNoI8qEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_LalNoY8qEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_LalNoo8qEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_LalNo48qEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_2xgRgIhqEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_LalNpI8qEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LalNpY8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LalNpo8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_LalNp48qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LalNqI8qEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_LalNqY8qEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LalNqo8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LalNq48qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_LalNrI8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LalNrY8qEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_1ml9kIhqEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LalNsY8qEeq5HrfdV5ATIg" x="2400" y="560"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_LalNuo8qEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_LalNu48qEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_LalNvI8qEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LalNvY8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LalNvo8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_LalNv48qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LalNwI8qEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_LalNwY8qEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LalNwo8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LalNw48qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_LalNxI8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LalNxY8qEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_v673wIhpEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LalNyY8qEeq5HrfdV5ATIg" x="1580" y="520"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_LalN248qEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_LalN3I8qEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_LalN3Y8qEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_LalN3o8qEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_LlDOYIhqEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_LalN348qEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LalN4I8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LalN4Y8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_LalN4o8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LalN448qEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_LalN5I8qEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LalN5Y8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LalN5o8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_LalN548qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LalN6I8qEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_J1LMMIhqEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LalN7I8qEeq5HrfdV5ATIg" x="1920" y="760"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_LalN7Y8qEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_LalN7o8qEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_LalN748qEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LalN8I8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LalN8Y8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_LalN8o8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LalN848qEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_LalN9I8qEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LalN9Y8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LalN9o8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_LalN948qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LalN-I8qEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_XkZnMIhoEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LalN_I8qEeq5HrfdV5ATIg" x="800" y="320"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Lal0oI8qEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Lal0oY8qEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Lal0oo8qEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_Lal0o48qEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_dvGZcIhpEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_Lal0pI8qEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Lal0pY8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Lal0po8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Lal0p48qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Lal0qI8qEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Lal0qY8qEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Lal0qo8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Lal0q48qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Lal0rI8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Lal0rY8qEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_TXEOoIhpEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Lal0sY8qEeq5HrfdV5ATIg" x="1520" y="320"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Lal0u48qEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Lal0vI8qEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Lal0vY8qEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_Lal0vo8qEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_NFUHQIhqEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_Lal0v48qEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Lal0wI8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Lal0wY8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Lal0wo8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Lal0w48qEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Lal0xI8qEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Lal0xY8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Lal0xo8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Lal0x48qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Lal0yI8qEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_JaQx0IhqEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Lal0zI8qEeq5HrfdV5ATIg" x="1720" y="760"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Lal01Y8qEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Lal01o8qEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Lal0148qEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Lal02I8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Lal02Y8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Lal02o8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Lal0248qEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Lal03I8qEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Lal03Y8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Lal03o8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Lal0348qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Lal04I8qEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_6OX2cIhpEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Lal05I8qEeq5HrfdV5ATIg" x="2640" y="560"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Lal07Y8qEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Lal07o8qEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Lal0748qEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_Lal08I8qEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_kXdYEIhqEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_Lal08Y8qEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Lal08o8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Lal0848qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Lal09I8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Lal09Y8qEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Lal09o8qEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Lal0948qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Lal0-I8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Lal0-Y8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Lal0-o8qEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_hqxIUIhqEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Lal0_o8qEeq5HrfdV5ATIg" x="2800" y="560"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Lal0_48qEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Lal1AI8qEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Lal1AY8qEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Lal1Ao8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Lal1A48qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Lal1BI8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Lal1BY8qEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Lal1Bo8qEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Lal1B48qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Lal1CI8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Lal1CY8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Lal1Co8qEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_pWuucIhqEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Lal1Do8qEeq5HrfdV5ATIg" x="2940" y="780"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Lal1F48qEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Lal1GI8qEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Lal1GY8qEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_Lal1Go8qEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_HB3XEIhqEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_Lal1G48qEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Lal1HI8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Lal1HY8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Lal1Ho8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Lal1H48qEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Lal1II8qEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Lal1IY8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Lal1Io8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Lal1I48qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Lal1JI8qEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_DrSc0IhqEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Lal1KI8qEeq5HrfdV5ATIg" x="1800" y="520"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_LambyI8qEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_LambyY8qEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Lambyo8qEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Lamby48qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LambzI8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_LambzY8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Lambzo8qEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Lambz48qEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Lamb0I8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Lamb0Y8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Lamb0o8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Lamb048qEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_o24mMIhpEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Lamb148qEeq5HrfdV5ATIg" x="1280" y="520"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_LanCwI8qEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_LanCwY8qEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_LanCwo8qEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LanCw48qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LanCxI8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_LanCxY8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LanCxo8qEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_LanCx48qEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_LanCyI8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_LanCyY8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_LanCyo8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LanCy48qEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_uaWOwIhpEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LanCz48qEeq5HrfdV5ATIg" x="1440" y="520"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_hxfEcJm6Eeq0jfmjFzaebA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_hxfrgJm6Eeq0jfmjFzaebA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_hxfrgZm6Eeq0jfmjFzaebA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_hxfrgpm6Eeq0jfmjFzaebA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_hxfrg5m6Eeq0jfmjFzaebA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_hxfrhJm6Eeq0jfmjFzaebA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hxfrhZm6Eeq0jfmjFzaebA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_hxfrhpm6Eeq0jfmjFzaebA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_hxfrh5m6Eeq0jfmjFzaebA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_hxfriJm6Eeq0jfmjFzaebA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_hxfriZm6Eeq0jfmjFzaebA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hxfripm6Eeq0jfmjFzaebA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_hxbaEJm6Eeq0jfmjFzaebA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hxfEcZm6Eeq0jfmjFzaebA" x="520" y="320"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_w1FmgJm6Eeq0jfmjFzaebA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w1GNkJm6Eeq0jfmjFzaebA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w1GNkZm6Eeq0jfmjFzaebA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w1GNkpm6Eeq0jfmjFzaebA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w1GNk5m6Eeq0jfmjFzaebA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w1GNlJm6Eeq0jfmjFzaebA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w1GNlZm6Eeq0jfmjFzaebA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w1GNlpm6Eeq0jfmjFzaebA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w1GNl5m6Eeq0jfmjFzaebA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w1GNmJm6Eeq0jfmjFzaebA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w1GNmZm6Eeq0jfmjFzaebA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w1GNmpm6Eeq0jfmjFzaebA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_w1CjMJm6Eeq0jfmjFzaebA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w1FmgZm6Eeq0jfmjFzaebA" x="380" y="320"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_DSsxUJm7Eeq0jfmjFzaebA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_DStYYJm7Eeq0jfmjFzaebA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_DStYYZm7Eeq0jfmjFzaebA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_DStYYpm7Eeq0jfmjFzaebA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_DStYY5m7Eeq0jfmjFzaebA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_DStYZJm7Eeq0jfmjFzaebA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DStYZZm7Eeq0jfmjFzaebA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_DStYZpm7Eeq0jfmjFzaebA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_DStYZ5m7Eeq0jfmjFzaebA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_DStYaJm7Eeq0jfmjFzaebA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_DStYaZm7Eeq0jfmjFzaebA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DStYapm7Eeq0jfmjFzaebA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_DSn40Jm7Eeq0jfmjFzaebA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_DSsxUZm7Eeq0jfmjFzaebA" x="1980" y="560"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_5sQxsY8pEeq5HrfdV5ATIg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_5sQxso8pEeq5HrfdV5ATIg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_5sQxs48pEeq5HrfdV5ATIg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    </styles>
+    <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_xUzEwK8YEeqhVOlV64dXmA" name="css_stylesheets" eObjectListValue="_mci3oJm1Eeq8nv7tV9lOqQ"/>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    <edges xmi:type="notation:Connector" xmi:id="_LajYcI8qEeq5HrfdV5ATIg" type="Generalization_Edge" source="_LalN7Y8qEeq5HrfdV5ATIg" target="_Laj_kY8qEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_LajYcY8qEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_LajYco8qEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_LajYc48qEeq5HrfdV5ATIg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_LajYdI8qEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_PLRRsIhrEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LajYdY8qEeq5HrfdV5ATIg" points="[595, 315, -643984, -643984]$[915, 173, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LajYdo8qEeq5HrfdV5ATIg" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LajYd48qEeq5HrfdV5ATIg" id="(0.297029702970297,0.9971988795518194)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_Laj_cY8qEeq5HrfdV5ATIg" type="Generalization_Edge" source="_LalNuo8qEeq5HrfdV5ATIg" target="_Lal0oI8qEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Laj_co8qEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Laj_c48qEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Laj_dI8qEeq5HrfdV5ATIg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_Laj_dY8qEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_0GpqQIhpEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Laj_do8qEeq5HrfdV5ATIg" points="[1355, 515, -643984, -643984]$[1215, 418, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Laj_d48qEeq5HrfdV5ATIg" id="(0.15503875968992248,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Laj_eI8qEeq5HrfdV5ATIg" id="(0.34285714285714286,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_Laj_pY8qEeq5HrfdV5ATIg" type="Generalization_Edge" source="_LalNkI8qEeq5HrfdV5ATIg" target="_Laj_kY8qEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Laj_po8qEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Laj_p48qEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Laj_qI8qEeq5HrfdV5ATIg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_Laj_qY8qEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_OBMEMIhrEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Laj_qo8qEeq5HrfdV5ATIg" points="[935, 315, -643984, -643984]$[955, 173, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Laj_q48qEeq5HrfdV5ATIg" id="(0.6153846153846154,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Laj_rI8qEeq5HrfdV5ATIg" id="(0.49504950495049505,0.9971988795518194)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_Laj_rY8qEeq5HrfdV5ATIg" type="Generalization_Edge" source="_Lal1F48qEeq5HrfdV5ATIg" target="_Lal0oI8qEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Laj_ro8qEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Laj_r48qEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Laj_sI8qEeq5HrfdV5ATIg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_Laj_sY8qEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_UcGuoIhqEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Laj_so8qEeq5HrfdV5ATIg" points="[1575, 515, -643984, -643984]$[1415, 418, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Laj_s48qEeq5HrfdV5ATIg" id="(0.1388888888888889,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Laj_tI8qEeq5HrfdV5ATIg" id="(0.8,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_Laj_tY8qEeq5HrfdV5ATIg" type="Generalization_Edge" source="_LajYYI8qEeq5HrfdV5ATIg" target="_Lal07Y8qEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Laj_to8qEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Laj_t48qEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Laj_uI8qEeq5HrfdV5ATIg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_Laj_uY8qEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_rT8pEIhqEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Laj_uo8qEeq5HrfdV5ATIg" points="[2490, 775, -643984, -643984]$[2490, 658, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Laj_u48qEeq5HrfdV5ATIg" id="(0.5660377358490566,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Laj_vI8qEeq5HrfdV5ATIg" id="(0.2926829268292683,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_Laj_zY8qEeq5HrfdV5ATIg" type="Generalization_Edge" source="_Laj_eo8qEeq5HrfdV5ATIg" target="_Lakmxo8qEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Laj_zo8qEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Laj_z48qEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Laj_0I8qEeq5HrfdV5ATIg" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_Laj_0Y8qEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_H58ZIIhrEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Laj_0o8qEeq5HrfdV5ATIg" points="[2055, 555, -643984, -643984]$[2275, 417, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Laj_048qEeq5HrfdV5ATIg" id="(0.7486631016042781,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Laj_1I8qEeq5HrfdV5ATIg" id="(0.11560693641618497,0.9967637540453059)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_LakmgI8qEeq5HrfdV5ATIg" type="Generalization_Edge" source="_Laj_vY8qEeq5HrfdV5ATIg" target="_Laj_kY8qEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_LakmgY8qEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Lakmgo8qEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Lakmg48qEeq5HrfdV5ATIg" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_LakmhI8qEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_Ojop8IhrEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LakmhY8qEeq5HrfdV5ATIg" points="[795, 315, -643984, -643984]$[935, 173, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Lakmho8qEeq5HrfdV5ATIg" id="(0.8,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Lakmh48qEeq5HrfdV5ATIg" id="(0.39603960396039606,0.9971988795518194)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_LakmnI8qEeq5HrfdV5ATIg" type="Generalization_Edge" source="_Lal01Y8qEeq5HrfdV5ATIg" target="_Lakmxo8qEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_LakmnY8qEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Lakmno8qEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Lakmn48qEeq5HrfdV5ATIg" x="-1" y="57"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_LakmoI8qEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_7bTjoIhpEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LakmoY8qEeq5HrfdV5ATIg" points="[2430, 575, -643984, -643984]$[2310, 418, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Lakmoo8qEeq5HrfdV5ATIg" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Lakmo48qEeq5HrfdV5ATIg" id="(0.8092485549132948,0.9805825242718447)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_Lakm2I8qEeq5HrfdV5ATIg" type="Generalization_Edge" source="_Lakmxo8qEeq5HrfdV5ATIg" target="_Laj_kY8qEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Lakm2Y8qEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Lakm2o8qEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Lakm248qEeq5HrfdV5ATIg" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_Lakm3I8qEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_L6mLIIhrEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Lakm3Y8qEeq5HrfdV5ATIg" points="[2275, 315, -643984, -643984]$[1035, 173, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Lakm3o8qEeq5HrfdV5ATIg" id="(0.11560693641618497,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Lakm348qEeq5HrfdV5ATIg" id="(0.8910891089108911,0.9971988795518194)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_LalNso8qEeq5HrfdV5ATIg" type="Generalization_Edge" source="_Lal0oI8qEeq5HrfdV5ATIg" target="_Laj_kY8qEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_LalNs48qEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_LalNtI8qEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_LalNtY8qEeq5HrfdV5ATIg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_LalNto8qEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_KmOZMIhrEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LalNt48qEeq5HrfdV5ATIg" points="[1315, 315, -643984, -643984]$[1015, 173, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LalNuI8qEeq5HrfdV5ATIg" id="(0.22857142857142856,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LalNuY8qEeq5HrfdV5ATIg" id="(0.7920792079207921,0.9971988795518194)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_LalNyo8qEeq5HrfdV5ATIg" type="Generalization_Edge" source="_LakmiI8qEeq5HrfdV5ATIg" target="_LakmtI8qEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_LalNy48qEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8aQoAI80Eeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_LalNzI8qEeq5HrfdV5ATIg" x="-1" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_LalNzY8qEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_YDZI8IhrEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LalNzo8qEeq5HrfdV5ATIg" points="[130, 50, -643984, -643984]$[550, -88, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LalNz48qEeq5HrfdV5ATIg" id="(0.5970149253731343,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LalN0I8qEeq5HrfdV5ATIg" id="(0.3191489361702128,0.996763754045307)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_LalN0Y8qEeq5HrfdV5ATIg" type="Generalization_Edge" source="_Lal0u48qEeq5HrfdV5ATIg" target="_Lal1F48qEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_LalN0o8qEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_LalN048qEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_LalN1I8qEeq5HrfdV5ATIg" x="1" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_LalN1Y8qEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_THXJQIhqEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LalN1o8qEeq5HrfdV5ATIg" points="[1535, 755, -643984, -643984]$[1595, 618, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LalN148qEeq5HrfdV5ATIg" id="(0.3468208092485549,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LalN2I8qEeq5HrfdV5ATIg" id="(0.2777777777777778,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_LalN_Y8qEeq5HrfdV5ATIg" type="Generalization_Edge" source="_LambyI8qEeq5HrfdV5ATIg" target="_Lal0oI8qEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_LalN_o8qEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_LalN_48qEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_LalOAI8qEeq5HrfdV5ATIg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_LalOAY8qEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_sErX4IhpEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LalOAo8qEeq5HrfdV5ATIg" points="[1155, 515, -643984, -643984]$[1175, 418, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LalOA48qEeq5HrfdV5ATIg" id="(0.45112781954887216,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LalOBI8qEeq5HrfdV5ATIg" id="(0.11428571428571428,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_Lal0s48qEeq5HrfdV5ATIg" type="Generalization_Edge" source="_LalNoI8qEeq5HrfdV5ATIg" target="_Lakmxo8qEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Lal0tI8qEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Lal0tY8qEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Lal0to8qEeq5HrfdV5ATIg" x="1" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_Lal0t48qEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_HRZLYIhrEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Lal0uI8qEeq5HrfdV5ATIg" points="[2275, 555, -643984, -643984]$[2335, 417, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Lal0uY8qEeq5HrfdV5ATIg" id="(0.6091370558375635,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Lal0uo8qEeq5HrfdV5ATIg" id="(0.4624277456647399,0.9967637540453059)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_Lal0zY8qEeq5HrfdV5ATIg" type="Generalization_Edge" source="_Lal0_48qEeq5HrfdV5ATIg" target="_Lal07Y8qEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Lal0zo8qEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Lal0z48qEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Lal00I8qEeq5HrfdV5ATIg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_Lal00Y8qEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_qQK34IhqEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Lal00o8qEeq5HrfdV5ATIg" points="[2650, 795, -643984, -643984]$[2590, 658, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Lal0048qEeq5HrfdV5ATIg" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Lal01I8qEeq5HrfdV5ATIg" id="(0.7804878048780488,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_Lal05Y8qEeq5HrfdV5ATIg" type="Generalization_Edge" source="_LakmpI8qEeq5HrfdV5ATIg" target="_Laj_kY8qEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Lal05o8qEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Lal0548qEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Lal06I8qEeq5HrfdV5ATIg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_Lal06Y8qEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_PzV-UIhrEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Lal06o8qEeq5HrfdV5ATIg" points="[475, 315, -643984, -643984]$[875, 173, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Lal0648qEeq5HrfdV5ATIg" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Lal07I8qEeq5HrfdV5ATIg" id="(0.09900990099009901,0.9971988795518194)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_Lal1D48qEeq5HrfdV5ATIg" type="Generalization_Edge" source="_LanCwI8qEeq5HrfdV5ATIg" target="_Lal0oI8qEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Lal1EI8qEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Lal1EY8qEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Lal1Eo8qEeq5HrfdV5ATIg" x="-1" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_Lal1E48qEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_zEGoIIhpEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Lal1FI8qEeq5HrfdV5ATIg" points="[1235, 515, -643984, -643984]$[1195, 418, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Lal1FY8qEeq5HrfdV5ATIg" id="(0.3418803418803419,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Lal1Fo8qEeq5HrfdV5ATIg" id="(0.22857142857142856,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_LambsI8qEeq5HrfdV5ATIg" type="Generalization_Edge" source="_Laj_kY8qEeq5HrfdV5ATIg" target="_LakmtI8qEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_LambsY8qEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8ass4I80Eeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Lambso8qEeq5HrfdV5ATIg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_Lambs48qEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_YyIeQIhrEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LambtI8qEeq5HrfdV5ATIg" points="[1150, 50, -643984, -643984]$[630, -88, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LambtY8qEeq5HrfdV5ATIg" id="(0.297029702970297,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Lambto8qEeq5HrfdV5ATIg" id="(0.7446808510638298,0.996763754045307)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_LambuI8qEeq5HrfdV5ATIg" type="Generalization_Edge" source="_LalN248qEeq5HrfdV5ATIg" target="_Lal1F48qEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_LambuY8qEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Lambuo8qEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Lambu48qEeq5HrfdV5ATIg" x="-1" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_LambvI8qEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_ToeSQIhqEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LambvY8qEeq5HrfdV5ATIg" points="[1715, 755, -643984, -643984]$[1655, 618, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Lambvo8qEeq5HrfdV5ATIg" id="(0.24390243902439024,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Lambv48qEeq5HrfdV5ATIg" id="(0.6944444444444444,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_LambwI8qEeq5HrfdV5ATIg" type="Generalization_Edge" source="_Lal07Y8qEeq5HrfdV5ATIg" target="_Lakmxo8qEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_LambwY8qEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Lambwo8qEeq5HrfdV5ATIg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Lambw48qEeq5HrfdV5ATIg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_LambxI8qEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_uCkygIhqEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LambxY8qEeq5HrfdV5ATIg" points="[2490, 555, -643984, -643984]$[2410, 418, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Lambxo8qEeq5HrfdV5ATIg" id="(0.2926829268292683,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Lambx48qEeq5HrfdV5ATIg" id="(0.9942196531791907,0.970873786407767)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_mJdKQJm6Eeq0jfmjFzaebA" type="Generalization_Edge" source="_hxfEcJm6Eeq0jfmjFzaebA" target="_Laj_kY8qEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_mJdKQ5m6Eeq0jfmjFzaebA" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_mJdKRJm6Eeq0jfmjFzaebA" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_mJdKQZm6Eeq0jfmjFzaebA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_mI2tUJm6Eeq0jfmjFzaebA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_mJdKQpm6Eeq0jfmjFzaebA" points="[600, 320, -643984, -643984]$[1100, 171, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mKpdEJm6Eeq0jfmjFzaebA" id="(0.8,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mKpdEZm6Eeq0jfmjFzaebA" id="(0.0,0.9327731092436975)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_0s93AJm6Eeq0jfmjFzaebA" type="Generalization_Edge" source="_w1FmgJm6Eeq0jfmjFzaebA" target="_Laj_kY8qEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_0s93A5m6Eeq0jfmjFzaebA" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_0s93BJm6Eeq0jfmjFzaebA" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_0s93AZm6Eeq0jfmjFzaebA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_0seHwJm6Eeq0jfmjFzaebA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0s93Apm6Eeq0jfmjFzaebA" points="[460, 320, -643984, -643984]$[1100, 169, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0uEDMJm6Eeq0jfmjFzaebA" id="(0.8,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0uEDMZm6Eeq0jfmjFzaebA" id="(0.0,0.9159663865546218)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_HyzfcJm7Eeq0jfmjFzaebA" type="Generalization_Edge" source="_DSsxUJm7Eeq0jfmjFzaebA" target="_Lakmxo8qEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Hy0GgJm7Eeq0jfmjFzaebA" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Hy0GgZm7Eeq0jfmjFzaebA" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_HyzfcZm7Eeq0jfmjFzaebA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_HyWzgJm7Eeq0jfmjFzaebA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Hyzfcpm7Eeq0jfmjFzaebA" points="[2100, 560, -643984, -643984]$[2500, 400, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Hz0zIJm7Eeq0jfmjFzaebA" id="(0.7947019867549668,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Hz0zIZm7Eeq0jfmjFzaebA" id="(0.0,0.7766990291262136)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_8ZhpMI8pEeq5HrfdV5ATIg" type="PapyrusUMLProfileDiagram" name="Vision_layers" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_D9vorY8qEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_D9voro8qEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_D9vor48qEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_D9vosI8qEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_-r78AIhrEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_D9vosY8qEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_D9voso8qEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#___G0EIhrEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_D9vos48qEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_D9votI8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_D9votY8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_D9voto8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D9vot48qEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_D9vouI8qEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_D9vouY8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_D9vouo8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_D9vou48qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D9vovI8qEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_9D3yAIhrEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D9vowI8qEeq5HrfdV5ATIg" x="17490" y="1090"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_D9vow48qEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_D9voxI8qEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_D9voxY8qEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_D9voxo8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_D9vox48qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_D9voyI8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D9voyY8qEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_D9voyo8qEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_D9voy48qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_D9vozI8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_D9vozY8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D9vozo8qEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_FiUlAIhsEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D9vo0o8qEeq5HrfdV5ATIg" x="17890" y="1090"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_D9wPoI8qEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_D9wPoY8qEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_D9wPoo8qEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_D9wPo48qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_D9wPpI8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_D9wPpY8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D9wPpo8qEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_D9wPp48qEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_D9wPqI8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_D9wPqY8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_D9wPqo8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D9wPq48qEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_ExzHAIhsEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D9wPr48qEeq5HrfdV5ATIg" x="17730" y="1090"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_D9wPsI8qEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_D9wPsY8qEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_D9wPso8qEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_D9wPs48qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_D9wPtI8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_D9wPtY8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D9wPto8qEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_D9wPt48qEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_D9wPuI8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_D9wPuY8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_D9wPuo8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D9wPu48qEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_iLwgEIhrEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D9wPv48qEeq5HrfdV5ATIg" x="17830" y="690"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_D9wPwI8qEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_D9wPwY8qEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_D9wPwo8qEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_D9wPw48qEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_507w0IhrEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_D9wPxI8qEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_D9wPxY8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_D9wPxo8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_D9wPx48qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D9wPyI8qEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_D9wPyY8qEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_D9wPyo8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_D9wPy48qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_D9wPzI8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D9wPzY8qEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_2p5YMIhrEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D9wP0Y8qEeq5HrfdV5ATIg" x="17970" y="870"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_D9wP0o8qEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_D9wP048qEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_D9wP1I8qEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_D9wP1Y8qEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_xJ4sQIhrEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_D9wP1o8qEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_D9wP148qEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_yEO0oIhrEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_D9wP2I8qEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_D9wP2Y8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_D9wP2o8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_D9wP248qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D9wP3I8qEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_D9wP3Y8qEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_D9wP3o8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_D9wP348qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_D9wP4I8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D9wP4Y8qEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_t32TwIhrEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D9wP5Y8qEeq5HrfdV5ATIg" x="17610" y="870"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_8ZhpMY8pEeq5HrfdV5ATIg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_8ZhpMo8pEeq5HrfdV5ATIg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_8ZhpM48pEeq5HrfdV5ATIg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    </styles>
+    <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_y_tHYK8YEeqhVOlV64dXmA" name="css_stylesheets" eObjectListValue="_mci3oJm1Eeq8nv7tV9lOqQ"/>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    <edges xmi:type="notation:Connector" xmi:id="_D9vBgI8qEeq5HrfdV5ATIg" type="Generalization_Edge" source="_D9wP0o8qEeq5HrfdV5ATIg" target="_D9wPsI8qEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_D9vBgY8qEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_D9vBgo8qEeq5HrfdV5ATIg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_D9vBg48qEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_MhVlkIhsEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_D9vBhI8qEeq5HrfdV5ATIg" points="[17740, 860, -643984, -643984]$[17860, 780, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D9vBhY8qEeq5HrfdV5ATIg" id="(0.7035175879396985,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D9vBho8qEeq5HrfdV5ATIg" id="(0.4,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_D9vokY8qEeq5HrfdV5ATIg" type="Generalization_Edge" source="_D9wPwI8qEeq5HrfdV5ATIg" target="_D9wPsI8qEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_D9voko8qEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_D9vok48qEeq5HrfdV5ATIg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_D9volI8qEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_L7Zm8IhsEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_D9volY8qEeq5HrfdV5ATIg" points="[18060, 860, -643984, -643984]$[17900, 780, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D9volo8qEeq5HrfdV5ATIg" id="(0.4694835680751174,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D9vol48qEeq5HrfdV5ATIg" id="(0.8,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_D9vomI8qEeq5HrfdV5ATIg" type="Generalization_Edge" source="_D9wPoI8qEeq5HrfdV5ATIg" target="_D9wP0o8qEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_D9vomY8qEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_D9vomo8qEeq5HrfdV5ATIg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_D9vom48qEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_KqD64IhsEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_D9vonI8qEeq5HrfdV5ATIg" points="[17780, 1080, -643984, -643984]$[17700, 978, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D9vonY8qEeq5HrfdV5ATIg" id="(0.46153846153846156,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D9vono8qEeq5HrfdV5ATIg" id="(0.5025125628140703,0.9971988795518204)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_D9von48qEeq5HrfdV5ATIg" type="Generalization_Edge" source="_D9vorY8qEeq5HrfdV5ATIg" target="_D9wP0o8qEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_D9vooI8qEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_D9vooY8qEeq5HrfdV5ATIg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_D9vooo8qEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_KFjfoIhsEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_D9voo48qEeq5HrfdV5ATIg" points="[17620, 1080, -643984, -643984]$[17640, 978, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D9vopI8qEeq5HrfdV5ATIg" id="(0.6763285024154589,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D9vopY8qEeq5HrfdV5ATIg" id="(0.20100502512562815,0.9971988795518204)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_D9vopo8qEeq5HrfdV5ATIg" type="Generalization_Edge" source="_D9vow48qEeq5HrfdV5ATIg" target="_D9wP0o8qEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_D9vop48qEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_D9voqI8qEeq5HrfdV5ATIg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_D9voqY8qEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_LUKn0IhsEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_D9voqo8qEeq5HrfdV5ATIg" points="[17940, 1080, -643984, -643984]$[17760, 978, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D9voq48qEeq5HrfdV5ATIg" id="(0.46511627906976744,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_D9vorI8qEeq5HrfdV5ATIg" id="(0.8040201005025126,0.9971988795518204)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_-5u8II8pEeq5HrfdV5ATIg" type="PapyrusUMLProfileDiagram" name="DataParallel_layers_(multi-GPU, distributed)" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_BNa2B48qEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_BNa2CI8qEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_BNa2CY8qEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_BNa2Co8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_BNa2C48qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_BNa2DI8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BNa2DY8qEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_BNa2Do8qEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_BNa2D48qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_BNa2EI8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_BNa2EY8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BNa2Eo8qEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_2bnZsIhtEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BNa2Fo8qEeq5HrfdV5ATIg" x="18650" y="950"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_BNa2F48qEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_BNa2GI8qEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_BNa2GY8qEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_BNa2Go8qEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_rBanQIhtEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_BNa2G48qEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_BNa2HI8qEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_r6Q60IhtEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_BNa2HY8qEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_BNa2Ho8qEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_stpfkIhtEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_BNa2H48qEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_BNa2II8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_BNa2IY8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_BNa2Io8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BNa2I48qEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_BNa2JI8qEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_BNa2JY8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_BNa2Jo8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_BNa2J48qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BNa2KI8qEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_jq9XEIhtEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BNa2LI8qEeq5HrfdV5ATIg" x="18370" y="690"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_BNa2LY8qEeq5HrfdV5ATIg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_BNa2Lo8qEeq5HrfdV5ATIg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_BNa2L48qEeq5HrfdV5ATIg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_BNa2MI8qEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_vpBrkIhtEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_BNa2MY8qEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_BNa2Mo8qEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_xG4JoIhtEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_BNa2M48qEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_BNa2NI8qEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_yJonIIhtEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_BNa2NY8qEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_BNa2No8qEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_zcpuMIhtEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_BNa2N48qEeq5HrfdV5ATIg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_BNa2OI8qEeq5HrfdV5ATIg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_1KdT0IhtEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_BNa2OY8qEeq5HrfdV5ATIg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_BNa2Oo8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_BNa2O48qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_BNa2PI8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BNa2PY8qEeq5HrfdV5ATIg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_BNa2Po8qEeq5HrfdV5ATIg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_BNa2P48qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_BNa2QI8qEeq5HrfdV5ATIg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_BNa2QY8qEeq5HrfdV5ATIg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BNa2Qo8qEeq5HrfdV5ATIg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_tsGr4IhtEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BNa2Ro8qEeq5HrfdV5ATIg" x="18310" y="950"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_-5u8IY8pEeq5HrfdV5ATIg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_-5u8Io8pEeq5HrfdV5ATIg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_-5u8I48pEeq5HrfdV5ATIg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    </styles>
+    <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_z8xzoK8YEeqhVOlV64dXmA" name="css_stylesheets" eObjectListValue="_mci3oJm1Eeq8nv7tV9lOqQ"/>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    <edges xmi:type="notation:Connector" xmi:id="_BNaO8I8qEeq5HrfdV5ATIg" type="Generalization_Edge" source="_BNa2LY8qEeq5HrfdV5ATIg" target="_BNa2F48qEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_BNaO8Y8qEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_BNaO8o8qEeq5HrfdV5ATIg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_BNaO848qEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_5KbJUIhtEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_BNaO9I8qEeq5HrfdV5ATIg" points="[18420, 940, -643984, -643984]$[18440, 814, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BNaO9Y8qEeq5HrfdV5ATIg" id="(0.44280442804428044,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BNaO9o8qEeq5HrfdV5ATIg" id="(0.3225806451612903,0.9975308641975306)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_BNa2AI8qEeq5HrfdV5ATIg" type="Generalization_Edge" source="_BNa2B48qEeq5HrfdV5ATIg" target="_BNa2F48qEeq5HrfdV5ATIg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_BNa2AY8qEeq5HrfdV5ATIg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_BNa2Ao8qEeq5HrfdV5ATIg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_BNa2A48qEeq5HrfdV5ATIg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_4pLdcIhtEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_BNa2BI8qEeq5HrfdV5ATIg" points="[18680, 940, -643984, -643984]$[18560, 814, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BNa2BY8qEeq5HrfdV5ATIg" id="(0.30303030303030304,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_BNa2Bo8qEeq5HrfdV5ATIg" id="(0.8064516129032258,0.9975308641975306)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_3Dkw8JT3Eeq5BK6mmo2rWg" type="PapyrusUMLProfileDiagram" name="Convolution_layers" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_O7mR6K8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7mR6a8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7mR6q8WEeqhVOlV64dXmA" visible="false" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7mR668WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7mR7K8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7mR7a8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7mR7q8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7mR768WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7mR8K8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7mR8a8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7mR8q8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7mR868WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_AfPLEIVKEeqvud4Ae2T3Lg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7mR968WEeqhVOlV64dXmA" x="580" y="800" width="121" height="61"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_O7mR-K8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7mR-a8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7mR-q8WEeqhVOlV64dXmA" visible="false" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7mR-68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7mR_K8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7mR_a8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7mR_q8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7mR_68WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7mSAK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7mSAa8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7mSAq8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7mSA68WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_6j6cIIVJEeqvud4Ae2T3Lg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7mSB68WEeqhVOlV64dXmA" x="300" y="800" height="61"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_O7m48K8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7m48a8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7m48q8WEeqhVOlV64dXmA" visible="false" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7m4868WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7m49K8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7m49a8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7m49q8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7m4968WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7m4-K8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7m4-a8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7m4-q8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7m4-68WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_2Ej78IVJEeqvud4Ae2T3Lg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7m4_68WEeqhVOlV64dXmA" x="160" y="800" height="61"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_O7m5AK8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7m5Aa8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7m5Aq8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_O7m5A68WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_NbNPsKSuEeqmTOsCAzVBxg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_O7m5BK8WEeqhVOlV64dXmA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7m5Ba8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7m5Bq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7m5B68WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7m5CK8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7m5Ca8WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7m5Cq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7m5C68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7m5DK8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7m5Da8WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_37PHIKStEeqmTOsCAzVBxg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7m5Ea8WEeqhVOlV64dXmA" x="480" y="420" width="241" height="61"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_O7m5Iq8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7m5I68WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7m5JK8WEeqhVOlV64dXmA" visible="false" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7m5Ja8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7m5Jq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7m5J68WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7m5KK8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7m5Ka8WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7m5Kq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7m5K68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7m5LK8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7m5La8WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_08Tc0KG4EeqsNvCDUfZJVA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7m5Ma8WEeqhVOlV64dXmA" x="920" y="800" width="121" height="58"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_O7m5Mq8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7m5M68WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7m5NK8WEeqhVOlV64dXmA" visible="false" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7m5Na8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7m5Nq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7m5N68WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7m5OK8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7m5Oa8WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7m5Oq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7m5O68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7m5PK8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7m5Pa8WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#__Er4oIVJEeqvud4Ae2T3Lg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7m5Qa8WEeqhVOlV64dXmA" x="440" y="800" width="121" height="61"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_O7ngJa8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7ngJq8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7ngJ68WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_O7ngKK8WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_SowbcKG1EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_O7ngKa8WEeqhVOlV64dXmA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7ngKq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7ngK68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7ngLK8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7ngLa8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7ngLq8WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7ngL68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7ngMK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7ngMa8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7ngMq8WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_RBqh0KG1EeqsNvCDUfZJVA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7ngNq8WEeqhVOlV64dXmA" x="440" y="700" width="261" height="61"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_O7ngN68WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7ngOK8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7ngOa8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_O7ngOq8WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_etxlIKG4EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_O7ngO68WEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_O7ngPK8WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_f_57YKG4EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_O7ngPa8WEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_O7ngPq8WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_hwRFwKG4EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_O7ngP68WEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_O7ngQK8WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_i2jYYKG4EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_O7ngQa8WEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_O7ngQq8WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_lF9PMKG4EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_O7ngQ68WEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_O7ngRK8WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_mtJ2gKG4EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_O7ngRa8WEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_O7ngRq8WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_oTAaAKG4EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_O7ngR68WEeqhVOlV64dXmA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7ngSK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7ngSa8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7ngSq8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7ngS68WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7ngTK8WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7ngTa8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7ngTq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7ngT68WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7ngUK8WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_d-jusKG4EeqsNvCDUfZJVA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7ngVK8WEeqhVOlV64dXmA" x="780" y="560" width="261" height="161"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_O7oHEK8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7oHEa8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7oHEq8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_O7oHE68WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_7rUZ4KG1EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_O7oHFK8WEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_O7oHFa8WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_85lj0KG1EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_O7oHFq8WEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_O7oHF68WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_ak_cwKG2EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_O7oHGK8WEeqhVOlV64dXmA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7oHGa8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7oHGq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7oHG68WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7oHHK8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7oHHa8WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7oHHq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7oHH68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7oHIK8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7oHIa8WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_5JUXMKG1EeqsNvCDUfZJVA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7oHJa8WEeqhVOlV64dXmA" x="260" y="560" width="241" height="101"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_O7oHJq8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7oHJ68WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7oHKK8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7oHKa8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7oHKq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7oHK68WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7oHLK8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7oHLa8WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7oHLq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7oHL68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7oHMK8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7oHMa8WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_8w4C8IVJEeqvud4Ae2T3Lg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7oHNa8WEeqhVOlV64dXmA" x="540" y="560"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_O7oHNq8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7oHN68WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7oHOK8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_O7oHOa8WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_MKi_YH5qEeqSHNFOHg2_Jw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_O7oHOq8WEeqhVOlV64dXmA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7oHO68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7oHPK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7oHPa8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7oHPq8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7oHP68WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7oHQK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7oHQa8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7oHQq8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7oHQ68WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_ISZCEH5qEeqSHNFOHg2_Jw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7oHR68WEeqhVOlV64dXmA" x="60" y="220" width="181" height="61"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_O7oHSK8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7oHSa8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7oHSq8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_O7oHS68WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_ZsHuAH5qEeqSHNFOHg2_Jw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_O7oHTK8WEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_O7oHTa8WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_a-bqcH5qEeqSHNFOHg2_Jw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_O7oHTq8WEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_O7oHT68WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_bcYxwH5qEeqSHNFOHg2_Jw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_O7oHUK8WEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_O7oHUa8WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_cR75sH5qEeqSHNFOHg2_Jw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_O7oHUq8WEeqhVOlV64dXmA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7oHU68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7oHVK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7oHVa8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7oHVq8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7oHV68WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7oHWK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7oHWa8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7oHWq8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7oHW68WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_YZ54MH5qEeqSHNFOHg2_Jw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7oHX68WEeqhVOlV64dXmA" x="60" y="20" width="381" height="121"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_O7oHYK8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7oHYa8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7oHYq8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_O7oHY68WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_SSgFUKG6EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_O7oHZK8WEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_O7oHZa8WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_ZHdK8KG6EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_O7ouIK8WEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_O7ouIa8WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_chtrUKG6EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_O7ouIq8WEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_O7ouI68WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_iro28KG6EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_O7ouJK8WEeqhVOlV64dXmA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7ouJa8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7ouJq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7ouJ68WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7ouKK8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7ouKa8WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7ouKq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7ouK68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7ouLK8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7ouLa8WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_Ip7BgKG6EeqsNvCDUfZJVA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7ouMa8WEeqhVOlV64dXmA" x="780" y="340" width="261"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_O7ouMq8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7ouM68WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7ouNK8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7ouNa8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7ouNq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7ouN68WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7ouOK8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7ouOa8WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7ouOq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7ouO68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7ouPK8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7ouPa8WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_anKPYH5pEeqSHNFOHg2_Jw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7ouQa8WEeqhVOlV64dXmA" x="280" y="220" width="161" height="61"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_O7ouYa8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7ouYq8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7ouY68WEeqhVOlV64dXmA" visible="false" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7ouZK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7ouZa8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7ouZq8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7ouZ68WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7ouaK8WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7ouaa8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7ouaq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7oua68WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7oubK8WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_34MmMKG4EeqsNvCDUfZJVA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7oucK8WEeqhVOlV64dXmA" x="780" y="800" height="61"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_O7ouca8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7oucq8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7ouc68WEeqhVOlV64dXmA" visible="false" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7oudK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7ouda8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7oudq8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7oud68WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7oueK8WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7ouea8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7oueq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7oue68WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7oufK8WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_g_SxQKG3EeqsNvCDUfZJVA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7ougK8WEeqhVOlV64dXmA" x="40" y="800" height="61"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_O7pVOK8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7pVOa8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7pVOq8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_O7pVO68WEeqhVOlV64dXmA" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_O7pVPK8WEeqhVOlV64dXmA" key="collapsed" value="true"/>
+        </eAnnotations>
+        <children xmi:type="notation:Shape" xmi:id="_O7pVPa8WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_xLDlAH5nEeqSHNFOHg2_Jw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_O7pVPq8WEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_O7pVP68WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_PgB_YH5oEeqSHNFOHg2_Jw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_O7pVQK8WEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_O7pVQa8WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_RrmfEH5oEeqSHNFOHg2_Jw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_O7pVQq8WEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_O7pVQ68WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_UPxE8H5oEeqSHNFOHg2_Jw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_O7pVRK8WEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_O7pVRa8WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_NJHtgKG2EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_O7pVRq8WEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_O7pVR68WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_Ou9p8KG2EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_O7pVSK8WEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_O7pVSa8WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_SXLt0KG2EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_O7pVSq8WEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_O7pVS68WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_THvoEKG2EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_O7pVTK8WEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_O7pVTa8WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_UiUvsKG2EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_O7pVTq8WEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_O7pVT68WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_kn6TMKG2EeqsNvCDUfZJVA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_O7pVUK8WEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_O7pVUa8WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_bGMOcKStEeqmTOsCAzVBxg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_O7pVUq8WEeqhVOlV64dXmA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7pVU68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7pVVK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7pVVa8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7pVVq8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_O7pVV68WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_O7pVWK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_O7pVWa8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_O7pVWq8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7pVW68WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_5DtswH2KEeqSHNFOHg2_Jw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O7pVX68WEeqhVOlV64dXmA" x="480" y="160" width="241" height="221"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_3DkxwZT3Eeq5BK6mmo2rWg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_3DkxwpT3Eeq5BK6mmo2rWg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_3Dkxw5T3Eeq5BK6mmo2rWg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_Nr2NYJOPEeqnY_bZg2Ebjg"/>
+    </styles>
+    <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_KngOIJnbEeqZJ7Fgbu454w" name="css_stylesheets" eObjectListValue="_mci3oJm1Eeq8nv7tV9lOqQ"/>
+    <edges xmi:type="notation:Connector" xmi:id="_3DkxxJT3Eeq5BK6mmo2rWg" type="Generalization_Edge">
+      <children xmi:type="notation:DecorationNode" xmi:id="_3DkxxZT3Eeq5BK6mmo2rWg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_3DkxxpT3Eeq5BK6mmo2rWg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3Dkxx5T3Eeq5BK6mmo2rWg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_3DkxyJT3Eeq5BK6mmo2rWg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3DkxyZT3Eeq5BK6mmo2rWg" points="[-676, 628, -643984, -643984]$[-716, 418, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3DkxypT3Eeq5BK6mmo2rWg" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Dkxy5T3Eeq5BK6mmo2rWg" id="(0.7373271889400922,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_3DkxzJT3Eeq5BK6mmo2rWg" type="Generalization_Edge">
+      <children xmi:type="notation:DecorationNode" xmi:id="_3DkxzZT3Eeq5BK6mmo2rWg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_3DkxzpT3Eeq5BK6mmo2rWg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3Dkxz5T3Eeq5BK6mmo2rWg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_3Dkx0JT3Eeq5BK6mmo2rWg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3Dkx0ZT3Eeq5BK6mmo2rWg" points="[-1356, 628, -643984, -643984]$[-1336, 475, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Dkx0pT3Eeq5BK6mmo2rWg" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Dkx05T3Eeq5BK6mmo2rWg" id="(0.4608294930875576,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_3Dkx1JT3Eeq5BK6mmo2rWg" type="Generalization_Edge">
+      <children xmi:type="notation:DecorationNode" xmi:id="_3Dkx1ZT3Eeq5BK6mmo2rWg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_3Dkx1pT3Eeq5BK6mmo2rWg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3Dkx15T3Eeq5BK6mmo2rWg" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_3Dkx2JT3Eeq5BK6mmo2rWg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3Dkx2ZT3Eeq5BK6mmo2rWg" points="[-1760, 1362, -643984, -643984]$[-1440, 1207, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Dkx2pT3Eeq5BK6mmo2rWg" id="(0.54,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Dkx25T3Eeq5BK6mmo2rWg" id="(0.4608294930875576,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_3Dkx3JT3Eeq5BK6mmo2rWg" type="Generalization_Edge">
+      <children xmi:type="notation:DecorationNode" xmi:id="_3Dkx3ZT3Eeq5BK6mmo2rWg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_3Dkx3pT3Eeq5BK6mmo2rWg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3Dkx35T3Eeq5BK6mmo2rWg" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_3Dkx4JT3Eeq5BK6mmo2rWg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3Dkx4ZT3Eeq5BK6mmo2rWg" points="[-576, -350, -643984, -643984]$[-516, -399, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Dkx4pT3Eeq5BK6mmo2rWg" id="(0.8248587570621468,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Dkx45T3Eeq5BK6mmo2rWg" id="(0.3081761006289308,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_3Dkx5JT3Eeq5BK6mmo2rWg" type="Generalization_Edge">
+      <children xmi:type="notation:DecorationNode" xmi:id="_3Dkx5ZT3Eeq5BK6mmo2rWg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_3Dkx5pT3Eeq5BK6mmo2rWg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3Dkx55T3Eeq5BK6mmo2rWg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_3Dkx6JT3Eeq5BK6mmo2rWg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3Dkx6ZT3Eeq5BK6mmo2rWg" points="[-1216, 628, -643984, -643984]$[-1336, 475, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Dkx6pT3Eeq5BK6mmo2rWg" id="(0.5660377358490566,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Dkx65T3Eeq5BK6mmo2rWg" id="(0.4608294930875576,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_3Dkx7JT3Eeq5BK6mmo2rWg" type="Generalization_Edge">
+      <children xmi:type="notation:DecorationNode" xmi:id="_3Dkx7ZT3Eeq5BK6mmo2rWg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_3Dkx7pT3Eeq5BK6mmo2rWg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3Dkx75T3Eeq5BK6mmo2rWg" x="-1" y="57"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_3Dkx8JT3Eeq5BK6mmo2rWg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3Dkx8ZT3Eeq5BK6mmo2rWg" points="[-916, 628, -643984, -643984]$[-1356, 475, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Dkx8pT3Eeq5BK6mmo2rWg" id="(0.7547169811320755,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Dkx85T3Eeq5BK6mmo2rWg" id="(0.3686635944700461,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_3Dkx9JT3Eeq5BK6mmo2rWg" type="Generalization_Edge">
+      <children xmi:type="notation:DecorationNode" xmi:id="_3Dkx9ZT3Eeq5BK6mmo2rWg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_3Dkx9pT3Eeq5BK6mmo2rWg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3Dkx95T3Eeq5BK6mmo2rWg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_3Dkx-JT3Eeq5BK6mmo2rWg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3Dkx-ZT3Eeq5BK6mmo2rWg" points="[-1096, 628, -643984, -643984]$[-1336, 475, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Dkx-pT3Eeq5BK6mmo2rWg" id="(0.37735849056603776,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3Dkx-5T3Eeq5BK6mmo2rWg" id="(0.4608294930875576,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_3Dkx_JT3Eeq5BK6mmo2rWg" type="Generalization_Edge">
+      <children xmi:type="notation:DecorationNode" xmi:id="_3Dkx_ZT3Eeq5BK6mmo2rWg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_3Dkx_pT3Eeq5BK6mmo2rWg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3Dkx_5T3Eeq5BK6mmo2rWg" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_3DkyAJT3Eeq5BK6mmo2rWg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3DkyAZT3Eeq5BK6mmo2rWg" points="[-1640, 1360, -643984, -643984]$[-1440, 1207, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3DkyApT3Eeq5BK6mmo2rWg" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3DkyA5T3Eeq5BK6mmo2rWg" id="(0.4858757062146893,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_3DkyBJT3Eeq5BK6mmo2rWg" type="Generalization_Edge">
+      <children xmi:type="notation:DecorationNode" xmi:id="_3DkyBZT3Eeq5BK6mmo2rWg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_3DkyBpT3Eeq5BK6mmo2rWg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3DkyB5T3Eeq5BK6mmo2rWg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_3DkyCJT3Eeq5BK6mmo2rWg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3DkyCZT3Eeq5BK6mmo2rWg" points="[-416, 628, -643984, -643984]$[-416, 411, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3DkyCpT3Eeq5BK6mmo2rWg" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3DkyC5T3Eeq5BK6mmo2rWg" id="(0.7373271889400922,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_3DkyDJT3Eeq5BK6mmo2rWg" type="Generalization_Edge">
+      <children xmi:type="notation:DecorationNode" xmi:id="_3DkyDZT3Eeq5BK6mmo2rWg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_3DkyDpT3Eeq5BK6mmo2rWg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3DkyD5T3Eeq5BK6mmo2rWg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_3DkyEJT3Eeq5BK6mmo2rWg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3DkyEZT3Eeq5BK6mmo2rWg" points="[-576, 310, -643984, -643984]$[-670, 270, -643984, -643984]$[-959, 161, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3DkyEpT3Eeq5BK6mmo2rWg" id="(0.0,0.02)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3DkyE5T3Eeq5BK6mmo2rWg" id="(0.8238993710691824,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_3DkyFJT3Eeq5BK6mmo2rWg" type="Generalization_Edge">
+      <children xmi:type="notation:DecorationNode" xmi:id="_3DkyFZT3Eeq5BK6mmo2rWg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_3DkyFpT3Eeq5BK6mmo2rWg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_3DkyF5T3Eeq5BK6mmo2rWg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_3DkyGJT3Eeq5BK6mmo2rWg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_3DkyGZT3Eeq5BK6mmo2rWg" points="[-370, -270, -643984, -643984]$[-370, -379, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3DkyGpT3Eeq5BK6mmo2rWg" id="(0.30414746543778803,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_3DkyG5T3Eeq5BK6mmo2rWg" id="(0.6163522012578616,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_O7lq0K8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_O7oHYK8WEeqhVOlV64dXmA" target="_O7pVOK8WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7lq0a8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="__xikQPjcEeq6c-2opUmylw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_O7lq0q8WEeqhVOlV64dXmA" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_O7lq068WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_gvxQoKSuEeqmTOsCAzVBxg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_O7lq1K8WEeqhVOlV64dXmA" points="[780, 360, -643984, -643984]$[681, 360, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7lq1a8WEeqhVOlV64dXmA" id="(0.0,0.136986301369863)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7lq1q8WEeqhVOlV64dXmA" id="(1.0,0.9049773755656109)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_O7mR4K8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_O7oHNq8WEeqhVOlV64dXmA" target="_O7oHSK8WEeqhVOlV64dXmA" routing="Rectilinear">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7mR4a8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_O7mR4q8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_O7mR468WEeqhVOlV64dXmA" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_O7mR5K8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_J9Ae4H5sEeqSHNFOHg2_Jw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_O7mR5a8WEeqhVOlV64dXmA" points="[160, 220, -643984, -643984]$[160, 180, -643984, -643984]$[160, 141, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7mR5q8WEeqhVOlV64dXmA" id="(0.5524861878453039,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7mR568WEeqhVOlV64dXmA" id="(0.26246719160104987,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_O7mSCK8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_O7ngJa8WEeqhVOlV64dXmA" target="_O7oHEK8WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7mSCa8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_O7mSCq8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_O7mSC68WEeqhVOlV64dXmA" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_O7mSDK8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_RL6_IKG3EeqsNvCDUfZJVA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_O7mSDa8WEeqhVOlV64dXmA" points="[460, 880, -643984, -643984]$[460, 820, -643984, -643984]$[460, 781, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7mSDq8WEeqhVOlV64dXmA" id="(0.07662835249042145,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7mSD68WEeqhVOlV64dXmA" id="(0.8298755186721992,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_O7mSEK8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_O7ouYa8WEeqhVOlV64dXmA" target="_O7ngN68WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7mSEa8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_O7mSEq8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_O7mSE68WEeqhVOlV64dXmA" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_O7mSFK8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_L9aA8KG5EeqsNvCDUfZJVA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_O7mSFa8WEeqhVOlV64dXmA" points="[880, 800, -643984, -643984]$[880, 760, -643984, -643984]$[840, 760, -643984, -643984]$[840, 721, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7mSFq8WEeqhVOlV64dXmA" id="(0.5309734513274337,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7mSF68WEeqhVOlV64dXmA" id="(0.22988505747126436,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_O7m5Eq8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_O7pVOK8WEeqhVOlV64dXmA" target="_O7oHSK8WEeqhVOlV64dXmA" routing="Rectilinear">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_GcXyoPjfEeq6c-2opUmylw" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_GcXyofjfEeq6c-2opUmylw" key="routing" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7m5E68WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_O7m5FK8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_O7m5Fa8WEeqhVOlV64dXmA" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_O7m5Fq8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_JBpp4H5sEeqSHNFOHg2_Jw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_O7m5F68WEeqhVOlV64dXmA" points="[560, 160, -643984, -643984]$[560, 100, -643984, -643984]$[900, 100, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7m5GK8WEeqhVOlV64dXmA" id="(0.4979253112033195,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7m5Ga8WEeqhVOlV64dXmA" id="(1.0,0.6611570247933884)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_O7m5Gq8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_O7mR6K8WEeqhVOlV64dXmA" target="_O7ngJa8WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7m5G68WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_O7m5HK8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_O7m5Ha8WEeqhVOlV64dXmA" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_O7m5Hq8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_Qt4YQKG3EeqsNvCDUfZJVA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_O7m5H68WEeqhVOlV64dXmA" points="[640, 920, -643984, -643984]$[640, 860, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7m5IK8WEeqhVOlV64dXmA" id="(0.49586776859504134,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7m5Ia8WEeqhVOlV64dXmA" id="(0.7662835249042146,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_O7ngAK8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_O7ouMq8WEeqhVOlV64dXmA" target="_O7oHSK8WEeqhVOlV64dXmA" routing="Rectilinear">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7ngAa8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_O7ngAq8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_O7ngA68WEeqhVOlV64dXmA" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_O7ngBK8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_Je4_gH5sEeqSHNFOHg2_Jw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_O7ngBa8WEeqhVOlV64dXmA" points="[360, 220, -643984, -643984]$[360, 141, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7ngBq8WEeqhVOlV64dXmA" id="(0.4968944099378882,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7ngB68WEeqhVOlV64dXmA" id="(0.7874015748031497,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_O7ngCK8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_O7ouca8WEeqhVOlV64dXmA" target="_O7oHEK8WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7ngCa8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_O7ngCq8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_O7ngC68WEeqhVOlV64dXmA" x="-1" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_O7ngDK8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_q1mIAKG3EeqsNvCDUfZJVA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_O7ngDa8WEeqhVOlV64dXmA" points="[80, 800, -643984, -643984]$[80, 720, -643984, -643984]$[320, 720, -643984, -643984]$[320, 661, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7ngDq8WEeqhVOlV64dXmA" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7ngD68WEeqhVOlV64dXmA" id="(0.24896265560165975,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_O7ngEK8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_O7oHEK8WEeqhVOlV64dXmA" target="_O7m5AK8WEeqhVOlV64dXmA" routing="Tree">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7ngEa8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_JDepsPjdEeq6c-2opUmylw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_O7ngEq8WEeqhVOlV64dXmA" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_O7ngE68WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_QvZkUKSuEeqmTOsCAzVBxg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_O7ngFK8WEeqhVOlV64dXmA" points="[340, 770, -643984, -643984]$[340, 640, -643984, -643984]$[680, 640, -643984, -643984]$[680, 560, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7ngFa8WEeqhVOlV64dXmA" id="(0.33195020746887965,1.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7ngFq8WEeqhVOlV64dXmA" id="(0.8298755186721992,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_O7ngF68WEeqhVOlV64dXmA" type="Generalization_Edge" source="_O7ngN68WEeqhVOlV64dXmA" target="_O7m5AK8WEeqhVOlV64dXmA" routing="Tree">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7ngGK8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_JE1UkPjdEeq6c-2opUmylw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_O7ngGa8WEeqhVOlV64dXmA" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_O7ngGq8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_Rvo5UKSuEeqmTOsCAzVBxg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_O7ngG68WEeqhVOlV64dXmA" points="[920, 560, -643984, -643984]$[920, 520, -643984, -643984]$[600, 520, -643984, -643984]$[600, 481, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7ngHK8WEeqhVOlV64dXmA" id="(0.5363984674329502,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7ngHa8WEeqhVOlV64dXmA" id="(0.4979253112033195,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_O7ngHq8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_O7m5AK8WEeqhVOlV64dXmA" target="_O7pVOK8WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7ngH68WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="__yEIsPjcEeq6c-2opUmylw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_O7ngIK8WEeqhVOlV64dXmA" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_O7ngIa8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_SbB_sKSuEeqmTOsCAzVBxg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_O7ngIq8WEeqhVOlV64dXmA" points="[660, 420, -643984, -643984]$[660, 400, -643984, -643984]$[680, 400, -643984, -643984]$[680, 381, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7ngI68WEeqhVOlV64dXmA" id="(0.4979253112033195,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7ngJK8WEeqhVOlV64dXmA" id="(0.4979253112033195,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_O7ouQq8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_O7mR-K8WEeqhVOlV64dXmA" target="_O7oHEK8WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7ouQ68WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_O7ouRK8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_O7ouRa8WEeqhVOlV64dXmA" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_O7ouRq8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_pt11wKG3EeqsNvCDUfZJVA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_O7ouR68WEeqhVOlV64dXmA" points="[360, 800, -643984, -643984]$[360, 720, -643984, -643984]$[320, 720, -643984, -643984]$[320, 661, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7ouSK8WEeqhVOlV64dXmA" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7ouSa8WEeqhVOlV64dXmA" id="(0.24896265560165975,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_O7ouSq8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_O7oHJq8WEeqhVOlV64dXmA" target="_O7m5AK8WEeqhVOlV64dXmA" routing="Tree">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7ouS68WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_JFW5APjdEeq6c-2opUmylw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_O7ouTK8WEeqhVOlV64dXmA" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_O7ouTa8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_ROpsIKSuEeqmTOsCAzVBxg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_O7ouTq8WEeqhVOlV64dXmA" points="[600, 560, -643984, -643984]$[600, 520, -643984, -643984]$[720, 520, -643984, -643984]$[720, 481, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7ouT68WEeqhVOlV64dXmA" id="(0.5357142857142857,1.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7ouUK8WEeqhVOlV64dXmA" id="(0.8298755186721992,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_O7ouUa8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_O7m48K8WEeqhVOlV64dXmA" target="_O7oHEK8WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7ouUq8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_O7ouU68WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_O7ouVK8WEeqhVOlV64dXmA" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_O7ouVa8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_qNQVoKG3EeqsNvCDUfZJVA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_O7ouVq8WEeqhVOlV64dXmA" points="[200, 800, -643984, -643984]$[200, 720, -643984, -643984]$[320, 720, -643984, -643984]$[320, 661, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7ouV68WEeqhVOlV64dXmA" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7ouWK8WEeqhVOlV64dXmA" id="(0.24896265560165975,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_O7ouWa8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_O7m5Iq8WEeqhVOlV64dXmA" target="_O7ngN68WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7ouWq8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_O7ouW68WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_O7ouXK8WEeqhVOlV64dXmA" x="-2" y="57"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_O7ouXa8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_KvNvgKG5EeqsNvCDUfZJVA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_O7ouXq8WEeqhVOlV64dXmA" points="[1020, 800, -643984, -643984]$[1020, 760, -643984, -643984]$[980, 760, -643984, -643984]$[980, 721, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7ouX68WEeqhVOlV64dXmA" id="(0.49586776859504134,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7ouYK8WEeqhVOlV64dXmA" id="(0.7662835249042146,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_O7pVMK8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_O7m5Mq8WEeqhVOlV64dXmA" target="_O7ngJa8WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_O7pVMa8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_O7pVMq8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_O7pVM68WEeqhVOlV64dXmA" x="-1" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_O7pVNK8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_QScZcKG3EeqsNvCDUfZJVA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_O7pVNa8WEeqhVOlV64dXmA" points="[500, 920, -643984, -643984]$[500, 860, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7pVNq8WEeqhVOlV64dXmA" id="(0.49586776859504134,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_O7pVN68WEeqhVOlV64dXmA" id="(0.22988505747126436,1.0)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_xkHZcJUJEeqWd_6S3mbYXg" type="PapyrusUMLProfileDiagram" name="Module" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_h8FXiKD4Eeqvvbr3PHPJ5Q" type="Stereotype_Shape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_h8FXiaD4Eeqvvbr3PHPJ5Q" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_h8FXiqD4Eeqvvbr3PHPJ5Q" key="canonical" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_h8FXi6D4Eeqvvbr3PHPJ5Q" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_h8FXjKD4Eeqvvbr3PHPJ5Q" type="Stereotype_AttributeCompartment">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_BDTAYOawEeq2yMJqys2DtQ" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BDTncOawEeq2yMJqys2DtQ" key="mutable" value="true"/>
+        </eAnnotations>
+        <children xmi:type="notation:Shape" xmi:id="_h8FXjaD4Eeqvvbr3PHPJ5Q" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_7EMR4IhuEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_h8FXjqD4Eeqvvbr3PHPJ5Q"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_h8FXj6D4Eeqvvbr3PHPJ5Q" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_7vDMwIhuEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_h8FXkKD4Eeqvvbr3PHPJ5Q"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_h8FXkaD4Eeqvvbr3PHPJ5Q" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_9DLHEIhuEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_h8FXkqD4Eeqvvbr3PHPJ5Q"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_h8FXk6D4Eeqvvbr3PHPJ5Q" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_ivxlgIvAEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_h8FXlKD4Eeqvvbr3PHPJ5Q"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_A_YwwOawEeq2yMJqys2DtQ" type="Property_ClassAttributeLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_BDTnceawEeq2yMJqys2DtQ" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BDTncuawEeq2yMJqys2DtQ" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:Property" href="AIML.profile.uml#__N7qULYUEeq1Koq3J5meEA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_A_YwweawEeq2yMJqys2DtQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_A_YwwuawEeq2yMJqys2DtQ" type="Property_ClassAttributeLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_BDTnc-awEeq2yMJqys2DtQ" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BDTndOawEeq2yMJqys2DtQ" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_AtDTsLYVEeq1Koq3J5meEA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_A_Yww-awEeq2yMJqys2DtQ"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_h8FXlaD4Eeqvvbr3PHPJ5Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_h8FXlqD4Eeqvvbr3PHPJ5Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_h8FXl6D4Eeqvvbr3PHPJ5Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_h8FXmKD4Eeqvvbr3PHPJ5Q"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_h8FXmaD4Eeqvvbr3PHPJ5Q" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_h8FXmqD4Eeqvvbr3PHPJ5Q"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_h8FXm6D4Eeqvvbr3PHPJ5Q"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_h8FXnKD4Eeqvvbr3PHPJ5Q"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_h8FXnaD4Eeqvvbr3PHPJ5Q"/>
+      </children>
+      <styles xmi:type="notation:CanonicalStyle" xmi:id="_h8FXnqD4Eeqvvbr3PHPJ5Q"/>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_2E9coH2KEeqSHNFOHg2_Jw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_h8FXoqD4Eeqvvbr3PHPJ5Q" x="386" y="323"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_h8FXpKD4Eeqvvbr3PHPJ5Q" type="Class_MetaclassShape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_h8FXpaD4Eeqvvbr3PHPJ5Q" type="Class_MetaclassNameLabel"/>
+      <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_h8FXtKD4Eeqvvbr3PHPJ5Q" x="404" y="111"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Ti8EYPmcEeqCRcDdPeQY2A" type="StereotypeComment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_Ti8EYfmcEeqCRcDdPeQY2A"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Ti8EY_mcEeqCRcDdPeQY2A" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ti8EYvmcEeqCRcDdPeQY2A" x="604" y="111"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_xkHZcZUJEeqWd_6S3mbYXg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_xkHZcpUJEeqWd_6S3mbYXg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_xkHZc5UJEeqWd_6S3mbYXg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_u1dx8JT1Eeq5BK6mmo2rWg"/>
+    </styles>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_u1dx8JT1Eeq5BK6mmo2rWg"/>
+    <edges xmi:type="notation:Connector" xmi:id="_h8KP-KD4Eeqvvbr3PHPJ5Q" type="Extension_Edge" source="_h8FXiKD4Eeqvvbr3PHPJ5Q" target="_h8FXpKD4Eeqvvbr3PHPJ5Q">
+      <styles xmi:type="notation:FontStyle" xmi:id="_h8KP-aD4Eeqvvbr3PHPJ5Q"/>
+      <element xmi:type="uml:Extension" href="AIML.profile.uml#_n3BRAH5rEeqSHNFOHg2_Jw"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_h8KP-qD4Eeqvvbr3PHPJ5Q" points="[376, 320, -643984, -643984]$[0, 0, -643984, -643984]"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_Ti8EZPmcEeqCRcDdPeQY2A" type="StereotypeCommentLink" source="_h8FXpKD4Eeqvvbr3PHPJ5Q" target="_Ti8EYPmcEeqCRcDdPeQY2A">
+      <styles xmi:type="notation:FontStyle" xmi:id="_Ti8EZfmcEeqCRcDdPeQY2A"/>
+      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_Ti8EafmcEeqCRcDdPeQY2A" name="BASE_ELEMENT">
+        <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+      </styles>
+      <element xsi:nil="true"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Ti8EZvmcEeqCRcDdPeQY2A" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ti8EZ_mcEeqCRcDdPeQY2A"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ti8EaPmcEeqCRcDdPeQY2A"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_yrEacJUJEeqWd_6S3mbYXg" type="PapyrusUMLProfileDiagram" name="Tensor" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_XZMIMJUKEeqWd_6S3mbYXg" type="Stereotype_Shape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZMIMZUKEeqWd_6S3mbYXg" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZMIMpUKEeqWd_6S3mbYXg" key="canonical" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_XZMIM5UKEeqWd_6S3mbYXg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_XZMINJUKEeqWd_6S3mbYXg" type="Stereotype_AttributeCompartment">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZMINZUKEeqWd_6S3mbYXg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZMINpUKEeqWd_6S3mbYXg" key="mutable" value="true"/>
+        </eAnnotations>
+        <children xmi:type="notation:Shape" xmi:id="_XZMIN5UKEeqWd_6S3mbYXg" type="Property_ClassAttributeLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZMIOJUKEeqWd_6S3mbYXg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZMIOZUKEeqWd_6S3mbYXg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_mlHloIhuEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_XZMIOpUKEeqWd_6S3mbYXg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_XZMIO5UKEeqWd_6S3mbYXg" type="Property_ClassAttributeLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZMIPJUKEeqWd_6S3mbYXg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZMIPZUKEeqWd_6S3mbYXg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_ncDNoIhuEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_XZMIPpUKEeqWd_6S3mbYXg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_XZMIP5UKEeqWd_6S3mbYXg" type="Property_ClassAttributeLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZMIQJUKEeqWd_6S3mbYXg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZMIQZUKEeqWd_6S3mbYXg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_oUgfoIhuEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_XZMIQpUKEeqWd_6S3mbYXg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_XZMIQ5UKEeqWd_6S3mbYXg" type="Property_ClassAttributeLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZMIRJUKEeqWd_6S3mbYXg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZMIRZUKEeqWd_6S3mbYXg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_o5TOwIhuEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_XZMIRpUKEeqWd_6S3mbYXg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_XZMIR5UKEeqWd_6S3mbYXg" type="Property_ClassAttributeLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZMISJUKEeqWd_6S3mbYXg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZMISZUKEeqWd_6S3mbYXg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_pnJzQIhuEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_XZMISpUKEeqWd_6S3mbYXg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_MZFSoK7mEeqHv_gpM7iTmA" type="Property_ClassAttributeLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_MgvZ0K7mEeqHv_gpM7iTmA" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MgwA4K7mEeqHv_gpM7iTmA" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_wocFsKWvEeq2dLYfuMvqgg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_MZFSoa7mEeqHv_gpM7iTmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_MZHu4K7mEeqHv_gpM7iTmA" type="Property_ClassAttributeLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_MgwA4a7mEeqHv_gpM7iTmA" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_MgwA4q7mEeqHv_gpM7iTmA" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_xs8PoKWvEeq2dLYfuMvqgg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_MZHu4a7mEeqHv_gpM7iTmA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_XZMIS5UKEeqWd_6S3mbYXg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_XZMITJUKEeqWd_6S3mbYXg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_XZMITZUKEeqWd_6S3mbYXg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XZMITpUKEeqWd_6S3mbYXg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_XZMIT5UKEeqWd_6S3mbYXg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_XZMIUJUKEeqWd_6S3mbYXg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_XZMIUZUKEeqWd_6S3mbYXg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_XZMIUpUKEeqWd_6S3mbYXg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XZMIU5UKEeqWd_6S3mbYXg"/>
+      </children>
+      <styles xmi:type="notation:CanonicalStyle" xmi:id="_XZMIVJUKEeqWd_6S3mbYXg"/>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_kkWnwIhuEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XZMIWJUKEeqWd_6S3mbYXg" x="270" y="350"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_XZN9YJUKEeqWd_6S3mbYXg" type="Enumeration_Shape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZN9YZUKEeqWd_6S3mbYXg" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZN9YpUKEeqWd_6S3mbYXg" key="canonical" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_XZN9Y5UKEeqWd_6S3mbYXg" type="Enumeration_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_XZN9ZJUKEeqWd_6S3mbYXg" type="Enumeration_LiteralCompartment">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZN9ZZUKEeqWd_6S3mbYXg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZN9ZpUKEeqWd_6S3mbYXg" key="mutable" value="true"/>
+        </eAnnotations>
+        <children xmi:type="notation:Shape" xmi:id="_XZN9Z5UKEeqWd_6S3mbYXg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZN9aJUKEeqWd_6S3mbYXg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZN9aZUKEeqWd_6S3mbYXg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_GeF-8IvIEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_XZN9apUKEeqWd_6S3mbYXg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_XZN9a5UKEeqWd_6S3mbYXg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZN9bJUKEeqWd_6S3mbYXg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZN9bZUKEeqWd_6S3mbYXg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_VdQs8IvIEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_XZN9bpUKEeqWd_6S3mbYXg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_XZN9b5UKEeqWd_6S3mbYXg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZN9cJUKEeqWd_6S3mbYXg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZN9cZUKEeqWd_6S3mbYXg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_YIbSsIvIEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_XZN9cpUKEeqWd_6S3mbYXg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_XZN9c5UKEeqWd_6S3mbYXg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZN9dJUKEeqWd_6S3mbYXg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZN9dZUKEeqWd_6S3mbYXg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_bZFyMIvIEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_XZN9dpUKEeqWd_6S3mbYXg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_XZN9d5UKEeqWd_6S3mbYXg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZN9eJUKEeqWd_6S3mbYXg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZN9eZUKEeqWd_6S3mbYXg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_czCAoIvIEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_XZN9epUKEeqWd_6S3mbYXg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_XZN9e5UKEeqWd_6S3mbYXg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZN9fJUKEeqWd_6S3mbYXg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZN9fZUKEeqWd_6S3mbYXg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_dzPgcIvIEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_XZN9fpUKEeqWd_6S3mbYXg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_XZN9f5UKEeqWd_6S3mbYXg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZN9gJUKEeqWd_6S3mbYXg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZN9gZUKEeqWd_6S3mbYXg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_ez5sMIvIEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_XZN9gpUKEeqWd_6S3mbYXg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_XZN9g5UKEeqWd_6S3mbYXg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZN9hJUKEeqWd_6S3mbYXg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZN9hZUKEeqWd_6S3mbYXg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_flb20IvIEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_XZN9hpUKEeqWd_6S3mbYXg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_XZN9h5UKEeqWd_6S3mbYXg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZN9iJUKEeqWd_6S3mbYXg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZN9iZUKEeqWd_6S3mbYXg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_gV4cUIvIEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_XZN9ipUKEeqWd_6S3mbYXg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_XZN9i5UKEeqWd_6S3mbYXg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_XZN9jJUKEeqWd_6S3mbYXg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_XZN9jZUKEeqWd_6S3mbYXg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XZN9jpUKEeqWd_6S3mbYXg"/>
+      </children>
+      <styles xmi:type="notation:CanonicalStyle" xmi:id="_XZN9j5UKEeqWd_6S3mbYXg"/>
+      <element xmi:type="uml:Enumeration" href="AIML.profile.uml#_D6R-YIvIEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XZN9k5UKEeqWd_6S3mbYXg" x="510" y="330"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_XZPLgJUKEeqWd_6S3mbYXg" type="Enumeration_Shape">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZPLgZUKEeqWd_6S3mbYXg" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZPLgpUKEeqWd_6S3mbYXg" key="canonical" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:DecorationNode" xmi:id="_XZPLg5UKEeqWd_6S3mbYXg" type="Enumeration_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_XZPLhJUKEeqWd_6S3mbYXg" type="Enumeration_LiteralCompartment">
+        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZPLhZUKEeqWd_6S3mbYXg" source="PapyrusCSSForceValue">
+          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZPLhpUKEeqWd_6S3mbYXg" key="mutable" value="true"/>
+        </eAnnotations>
+        <children xmi:type="notation:Shape" xmi:id="_XZPLh5UKEeqWd_6S3mbYXg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZPLiJUKEeqWd_6S3mbYXg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZPLiZUKEeqWd_6S3mbYXg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_FE7PwIvMEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_XZPLipUKEeqWd_6S3mbYXg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_XZPLi5UKEeqWd_6S3mbYXg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZPLjJUKEeqWd_6S3mbYXg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZPLjZUKEeqWd_6S3mbYXg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_GM6ykIvMEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_XZPLjpUKEeqWd_6S3mbYXg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_XZPLj5UKEeqWd_6S3mbYXg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZPLkJUKEeqWd_6S3mbYXg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZPLkZUKEeqWd_6S3mbYXg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_IXWp0IvMEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_XZPLkpUKEeqWd_6S3mbYXg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_XZPLk5UKEeqWd_6S3mbYXg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZPLlJUKEeqWd_6S3mbYXg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZPLlZUKEeqWd_6S3mbYXg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_KEe6AIvMEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_XZPLlpUKEeqWd_6S3mbYXg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_XZPLl5UKEeqWd_6S3mbYXg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZPLmJUKEeqWd_6S3mbYXg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZPLmZUKEeqWd_6S3mbYXg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_LzG_AIvMEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_XZPLmpUKEeqWd_6S3mbYXg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_XZPLm5UKEeqWd_6S3mbYXg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZPLnJUKEeqWd_6S3mbYXg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZPLnZUKEeqWd_6S3mbYXg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_MmTWgIvMEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_XZPLnpUKEeqWd_6S3mbYXg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_XZPLn5UKEeqWd_6S3mbYXg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZPLoJUKEeqWd_6S3mbYXg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZPLoZUKEeqWd_6S3mbYXg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_Ndwi8IvMEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_XZPLopUKEeqWd_6S3mbYXg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_XZPLo5UKEeqWd_6S3mbYXg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZPLpJUKEeqWd_6S3mbYXg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZPLpZUKEeqWd_6S3mbYXg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_OHKFQIvMEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_XZPLppUKEeqWd_6S3mbYXg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_XZPLp5UKEeqWd_6S3mbYXg" type="EnumerationLiteral_LiteralLabel">
+          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_XZPLqJUKEeqWd_6S3mbYXg" source="PapyrusCSSForceValue">
+            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_XZPLqZUKEeqWd_6S3mbYXg" key="mutable" value="true"/>
+          </eAnnotations>
+          <element xmi:type="uml:EnumerationLiteral" href="AIML.profile.uml#_O3f9EIvMEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_XZPLqpUKEeqWd_6S3mbYXg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_XZPLq5UKEeqWd_6S3mbYXg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_XZPLrJUKEeqWd_6S3mbYXg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_XZPLrZUKEeqWd_6S3mbYXg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XZPLrpUKEeqWd_6S3mbYXg"/>
+      </children>
+      <styles xmi:type="notation:CanonicalStyle" xmi:id="_XZPLr5UKEeqWd_6S3mbYXg"/>
+      <element xmi:type="uml:Enumeration" href="AIML.profile.uml#_AiQ84IvMEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XZPLs5UKEeqWd_6S3mbYXg" x="730" y="330"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_yrEacZUJEeqWd_6S3mbYXg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_yrEacpUJEeqWd_6S3mbYXg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_yrEac5UJEeqWd_6S3mbYXg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_38DjAJT1Eeq5BK6mmo2rWg"/>
+    </styles>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_38DjAJT1Eeq5BK6mmo2rWg"/>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_0Oxo4JUJEeqWd_6S3mbYXg" type="PapyrusUMLProfileDiagram" name="Type of Data" measurementUnit="Pixel">
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_0Oxo4ZUJEeqWd_6S3mbYXg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_0Oxo4pUJEeqWd_6S3mbYXg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_0Oxo45UJEeqWd_6S3mbYXg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Package" href="AIML.profile.uml#_-8tiUJT1Eeq5BK6mmo2rWg"/>
+    </styles>
+    <element xmi:type="uml:Package" href="AIML.profile.uml#_-8tiUJT1Eeq5BK6mmo2rWg"/>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_10d0UJUJEeqWd_6S3mbYXg" type="PapyrusUMLProfileDiagram" name="Pooling_layers" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_8sExCK8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sExCa8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sExCq8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sExC68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sExDK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sExDa8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sExDq8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sExD68WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sExEK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sExEa8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sExEq8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sExE68WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_vkD30IVTEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sExF68WEeqhVOlV64dXmA" x="970" y="550"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_8sExGK8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sExGa8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sExGq8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sExG68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sExHK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sExHa8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sExHq8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sExH68WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sExIK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sExIa8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sExIq8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sExI68WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_nMBrUIVSEeqvavUi0dxRAw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sExJ68WEeqhVOlV64dXmA" x="490" y="50"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_8sExKK8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sExKa8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sExKq8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sExK68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sExLK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sExLa8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sExLq8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sExL68WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sExMK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sExMa8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sExMq8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sExM68WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_sAviEIVTEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sExN68WEeqhVOlV64dXmA" x="1250" y="550"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_8sFYAK8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sFYAa8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sFYAq8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sFYA68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sFYBK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sFYBa8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sFYBq8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sFYB68WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sFYCK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sFYCa8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sFYCq8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sFYC68WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_QF-D0IVUEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sFYD68WEeqhVOlV64dXmA" x="-150" y="990"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_8sFYGK8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sFYGa8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sFYGq8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sFYG68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sFYHK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sFYHa8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sFYHq8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sFYH68WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sFYIK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sFYIa8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sFYIq8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sFYI68WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_Y8sCUIVTEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sFYJ68WEeqhVOlV64dXmA" x="1430" y="550"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_8sFYOK8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sFYOa8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sFYOq8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_8sFYO68WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_tPrdkIVXEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_8sFYPK8WEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_8sFYPa8WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_uGxdoIVXEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_8sFYPq8WEeqhVOlV64dXmA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sFYP68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sFYQK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sFYQa8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sFYQq8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sFYQ68WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sFYRK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sFYRa8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sFYRq8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sFYR68WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_rL8rQIVXEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sFYS68WEeqhVOlV64dXmA" x="-90" y="830"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_8sFYXK8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sFYXa8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sFYXq8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_8sFYX68WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_vvW-UIVSEeqvavUi0dxRAw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_8sFYYK8WEeqhVOlV64dXmA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sFYYa8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sFYYq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sFYY68WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sFYZK8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sFYZa8WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sFYZq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sFYZ68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sFYaK8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sFYaa8WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_spFw8IVSEeqvavUi0dxRAw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sFYba8WEeqhVOlV64dXmA" x="1070" y="210"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_8sF_F68WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sF_GK8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sF_Ga8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_8sF_Gq8WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_CkDW8IVUEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_8sF_G68WEeqhVOlV64dXmA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sF_HK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sF_Ha8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sF_Hq8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sF_H68WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sF_IK8WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sF_Ia8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sF_Iq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sF_I68WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sF_JK8WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_qYSzAIVSEeqvavUi0dxRAw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sF_KK8WEeqhVOlV64dXmA" x="330" y="210"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_8sF_Ma8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sF_Mq8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sF_M68WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_8sF_NK8WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_K3ga4IVUEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_8sF_Na8WEeqhVOlV64dXmA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sF_Nq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sF_N68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sF_OK8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sF_Oa8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sF_Oq8WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sF_O68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sF_PK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sF_Pa8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sF_Pq8WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_H6da8IVUEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sF_Qq8WEeqhVOlV64dXmA" x="30" y="330"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_8sF_S68WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sF_TK8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sF_Ta8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sF_Tq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sF_T68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sF_UK8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sF_Ua8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sF_Uq8WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sF_U68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sF_VK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sF_Va8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sF_Vq8WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_cdWFoIVTEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sF_Wq8WEeqhVOlV64dXmA" x="1570" y="550"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_8sF_Y68WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sF_ZK8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sF_Za8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sF_Zq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sF_Z68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sF_aK8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sF_aa8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sF_aq8WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sF_a68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sF_bK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sF_ba8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sF_bq8WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_2J_tMIVXEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sF_cq8WEeqhVOlV64dXmA" x="90" y="990"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_8sF_c68WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sF_dK8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sF_da8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sF_dq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sF_d68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sF_eK8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sF_ea8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sF_eq8WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sF_e68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sF_fK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sF_fa8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sF_fq8WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_XxquwIVVEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sF_gq8WEeqhVOlV64dXmA" x="330" y="630"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_8sF_g68WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sF_hK8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sF_ha8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_8sF_hq8WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_cdy_UIVYEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_8sF_h68WEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_8sF_iK8WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_dhzaAIVYEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_8sF_ia8WEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_8sF_iq8WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_fG5IgIVYEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_8sF_i68WEeqhVOlV64dXmA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sF_jK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sF_ja8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sF_jq8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sF_j68WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sF_kK8WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sF_ka8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sF_kq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sF_k68WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sF_lK8WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_Y3zwEIVYEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sF_mK8WEeqhVOlV64dXmA" x="710" y="370"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_8sGmIK8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sGmIa8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sGmIq8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_8sGmI68WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_Y5DYIIVWEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_8sGmJK8WEeqhVOlV64dXmA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sGmJa8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sGmJq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sGmJ68WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sGmKK8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sGmKa8WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sGmKq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sGmK68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sGmLK8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sGmLa8WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_TS3LsIVWEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sGmMa8WEeqhVOlV64dXmA" x="410" y="990"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_8sGmSq8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sGmS68WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sGmTK8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sGmTa8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sGmTq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sGmT68WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sGmUK8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sGmUa8WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sGmUq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sGmU68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sGmVK8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sGmVa8WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_b9-hsIVWEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sGmWa8WEeqhVOlV64dXmA" x="430" y="1130"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_8sGmWq8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sGmW68WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sGmXK8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sGmXa8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sGmXq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sGmX68WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sGmYK8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sGmYa8WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sGmYq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sGmY68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sGmZK8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sGmZa8WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_uVbhgIVTEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sGmaa8WEeqhVOlV64dXmA" x="1110" y="550"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_8sGmaq8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sGma68WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sGmbK8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sGmba8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sGmbq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sGmb68WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sGmcK8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sGmca8WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sGmcq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sGmc68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sGmdK8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sGmda8WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_ddho4IVWEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sGmea8WEeqhVOlV64dXmA" x="590" y="1130"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_8sGmeq8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sGme68WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sGmfK8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_8sGmfa8WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_mqeLgIVUEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_8sGmfq8WEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_8sGmf68WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_jxSQMKZ3EeqIr7xwFiWQGQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_8sGmgK8WEeqhVOlV64dXmA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sGmga8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sGmgq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sGmg68WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sGmhK8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sGmha8WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sGmhq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sGmh68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sGmiK8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sGmia8WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_h3EG4IVUEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sGmja8WEeqhVOlV64dXmA" x="-290" y="470"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_8sGmjq8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sGmj68WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sGmkK8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_8sGmka8WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_Ayj5QIVWEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_8sGmkq8WEeqhVOlV64dXmA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sGmk68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sGmlK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sGmla8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sGmlq8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sGml68WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sGmmK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sGmma8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sGmmq8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sGmm68WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_6bJEMIVVEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sGmn68WEeqhVOlV64dXmA" x="290" y="830" width="161" height="101"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_8sHNUK8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sHNUa8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sHNUq8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_8sHNU68WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_KnpSkIVXEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_8sHNVK8WEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_8sHNVa8WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_xBPDUKZ3EeqIr7xwFiWQGQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_8sHNVq8WEeqhVOlV64dXmA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sHNV68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sHNWK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sHNWa8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sHNWq8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sHNW68WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sHNXK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sHNXa8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sHNXq8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sHNX68WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_Cfb1UIVXEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sHNY68WEeqhVOlV64dXmA" x="10" y="650"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_8sHNdK8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sHNda8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sHNdq8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sHNd68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sHNeK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sHNea8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sHNeq8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sHNe68WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sHNfK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sHNfa8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sHNfq8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sHNf68WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_1WhB0IVXEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sHNg68WEeqhVOlV64dXmA" x="-30" y="990"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_8sHNhK8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sH0QK8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sH0Qa8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sH0Qq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sH0Q68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sH0RK8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sH0Ra8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sH0Rq8WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sH0R68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sH0SK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sH0Sa8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sH0Sq8WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_y5HSoIVUEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sH0Tq8WEeqhVOlV64dXmA" x="-150" y="650"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_8sH0T68WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sH0UK8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sH0Ua8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sH0Uq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sH0U68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sH0VK8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sH0Va8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sH0Vq8WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sH0V68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sH0WK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sH0Wa8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sH0Wq8WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_wYbekIVUEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sH0Xq8WEeqhVOlV64dXmA" x="-270" y="650"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_8sH0X68WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sH0YK8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sH0Ya8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_8sH0Yq8WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_3JChoIVSEeqvavUi0dxRAw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_8sH0Y68WEeqhVOlV64dXmA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sH0ZK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sH0Za8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sH0Zq8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sH0Z68WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sH0aK8WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sH0aa8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sH0aq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sH0a68WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sH0bK8WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_x9fp0IVSEeqvavUi0dxRAw"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sH0cK8WEeqhVOlV64dXmA" x="1510" y="350"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_8sH0ea8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sH0eq8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sH0e68WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sH0fK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sH0fa8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sH0fq8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sH0f68WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sH0gK8WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sH0ga8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sH0gq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sH0g68WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sH0hK8WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_aIzlQIVVEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sH0iK8WEeqhVOlV64dXmA" x="450" y="630"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_8sH0ia8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sH0iq8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sH0i68WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sH0jK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sH0ja8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sH0jq8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sH0j68WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sH0kK8WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sH0ka8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sH0kq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sH0k68WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sH0lK8WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_dQfZ0IVTEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sH0mK8WEeqhVOlV64dXmA" x="1710" y="550"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_8sIbWK8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sIbWa8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sIbWq8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sIbW68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sIbXK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sIbXa8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sIbXq8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sIbX68WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sIbYK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sIbYa8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sIbYq8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sIbY68WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_VqZVsIVUEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sIbZ68WEeqhVOlV64dXmA" x="250" y="990"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_8sIbeK8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sIbea8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sIbeq8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sIbe68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sIbfK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sIbfa8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sIbfq8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sIbf68WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sIbgK8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sIbga8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sIbgq8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sIbg68WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_SVcMEIVUEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sIbh68WEeqhVOlV64dXmA" x="-390" y="650"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_8sIbiK8WEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sIbia8WEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sIbiq8WEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_8sIbi68WEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_K5-DkIVVEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_8sIbjK8WEeqhVOlV64dXmA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sIbja8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sIbjq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sIbj68WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sIbkK8WEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_8sIbka8WEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_8sIbkq8WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_8sIbk68WEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_8sIblK8WEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sIbla8WEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_FjbcsIVVEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8sIbma8WEeqhVOlV64dXmA" x="390" y="490" width="181" height="81"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_10d0UZUJEeqWd_6S3mbYXg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_10d0UpUJEeqWd_6S3mbYXg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_10d0U5UJEeqWd_6S3mbYXg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_Deu8AJT2Eeq5BK6mmo2rWg"/>
+    </styles>
+    <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_7YfQoJm2Eeq8nv7tV9lOqQ" name="css_stylesheets" eObjectListValue="_mci3oJm1Eeq8nv7tV9lOqQ"/>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_Deu8AJT2Eeq5BK6mmo2rWg"/>
+    <edges xmi:type="notation:Connector" xmi:id="_8sEJ4K8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_8sExKK8WEeqhVOlV64dXmA" target="_8sFYXK8WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sEJ4a8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8sEJ4q8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_8sEJ468WEeqhVOlV64dXmA" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_8sEJ5K8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_7a4U0IVTEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8sEJ5a8WEeqhVOlV64dXmA" points="[1290, 530, -643984, -643984]$[1210, 293, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sEJ5q8WEeqhVOlV64dXmA" id="(0.5084745762711864,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sEJ568WEeqhVOlV64dXmA" id="(0.8121827411167513,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_8sEw8K8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_8sIbiK8WEeqhVOlV64dXmA" target="_8sF_Ma8WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sEw8a8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8sEw8q8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_8sEw868WEeqhVOlV64dXmA" x="-155" y="96"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_8sEw9K8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_TaQCkIVVEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8sEw9a8WEeqhVOlV64dXmA" points="[390, 470, -643984, -643984]$[70, 413, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sEw9q8WEeqhVOlV64dXmA" id="(0.4419889502762431,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sEw968WEeqhVOlV64dXmA" id="(0.7228915662650602,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_8sEw-K8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_8sIbWK8WEeqhVOlV64dXmA" target="_8sGmjq8WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sEw-a8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8sEw-q8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_8sEw-68WEeqhVOlV64dXmA" x="1" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_8sEw_K8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_geEBsIVWEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8sEw_a8WEeqhVOlV64dXmA" points="[190, 970, -643984, -643984]$[250, 911, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sEw_q8WEeqhVOlV64dXmA" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sEw_68WEeqhVOlV64dXmA" id="(0.37267080745341613,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_8sExAK8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_8sH0T68WEeqhVOlV64dXmA" target="_8sGmeq8WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sExAa8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8sExAq8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_8sExA68WEeqhVOlV64dXmA" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_8sExBK8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_2i3nkIVUEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8sExBa8WEeqhVOlV64dXmA" points="[-250, 630, -643984, -643984]$[-230, 553, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sExBq8WEeqhVOlV64dXmA" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sExB68WEeqhVOlV64dXmA" id="(0.4419889502762431,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_8sExOK8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_8sF_c68WEeqhVOlV64dXmA" target="_8sIbiK8WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sExOa8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8sExOq8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_8sExO68WEeqhVOlV64dXmA" x="128" y="114"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_8sExPK8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_dGXikIVVEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8sExPa8WEeqhVOlV64dXmA" points="[350, 610, -643984, -643984]$[350, 551, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sExPq8WEeqhVOlV64dXmA" id="(0.8,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sExP68WEeqhVOlV64dXmA" id="(0.11049723756906077,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_8sFYEK8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_8sGmjq8WEeqhVOlV64dXmA" target="_8sHNUK8WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sFYEa8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8sFYEq8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_8sFYE68WEeqhVOlV64dXmA" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_8sFYFK8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_eWQLMIVXEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8sFYFa8WEeqhVOlV64dXmA" points="[10, 810, -643984, -643984]$[90, 733, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sFYFq8WEeqhVOlV64dXmA" id="(0.4968944099378882,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sFYF68WEeqhVOlV64dXmA" id="(0.837696335078534,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_8sFYKK8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_8sF_S68WEeqhVOlV64dXmA" target="_8sH0X68WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sFYKa8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8sFYKq8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_8sFYK68WEeqhVOlV64dXmA" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_8sFYLK8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_hguf8IVTEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8sFYLa8WEeqhVOlV64dXmA" points="[1610, 530, -643984, -643984]$[1610, 433, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sFYLq8WEeqhVOlV64dXmA" id="(0.46153846153846156,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sFYL68WEeqhVOlV64dXmA" id="(0.5687203791469194,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_8sFYMK8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_8sGmSq8WEeqhVOlV64dXmA" target="_8sGmIK8WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sFYMa8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8sFYMq8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_8sFYM68WEeqhVOlV64dXmA" x="67" y="98"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_8sFYNK8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_e4Tk0IVWEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8sFYNa8WEeqhVOlV64dXmA" points="[390, 1110, -643984, -643984]$[410, 1073, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sFYNq8WEeqhVOlV64dXmA" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sFYN68WEeqhVOlV64dXmA" id="(0.36363636363636365,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_8sFYTK8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_8sGmWq8WEeqhVOlV64dXmA" target="_8sFYXK8WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sFYTa8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8sFYTq8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_8sFYT68WEeqhVOlV64dXmA" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_8sFYUK8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_8DbikIVTEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8sFYUa8WEeqhVOlV64dXmA" points="[1150, 530, -643984, -643984]$[1150, 293, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sFYUq8WEeqhVOlV64dXmA" id="(0.5084745762711864,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sFYU68WEeqhVOlV64dXmA" id="(0.5076142131979695,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_8sFYVK8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_8sFYAK8WEeqhVOlV64dXmA" target="_8sFYOK8WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sFYVa8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8sFYVq8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_8sFYV68WEeqhVOlV64dXmA" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_8sFYWK8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_5a1L0IVXEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8sFYWa8WEeqhVOlV64dXmA" points="[-130, 970, -643984, -643984]$[-70, 929, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sFYWq8WEeqhVOlV64dXmA" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sFYW68WEeqhVOlV64dXmA" id="(0.1895734597156398,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_8sFYbq8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_8sF_Y68WEeqhVOlV64dXmA" target="_8sFYOK8WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sF_EK8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8sF_Ea8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_8sF_Eq8WEeqhVOlV64dXmA" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_8sF_E68WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_6loyEIVXEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8sF_FK8WEeqhVOlV64dXmA" points="[130, 970, -643984, -643984]$[70, 929, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sF_Fa8WEeqhVOlV64dXmA" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sF_Fq8WEeqhVOlV64dXmA" id="(0.8530805687203792,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_8sF_Ka8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_8sFYOK8WEeqhVOlV64dXmA" target="_8sHNUK8WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sF_Kq8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8sF_K68WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_8sF_LK8WEeqhVOlV64dXmA" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_8sF_La8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_zKvGwIVXEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8sF_Lq8WEeqhVOlV64dXmA" points="[-30, 810, -643984, -643984]$[70, 733, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sF_L68WEeqhVOlV64dXmA" id="(0.6635071090047393,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sF_MK8WEeqhVOlV64dXmA" id="(0.418848167539267,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_8sF_Q68WEeqhVOlV64dXmA" type="Generalization_Edge" source="_8sGmeq8WEeqhVOlV64dXmA" target="_8sF_Ma8WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sF_RK8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8sF_Ra8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_8sF_Rq8WEeqhVOlV64dXmA" x="-1" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_8sF_R68WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_Ud9iUIVVEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8sF_SK8WEeqhVOlV64dXmA" points="[-170, 450, -643984, -643984]$[30, 413, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sF_Sa8WEeqhVOlV64dXmA" id="(0.7734806629834254,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sF_Sq8WEeqhVOlV64dXmA" id="(0.4819277108433735,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_8sF_W68WEeqhVOlV64dXmA" type="Generalization_Edge" source="_8sF_g68WEeqhVOlV64dXmA" target="_8sF_F68WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sF_XK8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8sF_Xa8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_8sF_Xq8WEeqhVOlV64dXmA" x="1" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_8sF_X68WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_hzfRoIVYEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8sF_YK8WEeqhVOlV64dXmA" points="[770, 450, -643984, -643984]$[470, 293, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sF_Ya8WEeqhVOlV64dXmA" id="(0.2843601895734597,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sF_Yq8WEeqhVOlV64dXmA" id="(0.8290155440414507,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_8sGmMq8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_8sGmaq8WEeqhVOlV64dXmA" target="_8sGmIK8WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sGmM68WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8sGmNK8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_8sGmNa8WEeqhVOlV64dXmA" x="8" y="135"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_8sGmNq8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_fQk64IVWEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8sGmN68WEeqhVOlV64dXmA" points="[550, 1110, -643984, -643984]$[510, 1073, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sGmOK8WEeqhVOlV64dXmA" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sGmOa8WEeqhVOlV64dXmA" id="(0.8181818181818182,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_8sGmOq8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_8sF_F68WEeqhVOlV64dXmA" target="_8sExGK8WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sGmO68WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8sGmPK8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_8sGmPa8WEeqhVOlV64dXmA" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_8sGmPq8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_DTFDUIVYEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8sGmP68WEeqhVOlV64dXmA" points="[170, 170, -643984, -643984]$[510, 130, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sGmQK8WEeqhVOlV64dXmA" id="(0.6217616580310881,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sGmQa8WEeqhVOlV64dXmA" id="(0.4,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_8sGmQq8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_8sExCK8WEeqhVOlV64dXmA" target="_8sFYXK8WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sGmQ68WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8sGmRK8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_8sGmRa8WEeqhVOlV64dXmA" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_8sGmRq8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_9Q2_AIVTEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8sGmR68WEeqhVOlV64dXmA" points="[1010, 530, -643984, -643984]$[1090, 293, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sGmSK8WEeqhVOlV64dXmA" id="(0.5084745762711864,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sGmSa8WEeqhVOlV64dXmA" id="(0.20304568527918782,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_8sHNMK8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_8sH0X68WEeqhVOlV64dXmA" target="_8sFYXK8WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sHNMa8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8sHNMq8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_8sHNM68WEeqhVOlV64dXmA" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_8sHNNK8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_i7emsIVTEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8sHNNa8WEeqhVOlV64dXmA" points="[1590, 330, -643984, -643984]$[1230, 293, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sHNNq8WEeqhVOlV64dXmA" id="(0.47393364928909953,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sHNN68WEeqhVOlV64dXmA" id="(0.9137055837563451,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_8sHNOK8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_8sFYGK8WEeqhVOlV64dXmA" target="_8sH0X68WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sHNOa8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8sHNOq8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_8sHNO68WEeqhVOlV64dXmA" x="1" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_8sHNPK8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_g8dVQIVTEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8sHNPa8WEeqhVOlV64dXmA" points="[1450, 530, -643984, -643984]$[1530, 433, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sHNPq8WEeqhVOlV64dXmA" id="(0.46153846153846156,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sHNP68WEeqhVOlV64dXmA" id="(0.1895734597156398,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_8sHNQK8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_8sHNhK8WEeqhVOlV64dXmA" target="_8sGmeq8WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sHNQa8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8sHNQq8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_8sHNQ68WEeqhVOlV64dXmA" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_8sHNRK8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_2DdHsIVUEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8sHNRa8WEeqhVOlV64dXmA" points="[-110, 630, -643984, -643984]$[-170, 553, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sHNRq8WEeqhVOlV64dXmA" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sHNR68WEeqhVOlV64dXmA" id="(0.7734806629834254,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_8sHNSK8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_8sGmIK8WEeqhVOlV64dXmA" target="_8sGmjq8WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sHNSa8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8sHNSq8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_8sHNS68WEeqhVOlV64dXmA" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_8sHNTK8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_f8tBEIVWEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8sHNTa8WEeqhVOlV64dXmA" points="[410, 970, -643984, -643984]$[310, 911, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sHNTq8WEeqhVOlV64dXmA" id="(0.36363636363636365,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sHNT68WEeqhVOlV64dXmA" id="(0.7453416149068323,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_8sHNZK8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_8sF_Ma8WEeqhVOlV64dXmA" target="_8sF_F68WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sHNZa8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8sHNZq8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_8sHNZ68WEeqhVOlV64dXmA" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_8sHNaK8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_2P_c8IVWEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8sHNaa8WEeqhVOlV64dXmA" points="[50, 310, -643984, -643984]$[130, 273, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sHNaq8WEeqhVOlV64dXmA" id="(0.6024096385542169,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sHNa68WEeqhVOlV64dXmA" id="(0.41450777202072536,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_8sHNbK8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_8sIbeK8WEeqhVOlV64dXmA" target="_8sGmeq8WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sHNba8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8sHNbq8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_8sHNb68WEeqhVOlV64dXmA" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_8sHNcK8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_3UmmgIVUEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8sHNca8WEeqhVOlV64dXmA" points="[-360, 1360, -643984, -643984]$[-280, 1283, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sHNcq8WEeqhVOlV64dXmA" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sHNc68WEeqhVOlV64dXmA" id="(0.22099447513812154,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_8sH0ca8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_8sHNUK8WEeqhVOlV64dXmA" target="_8sGmeq8WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sH0cq8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8sH0c68WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_8sH0dK8WEeqhVOlV64dXmA" x="-1" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_8sH0da8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_V3zYMIVXEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8sH0dq8WEeqhVOlV64dXmA" points="[50, 630, -643984, -643984]$[-129, 510, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sH0d68WEeqhVOlV64dXmA" id="(0.31413612565445026,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sH0eK8WEeqhVOlV64dXmA" id="(1.0,0.5825242718446602)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_8sIbUK8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_8sH0ia8WEeqhVOlV64dXmA" target="_8sH0X68WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sIbUa8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8sIbUq8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_8sIbU68WEeqhVOlV64dXmA" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_8sIbVK8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_iK5eUIVTEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8sIbVa8WEeqhVOlV64dXmA" points="[1770, 530, -643984, -643984]$[1670, 433, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sIbVq8WEeqhVOlV64dXmA" id="(0.46153846153846156,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sIbV68WEeqhVOlV64dXmA" id="(0.8530805687203792,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_8sIbaK8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_8sHNdK8WEeqhVOlV64dXmA" target="_8sFYOK8WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sIbaa8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8sIbaq8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_8sIba68WEeqhVOlV64dXmA" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_8sIbbK8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_6B2IgIVXEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8sIbba8WEeqhVOlV64dXmA" points="[10, 970, -643984, -643984]$[10, 929, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sIbbq8WEeqhVOlV64dXmA" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sIbb68WEeqhVOlV64dXmA" id="(0.5687203791469194,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_8sIbcK8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_8sH0ea8WEeqhVOlV64dXmA" target="_8sIbiK8WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sIbca8WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8sIbcq8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_8sIbc68WEeqhVOlV64dXmA" x="120" y="131"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_8sIbdK8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_dg9M0IVVEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8sIbda8WEeqhVOlV64dXmA" points="[450, 610, -643984, -643984]$[450, 551, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sIbdq8WEeqhVOlV64dXmA" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sIbd68WEeqhVOlV64dXmA" id="(0.4419889502762431,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_8sIbmq8WEeqhVOlV64dXmA" type="Generalization_Edge" source="_8sFYXK8WEeqhVOlV64dXmA" target="_8sExGK8WEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8sIbm68WEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_8sIbnK8WEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_8sIbna8WEeqhVOlV64dXmA" x="-633" y="148"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_8sIbnq8WEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_CV1X8IVYEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8sIbn68WEeqhVOlV64dXmA" points="[830, 170, -643984, -643984]$[550, 130, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sIboK8WEeqhVOlV64dXmA" id="(0.5076142131979695,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8sIboa8WEeqhVOlV64dXmA" id="(0.8,1.0)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_3ORf4JUJEeqWd_6S3mbYXg" type="PapyrusUMLProfileDiagram" name="Padding_layers" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_cE3XsJULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_cE3XsZULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_cE3XspULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cE3Xs5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cE3XtJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cE3XtZULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cE3XtpULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_cE3Xt5ULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cE3XuJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cE3XuZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cE3XupULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cE3Xu5ULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_okP-UIVZEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cE3Xv5ULEeqfMc95BD27pw" x="1090" y="310"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_cE3-wJULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_cE3-wZULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_cE3-wpULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_cE3-w5ULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_UZswkIVZEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_cE3-xJULEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cE3-xZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cE3-xpULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cE3-x5ULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cE3-yJULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_cE3-yZULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cE3-ypULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cE3-y5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cE3-zJULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cE3-zZULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_w6iwUIVYEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cE3-0ZULEeqfMc95BD27pw" x="630" y="90"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_cE4l0JULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_cE4l0ZULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_cE4l0pULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cE4l05ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cE4l1JULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cE4l1ZULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cE4l1pULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_cE4l15ULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cE4l2JULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cE4l2ZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cE4l2pULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cE4l25ULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_cIwG8IVZEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cE4l35ULEeqfMc95BD27pw" x="410" y="310"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_cE5z8ZULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_cE5z8pULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_cE5z85ULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cE5z9JULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cE5z9ZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cE5z9pULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cE5z95ULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_cE5z-JULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cE5z-ZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cE5z-pULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cE5z-5ULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cE5z_JULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_fdB7IIVZEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cE50AJULEeqfMc95BD27pw" x="550" y="310"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_cE50AZULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_cE50ApULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_cE50A5ULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cE50BJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cE50BZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cE50BpULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cE50B5ULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_cE50CJULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cE50CZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cE50CpULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cE50C5ULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cE50DJULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_aphv4IVZEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cE50EJULEeqfMc95BD27pw" x="270" y="310"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_cE6bAJULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_cE6bAZULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_cE6bApULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cE6bA5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cE6bBJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cE6bBZULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cE6bBpULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_cE6bB5ULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cE6bCJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cE6bCZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cE6bCpULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cE6bC5ULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_sNFGMIVZEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cE6bD5ULEeqfMc95BD27pw" x="1230" y="310"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_cE7CIJULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_cE7CIZULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_cE7CIpULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cE7CI5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cE7CJJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cE7CJZULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cE7CJpULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_cE7CJ5ULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cE7CKJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cE7CKZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cE7CKpULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cE7CK5ULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_gxtPEIVZEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cE7CL5ULEeqfMc95BD27pw" x="690" y="310"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_cE7pIJULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_cE7pIZULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_cE7pIpULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cE7pI5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cE7pJJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cE7pJZULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cE7pJpULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_cE7pJ5ULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cE7pKJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cE7pKZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cE7pKpULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cE7pK5ULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_kjrr4IVZEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cE7pL5ULEeqfMc95BD27pw" x="830" y="310"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_cE7pOZULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_cE7pOpULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_cE7pO5ULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cE7pPJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cE7pPZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cE7pPpULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cE7pP5ULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_cE7pQJULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cE7pQZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cE7pQpULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cE7pQ5ULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cE7pRJULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_mNvZ8IVZEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cE7pSJULEeqfMc95BD27pw" x="970" y="310"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_cE83QZULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_cE83QpULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_cE83Q5ULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cE83RJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cE83RZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cE83RpULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cE83R5ULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_cE83SJULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cE83SZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cE83SpULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cE83S5ULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cE83TJULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_YlZU8IVZEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cE83UJULEeqfMc95BD27pw" x="130" y="310"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_3ORf4ZUJEeqWd_6S3mbYXg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_3ORf4pUJEeqWd_6S3mbYXg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_3ORf45UJEeqWd_6S3mbYXg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_2_xEcJT2Eeq5BK6mmo2rWg"/>
+    </styles>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_2_xEcJT2Eeq5BK6mmo2rWg"/>
+    <edges xmi:type="notation:Connector" xmi:id="_cE5M4JULEeqfMc95BD27pw" type="Generalization_Edge" source="_cE4l0JULEeqfMc95BD27pw" target="_cE3-wJULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_cE5M4ZULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_cE5M4pULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_cE5M45ULEeqfMc95BD27pw" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_cE5M5JULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_2srRkIVZEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_cE5M5ZULEeqfMc95BD27pw" points="[450, 290, -643984, -643984]$[650, 173, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cE5M5pULEeqfMc95BD27pw" id="(0.5714285714285714,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cE5M55ULEeqfMc95BD27pw" id="(0.272108843537415,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_cE5M6ZULEeqfMc95BD27pw" type="Generalization_Edge" source="_cE3XsJULEeqfMc95BD27pw" target="_cE3-wJULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_cE5M6pULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_cE5M65ULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_cE5M7JULEeqfMc95BD27pw" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_cE5M7ZULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_7KBmoIVZEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_cE5M7pULEeqfMc95BD27pw" points="[1130, 290, -643984, -643984]$[730, 173, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cE5M75ULEeqfMc95BD27pw" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cE5M8JULEeqfMc95BD27pw" id="(0.8163265306122449,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_cE6bEJULEeqfMc95BD27pw" type="Generalization_Edge" source="_cE5z8ZULEeqfMc95BD27pw" target="_cE3-wJULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_cE6bEZULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_cE6bEpULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_cE6bE5ULEeqfMc95BD27pw" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_cE6bFJULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_3Rpm4IVZEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_cE6bFZULEeqfMc95BD27pw" points="[590, 290, -643984, -643984]$[650, 173, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cE6bFpULEeqfMc95BD27pw" id="(0.5714285714285714,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cE6bF5ULEeqfMc95BD27pw" id="(0.272108843537415,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_cE7CEJULEeqfMc95BD27pw" type="Generalization_Edge" source="_cE50AZULEeqfMc95BD27pw" target="_cE3-wJULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_cE7CEZULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_cE7CEpULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_cE7CE5ULEeqfMc95BD27pw" x="-1" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_cE7CFJULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_0IHqIIVZEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_cE7CFZULEeqfMc95BD27pw" points="[310, 290, -643984, -643984]$[630, 173, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cE7CFpULEeqfMc95BD27pw" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cE7CF5ULEeqfMc95BD27pw" id="(0.1360544217687075,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_cE7CGJULEeqfMc95BD27pw" type="Generalization_Edge" source="_cE83QZULEeqfMc95BD27pw" target="_cE3-wJULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_cE7CGZULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_cE7CGpULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_cE7CG5ULEeqfMc95BD27pw" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_cE7CHJULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_zJF2EIVZEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_cE7CHZULEeqfMc95BD27pw" points="[150, 290, -643984, -643984]$[630, 173, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cE7CHpULEeqfMc95BD27pw" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cE7CH5ULEeqfMc95BD27pw" id="(0.1360544217687075,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_cE7pMJULEeqfMc95BD27pw" type="Generalization_Edge" source="_cE7pOZULEeqfMc95BD27pw" target="_cE3-wJULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_cE7pMZULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_cE7pMpULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_cE7pM5ULEeqfMc95BD27pw" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_cE7pNJULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_6g_QsIVZEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_cE7pNZULEeqfMc95BD27pw" points="[1010, 290, -643984, -643984]$[730, 173, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cE7pNpULEeqfMc95BD27pw" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cE7pN5ULEeqfMc95BD27pw" id="(0.8163265306122449,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_cE8QMJULEeqfMc95BD27pw" type="Generalization_Edge" source="_cE7CIJULEeqfMc95BD27pw" target="_cE3-wJULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_cE8QMZULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_cE8QMpULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_cE8QM5ULEeqfMc95BD27pw" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_cE8QNJULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_4uA3MIVZEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_cE8QNZULEeqfMc95BD27pw" points="[730, 290, -643984, -643984]$[650, 173, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cE8QNpULEeqfMc95BD27pw" id="(0.5714285714285714,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cE8QN5ULEeqfMc95BD27pw" id="(0.272108843537415,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_cE8QOJULEeqfMc95BD27pw" type="Generalization_Edge" source="_cE7pIJULEeqfMc95BD27pw" target="_cE3-wJULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_cE8QOZULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_cE8QOpULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_cE8QO5ULEeqfMc95BD27pw" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_cE8QPJULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_5Tm3kIVZEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_cE8QPZULEeqfMc95BD27pw" points="[870, 290, -643984, -643984]$[690, 173, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cE8QPpULEeqfMc95BD27pw" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cE8QP5ULEeqfMc95BD27pw" id="(0.54421768707483,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_cE8QQJULEeqfMc95BD27pw" type="Generalization_Edge" source="_cE6bAJULEeqfMc95BD27pw" target="_cE3-wJULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_cE8QQZULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_cE8QQpULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_cE8QQ5ULEeqfMc95BD27pw" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_cE8QRJULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_7vcA0IVZEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_cE8QRZULEeqfMc95BD27pw" points="[1270, 290, -643984, -643984]$[730, 173, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cE8QRpULEeqfMc95BD27pw" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_cE8QR5ULEeqfMc95BD27pw" id="(0.8163265306122449,1.0)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_43OasJUJEeqWd_6S3mbYXg" type="PapyrusUMLProfileDiagram" name="Non-linear_activations_(weighted sum, nonlinearity)" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_kUJtUJULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUJtUZULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUJtUpULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUJtU5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUJtVJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUJtVZULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUJtVpULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUJtV5ULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUJtWJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUJtWZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUJtWpULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUJtW5ULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_-FB30IVcEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUJtX5ULEeqfMc95BD27pw" x="2090" y="350"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_kUK7eJULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUK7eZULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUK7epULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUK7e5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUK7fJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUK7fZULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUK7fpULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUK7f5ULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUK7gJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUK7gZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUK7gpULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUK7g5ULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_T9yJQIVcEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUK7h5ULEeqfMc95BD27pw" x="1450" y="510"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_kULiiJULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kULiiZULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kULiipULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kULii5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kULijJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kULijZULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kULijpULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kULij5ULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kULikJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kULikZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kULikpULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kULik5ULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_ef3LcIVdEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kULil5ULEeqfMc95BD27pw" x="3230" y="350"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_kUMJmJULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUMJmZULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUMJmpULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_kUMJm5ULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_MoLDEIVbEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kUMJnJULEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUMJnZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUMJnpULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUMJn5ULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUMJoJULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUMJoZULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUMJopULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUMJo5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUMJpJULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUMJpZULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_FFiYEIVbEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUMJqZULEeqfMc95BD27pw" x="30" y="510"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_kUMJqpULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUMJq5ULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUMJrJULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUMJrZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUMJrpULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUMJr5ULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUMJsJULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUMJsZULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUMJspULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUMJs5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUMJtJULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUMJtZULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_Q694gIVcEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUMJuZULEeqfMc95BD27pw" x="1330" y="510"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_kUMwoJULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUMwoZULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUMwopULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_kUMwo5ULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_H7n-8IVcEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kUMwpJULEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_kUMwpZULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_J_NnUIVcEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kUMwppULEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUMwp5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUMwqJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUMwqZULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUMwqpULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUMwq5ULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUMwrJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUMwrZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUMwrpULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUMwr5ULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_FyhkcIVcEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUMws5ULEeqfMc95BD27pw" x="2690" y="350"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_kUNXsJULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUNXsZULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUNXspULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUNXs5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUNXtJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUNXtZULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUNXtpULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUNXt5ULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUNXuJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUNXuZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUNXupULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUNXu5ULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_dgIz0IVdEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUNXv5ULEeqfMc95BD27pw" x="2950" y="350"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_kUN-wJULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUN-wZULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUN-wpULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_kUN-w5ULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_QsGykIVbEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kUN-xJULEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUN-xZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUN-xpULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUN-x5ULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUN-yJULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUN-yZULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUN-ypULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUN-y5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUN-zJULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUN-zZULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_O0zSsIVbEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUN-0ZULEeqfMc95BD27pw" x="1670" y="330"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_kUN-65ULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUN-7JULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUN-7ZULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_kUN-7pULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_vrowYIVcEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kUN-75ULEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUN-8JULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUN-8ZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUN-8pULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUN-85ULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUN-9JULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUN-9ZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUN-9pULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUN-95ULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUN--JULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_uYqFkIVcEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUN-_JULEeqfMc95BD27pw" x="990" y="510"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_kUN-_ZULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUN-_pULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUN-_5ULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_kUN_AJULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_FZhZIIVdEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kUN_AZULEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_kUN_ApULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_KHN3UIVdEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kUN_A5ULEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUN_BJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUN_BZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUN_BpULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUN_B5ULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUN_CJULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUN_CZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUN_CpULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUN_C5ULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUN_DJULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_AXPyEIVdEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUN_EJULEeqfMc95BD27pw" x="1890" y="350"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_kUOl2JULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUOl2ZULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUOl2pULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUOl25ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUOl3JULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUOl3ZULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUOl3pULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUOl35ULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUOl4JULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUOl4ZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUOl4pULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUOl45ULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_hnumMIVbEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUOl55ULEeqfMc95BD27pw" x="2330" y="350"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_kUOl6JULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUOl6ZULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUOl6pULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUOl65ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUOl7JULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUOl7ZULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUOl7pULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUOl75ULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUOl8JULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUOl8ZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUOl8pULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUOl85ULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_PQkzQIVcEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUOl95ULEeqfMc95BD27pw" x="1210" y="510"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_kUOmAJULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUOmAZULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUOmApULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUOmA5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUOmBJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUOmBZULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUOmBpULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUOmB5ULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUOmCJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUOmCZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUOmCpULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUOmC5ULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#__HL4YIVcEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUOmD5ULEeqfMc95BD27pw" x="2210" y="350"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_kUOmEZULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUOmEpULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUOmE5ULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_kUOmFJULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_pyKbkIVcEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kUOmFZULEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_kUOmFpULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_qj-TAIVcEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kUOmF5ULEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUOmGJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUOmGZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUOmGpULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUOmG5ULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUOmHJULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUOmHZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUOmHpULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUOmH5ULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUOmIJULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_oPGGUIVcEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUOmJJULEeqfMc95BD27pw" x="490" y="510"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_kUPM4JULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUPM4ZULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUPM4pULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_kUPM45ULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_oCRnwIVbEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kUPM5JULEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_kUPM5ZULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_pXDCUIVbEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kUPM5pULEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_kUPM55ULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_qHZhMIVbEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kUPM6JULEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_kUPM6ZULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_qxdK0IVbEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kUPM6pULEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_kUPM65ULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_rp_8YIVbEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kUPM7JULEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_kUPM7ZULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_uscZsIVbEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kUPM7pULEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_kUPM75ULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_wd6XUIVbEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kUPM8JULEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_kUPM8ZULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_w_bI8IVbEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kUPM8pULEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUPM85ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUPM9JULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUPM9ZULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUPM9pULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUPM95ULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUPM-JULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUPM-ZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUPM-pULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUPM-5ULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_mNXUkIVbEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUPM_5ULEeqfMc95BD27pw" x="2449" y="353"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_kUPz8JULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUPz8ZULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUPz8pULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_kUPz85ULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_Ki9qEIVbEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kUPz9JULEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUPz9ZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUPz9pULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUPz95ULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUPz-JULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUPz-ZULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUPz-pULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUPz-5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUPz_JULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUPz_ZULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_Im3JwIVbEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUP0AZULEeqfMc95BD27pw" x="710" y="330"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_kUP0ApULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUP0A5ULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUP0BJULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUP0BZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUP0BpULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUP0B5ULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUP0CJULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUP0CZULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUP0CpULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUP0C5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUP0DJULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUP0DZULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_Tr5SkIVdEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUP0EZULEeqfMc95BD27pw" x="1650" y="510"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_kUP0GpULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUP0G5ULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUP0HJULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUP0HZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUP0HpULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUP0H5ULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUP0IJULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUP0IZULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUP0IpULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUP0I5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUP0JJULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUP0JZULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_AwFawIVbEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUP0KZULEeqfMc95BD27pw" x="1570" y="50"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_kUQbAJULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUQbAZULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUQbApULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUQbA5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUQbBJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUQbBZULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUQbBpULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUQbB5ULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUQbCJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUQbCZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUQbCpULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUQbC5ULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_kIQXUIVdEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUQbD5ULEeqfMc95BD27pw" x="3090" y="350"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_kUQbGZULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUQbGpULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUQbG5ULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_kUQbHJULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_6bNcAIVdEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kUQbHZULEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_kUQbHpULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_7aGGIIVdEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kUQbH5ULEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUQbIJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUQbIZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUQbIpULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUQbI5ULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUQbJJULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUQbJZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUQbJpULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUQbJ5ULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUQbKJULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_4wdxcIVdEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUQbLJULEeqfMc95BD27pw" x="730" y="510"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_kUQbLpULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUQbL5ULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUQbMJULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUQbMZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUQbMpULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUQbM5ULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUQbNJULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kUQbNZULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kUQbNpULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kUQbN5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kUQbOJULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUQbOZULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_Q1o3IIVdEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kUQbPZULEeqfMc95BD27pw" x="1784" y="507"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_kURCEJULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kURCEZULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kURCEpULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_kURCE5ULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_VlPEsIVbEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_kURCFJULEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kURCFZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kURCFpULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kURCF5ULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kURCGJULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_kURCGZULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_kURCGpULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_kURCG5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_kURCHJULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kURCHZULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_T1MDYIVbEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kURCIZULEeqfMc95BD27pw" x="230" y="510"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_43OasZUJEeqWd_6S3mbYXg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_43OaspUJEeqWd_6S3mbYXg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_43Oas5UJEeqWd_6S3mbYXg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_H7fbMJT2Eeq5BK6mmo2rWg"/>
+    </styles>
+    <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_C6QOkJnbEeqZJ7Fgbu454w" name="css_stylesheets" eObjectListValue="_mci3oJm1Eeq8nv7tV9lOqQ"/>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_H7fbMJT2Eeq5BK6mmo2rWg"/>
+    <edges xmi:type="notation:Connector" xmi:id="_kUIfMJULEeqfMc95BD27pw" type="Generalization_Edge" source="_kUN-wJULEeqfMc95BD27pw" target="_kUP0GpULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUIfMZULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_kUIfMpULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_kUIfM5ULEeqfMc95BD27pw" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_kUIfNJULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_Kab40IVeEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kUIfNZULEeqfMc95BD27pw" points="[1730, 310, -643984, -643984]$[1590, 130, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUIfNpULEeqfMc95BD27pw" id="(0.4678362573099415,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUIfN5ULEeqfMc95BD27pw" id="(0.1384083044982699,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_kUKUYJULEeqfMc95BD27pw" type="Generalization_Edge" source="_kUQbAJULEeqfMc95BD27pw" target="_kUP0GpULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUKUYZULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_kUKUYpULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_kUKUY5ULEeqfMc95BD27pw" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_kUKUZJULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_dbS6oIVeEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kUKUZZULEeqfMc95BD27pw" points="[3110, 330, -643984, -643984]$[1810, 130, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUKUZpULEeqfMc95BD27pw" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUKUZ5ULEeqfMc95BD27pw" id="(0.8996539792387543,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_kUK7cJULEeqfMc95BD27pw" type="Generalization_Edge" source="_kUMwoJULEeqfMc95BD27pw" target="_kUP0GpULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUK7cZULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_kUK7cpULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_kUK7c5ULEeqfMc95BD27pw" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_kUK7dJULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_fZNY0IVeEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kUK7dZULEeqfMc95BD27pw" points="[2750, 330, -643984, -643984]$[1810, 130, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUK7dpULEeqfMc95BD27pw" id="(0.35398230088495575,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUK7d5ULEeqfMc95BD27pw" id="(0.8996539792387543,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_kULigJULEeqfMc95BD27pw" type="Generalization_Edge" source="_kULiiJULEeqfMc95BD27pw" target="_kUP0GpULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kULigZULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_kULigpULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_kULig5ULEeqfMc95BD27pw" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_kULihJULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_bY_rsIVeEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kULihZULEeqfMc95BD27pw" points="[3270, 330, -643984, -643984]$[1810, 130, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kULihpULEeqfMc95BD27pw" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kULih5ULEeqfMc95BD27pw" id="(0.8996539792387543,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_kUMJkJULEeqfMc95BD27pw" type="Generalization_Edge" source="_kUMJmJULEeqfMc95BD27pw" target="_kUPz8JULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUMJkZULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_kUMJkpULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_kUMJk5ULEeqfMc95BD27pw" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_kUMJlJULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_ckA0sIVbEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kUMJlZULEeqfMc95BD27pw" points="[170, 490, -643984, -643984]$[230, 413, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUMJlpULEeqfMc95BD27pw" id="(0.6024096385542169,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUMJl5ULEeqfMc95BD27pw" id="(0.0664451827242525,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_kUMwtZULEeqfMc95BD27pw" type="Generalization_Edge" source="_kURCEJULEeqfMc95BD27pw" target="_kUPz8JULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUMwtpULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_kUMwt5ULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_kUMwuJULEeqfMc95BD27pw" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_kUMwuZULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_dEj9AIVbEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kUMwupULEeqfMc95BD27pw" points="[410, 490, -643984, -643984]$[370, 413, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUMwu5ULEeqfMc95BD27pw" id="(0.18604651162790697,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUMwvJULEeqfMc95BD27pw" id="(0.39867109634551495,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_kUNXwJULEeqfMc95BD27pw" type="Generalization_Edge" source="_kUNXsJULEeqfMc95BD27pw" target="_kUP0GpULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUNXwZULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_kUNXwpULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_kUNXw5ULEeqfMc95BD27pw" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_kUNXxJULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_esL6wIVeEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kUNXxZULEeqfMc95BD27pw" points="[2970, 330, -643984, -643984]$[1810, 130, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUNXxpULEeqfMc95BD27pw" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUNXx5ULEeqfMc95BD27pw" id="(0.8996539792387543,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_kUNXyJULEeqfMc95BD27pw" type="Generalization_Edge" source="_kUK7eJULEeqfMc95BD27pw" target="_kUPz8JULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUNXyZULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_kUNXypULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_kUNXy5ULEeqfMc95BD27pw" x="-37" y="65"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_kUNXzJULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_X3PuIIVcEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kUNXzZULEeqfMc95BD27pw" points="[1330, 490, -643984, -643984]$[950, 413, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUNXzpULEeqfMc95BD27pw" id="(0.2,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUNXz5ULEeqfMc95BD27pw" id="(0.8637873754152824,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_kUNX0JULEeqfMc95BD27pw" type="Generalization_Edge" source="_kUPM4JULEeqfMc95BD27pw" target="_kUP0GpULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUNX0ZULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_kUNX0pULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_kUNX05ULEeqfMc95BD27pw" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_kUNX1JULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_gMwVoIVeEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kUNX1ZULEeqfMc95BD27pw" points="[2510, 333, -643984, -643984]$[1790, 130, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUNX1pULEeqfMc95BD27pw" id="(0.38571428571428573,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUNX15ULEeqfMc95BD27pw" id="(0.8304498269896193,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_kUNX2JULEeqfMc95BD27pw" type="Generalization_Edge" source="_kUJtUJULEeqfMc95BD27pw" target="_kUP0GpULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUNX2ZULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_kUNX2pULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_kUNX25ULEeqfMc95BD27pw" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_kUNX3JULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_SfSgEIVeEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kUNX3ZULEeqfMc95BD27pw" points="[2110, 330, -643984, -643984]$[1650, 130, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUNX3pULEeqfMc95BD27pw" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUNX35ULEeqfMc95BD27pw" id="(0.3460207612456747,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_kUN-0pULEeqfMc95BD27pw" type="Generalization_Edge" source="_kUMJqpULEeqfMc95BD27pw" target="_kUPz8JULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUN-05ULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_kUN-1JULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_kUN-1ZULEeqfMc95BD27pw" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_kUN-1pULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_XLnXMIVcEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kUN-15ULEeqfMc95BD27pw" points="[1250, 490, -643984, -643984]$[950, 413, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUN-2JULEeqfMc95BD27pw" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUN-2ZULEeqfMc95BD27pw" id="(0.8637873754152824,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_kUN-2pULEeqfMc95BD27pw" type="Generalization_Edge" source="_kUOmEZULEeqfMc95BD27pw" target="_kUPz8JULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUN-25ULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_kUN-3JULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_kUN-3ZULEeqfMc95BD27pw" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_kUN-3pULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_yH-P8IVcEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kUN-35ULEeqfMc95BD27pw" points="[570, 490, -643984, -643984]$[570, 413, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUN-4JULEeqfMc95BD27pw" id="(0.5952380952380952,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUN-4ZULEeqfMc95BD27pw" id="(0.53156146179402,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_kUN-45ULEeqfMc95BD27pw" type="Generalization_Edge" source="_kUOmAJULEeqfMc95BD27pw" target="_kUP0GpULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUN-5JULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_kUN-5ZULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_kUN-5pULEeqfMc95BD27pw" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_kUN-55ULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_heXHcIVeEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kUN-6JULEeqfMc95BD27pw" points="[2230, 330, -643984, -643984]$[1750, 130, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUN-6ZULEeqfMc95BD27pw" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUN-6pULEeqfMc95BD27pw" id="(0.6920415224913494,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_kUOl0JULEeqfMc95BD27pw" type="Generalization_Edge" source="_kUQbLpULEeqfMc95BD27pw" target="_kUN-wJULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUOl0ZULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_kUOl0pULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_kUOl05ULEeqfMc95BD27pw" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_kUOl1JULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_WoPu8IVdEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kUOl1ZULEeqfMc95BD27pw" points="[1810, 487, -643984, -643984]$[1750, 413, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUOl1pULEeqfMc95BD27pw" id="(0.46,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUOl15ULEeqfMc95BD27pw" id="(0.5847953216374269,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_kUOl-JULEeqfMc95BD27pw" type="Generalization_Edge" source="_kUOl2JULEeqfMc95BD27pw" target="_kUP0GpULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUOl-ZULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_kUOl-pULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_kUOl-5ULEeqfMc95BD27pw" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_kUOl_JULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_g0PMYIVeEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kUOl_ZULEeqfMc95BD27pw" points="[2350, 330, -643984, -643984]$[1770, 130, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUOl_pULEeqfMc95BD27pw" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUOl_5ULEeqfMc95BD27pw" id="(0.7612456747404844,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_kUPNAJULEeqfMc95BD27pw" type="Generalization_Edge" source="_kUN-_ZULEeqfMc95BD27pw" target="_kUP0GpULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUPNAZULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_kUPNApULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_kUPNA5ULEeqfMc95BD27pw" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_kUPNBJULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_LicCsIVeEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kUPNBZULEeqfMc95BD27pw" points="[1910, 330, -643984, -643984]$[1630, 130, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUPNBpULEeqfMc95BD27pw" id="(0.21390374331550802,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUPNB5ULEeqfMc95BD27pw" id="(0.2768166089965398,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_kUPNCZULEeqfMc95BD27pw" type="Generalization_Edge" source="_kUPz8JULEeqfMc95BD27pw" target="_kUP0GpULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUPNCpULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_kUPNC5ULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_kUPNDJULEeqfMc95BD27pw" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_kUPNDZULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_dfBEYIVbEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kUPNDpULEeqfMc95BD27pw" points="[310, 310, -643984, -643984]$[390, 270, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUPND5ULEeqfMc95BD27pw" id="(0.5980066445182725,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUPNEJULEeqfMc95BD27pw" id="(0.0,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_kUPNEZULEeqfMc95BD27pw" type="Generalization_Edge" source="_kUP0ApULEeqfMc95BD27pw" target="_kUN-wJULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUPNEpULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_kUPNE5ULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_kUPNFJULEeqfMc95BD27pw" x="1" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_kUPNFZULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_WKteYIVdEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kUPNFpULEeqfMc95BD27pw" points="[1670, 490, -643984, -643984]$[1710, 413, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUPNF5ULEeqfMc95BD27pw" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUPNGJULEeqfMc95BD27pw" id="(0.3508771929824561,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_kUPNGpULEeqfMc95BD27pw" type="Generalization_Edge" source="_kUQbGZULEeqfMc95BD27pw" target="_kUPz8JULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUPNG5ULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_kUPNHJULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_kUPNHZULEeqfMc95BD27pw" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_kUPNHpULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_8qf-EIVdEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kUPNH5ULEeqfMc95BD27pw" points="[810, 490, -643984, -643984]$[870, 413, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUPNIJULEeqfMc95BD27pw" id="(0.5347593582887701,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUPNIZULEeqfMc95BD27pw" id="(0.5980066445182725,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_kUP0EpULEeqfMc95BD27pw" type="Generalization_Edge" source="_kUN-65ULEeqfMc95BD27pw" target="_kUPz8JULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUP0E5ULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_kUP0FJULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_kUP0FZULEeqfMc95BD27pw" x="-1" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_kUP0FpULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_ymuBcIVcEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kUP0F5ULEeqfMc95BD27pw" points="[1070, 490, -643984, -643984]$[910, 413, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUP0GJULEeqfMc95BD27pw" id="(0.6024096385542169,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUP0GZULEeqfMc95BD27pw" id="(0.7308970099667774,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_kUQbEJULEeqfMc95BD27pw" type="Generalization_Edge" source="_kUOl6JULEeqfMc95BD27pw" target="_kUPz8JULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_kUQbEZULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_kUQbEpULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_kUQbE5ULEeqfMc95BD27pw" x="-1" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_kUQbFJULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_WsaSsIVcEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kUQbFZULEeqfMc95BD27pw" points="[1110, 490, -643984, -643984]$[950, 413, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUQbFpULEeqfMc95BD27pw" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kUQbF5ULEeqfMc95BD27pw" id="(0.8637873754152824,1.0)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_6JCn4JUJEeqWd_6S3mbYXg" type="PapyrusUMLProfileDiagram" name="Non-linear_activations_(other)" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_y2OPoJULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_y2OPoZULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_y2OPopULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_y2OPo5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_y2OPpJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_y2OPpZULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y2OPppULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_y2OPp5ULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_y2OPqJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_y2OPqZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_y2OPqpULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y2OPq5ULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_n_v7YIVfEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y2OPr5ULEeqfMc95BD27pw" x="-410" y="190"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_y2PdwJULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_y2PdwZULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_y2PdwpULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_y2Pdw5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_y2PdxJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_y2PdxZULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y2PdxpULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_y2Pdx5ULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_y2PdyJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_y2PdyZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_y2PdypULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y2Pdy5ULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_lbyw4IVfEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y2Pdz5ULEeqfMc95BD27pw" x="-830" y="390"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_y2Qr4JULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_y2Qr4ZULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_y2Qr4pULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_y2Qr45ULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_zzHbwIVfEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_y2Qr5JULEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_y2Qr5ZULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_09lDwIVfEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_y2Qr5pULEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_y2Qr55ULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_1jP8oIVfEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_y2Qr6JULEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_y2Qr6ZULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_2sVroIVfEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_y2Qr6pULEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_y2Qr65ULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_3ZGrAIVfEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_y2Qr7JULEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_y2Qr7ZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_y2Qr7pULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_y2Qr75ULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y2Qr8JULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_y2Qr8ZULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_y2Qr8pULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_y2Qr85ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_y2Qr9JULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y2Qr9ZULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_vpbpkIVfEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y2Qr-ZULEeqfMc95BD27pw" x="-250" y="190"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_y2R6CZULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_y2R6CpULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_y2R6C5ULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_y2R6DJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_y2R6DZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_y2R6DpULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y2R6D5ULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_y2R6EJULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_y2R6EZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_y2R6EpULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_y2R6E5ULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y2R6FJULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_nBjNwIVfEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y2R6GJULEeqfMc95BD27pw" x="-710" y="390"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_y2ShEJULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_y2ShEZULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_y2ShEpULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_y2ShE5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_y2ShFJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_y2ShFZULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y2ShFpULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_y2ShF5ULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_y2ShGJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_y2ShGZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_y2ShGpULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y2ShG5ULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_HyCdwIVfEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y2ShH5ULEeqfMc95BD27pw" x="-630" y="10"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_y2TIKJULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_y2TIKZULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_y2TIKpULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_y2TIK5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_y2TILJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_y2TILZULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y2TILpULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_y2TIL5ULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_y2TIMJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_y2TIMZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_y2TIMpULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y2TIM5ULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_qeP-IIVfEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y2TIN5ULEeqfMc95BD27pw" x="-590" y="390"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_y2TvMJULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_y2TvMZULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_y2TvMpULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_y2TvM5ULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_f3_xIIVfEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_y2TvNJULEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_y2TvNZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_y2TvNpULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_y2TvN5ULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y2TvOJULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_y2TvOZULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_y2TvOpULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_y2TvO5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_y2TvPJULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y2TvPZULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_en-TsIVfEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y2TvQZULEeqfMc95BD27pw" x="-730" y="190"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_6JCn4ZUJEeqWd_6S3mbYXg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_6JCn4pUJEeqWd_6S3mbYXg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_6JCn45UJEeqWd_6S3mbYXg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_K1H6wJT2Eeq5BK6mmo2rWg"/>
+    </styles>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_K1H6wJT2Eeq5BK6mmo2rWg"/>
+    <edges xmi:type="notation:Connector" xmi:id="_y2QE0JULEeqfMc95BD27pw" type="Generalization_Edge" source="_y2TvMJULEeqfMc95BD27pw" target="_y2ShEJULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_y2QE0ZULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_y2QE0pULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_y2QE05ULEeqfMc95BD27pw" x="1" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_y2QE1JULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_98A-YIVfEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_y2QE1ZULEeqfMc95BD27pw" points="[-630, 170, -643984, -643984]$[-610, 90, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_y2QE1pULEeqfMc95BD27pw" id="(0.6486486486486487,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_y2QE15ULEeqfMc95BD27pw" id="(0.23121387283236994,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_y2RS8JULEeqfMc95BD27pw" type="Generalization_Edge" source="_y2Qr4JULEeqfMc95BD27pw" target="_y2ShEJULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_y2RS8ZULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_y2RS8pULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_y2RS85ULEeqfMc95BD27pw" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_y2RS9JULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_8okZgIVfEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_y2RS9ZULEeqfMc95BD27pw" points="[-170, 170, -643984, -643984]$[-510, 90, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_y2RS9pULEeqfMc95BD27pw" id="(0.5154639175257731,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_y2RS95ULEeqfMc95BD27pw" id="(0.8092485549132948,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_y2RS-JULEeqfMc95BD27pw" type="Generalization_Edge" source="_y2TIKJULEeqfMc95BD27pw" target="_y2TvMJULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_y2RS-ZULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_y2RS-pULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_y2RS-5ULEeqfMc95BD27pw" x="-1" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_y2RS_JULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_-m_OAIVfEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_y2RS_ZULEeqfMc95BD27pw" points="[-550, 370, -643984, -643984]$[-610, 273, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_y2RS_pULEeqfMc95BD27pw" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_y2RS_5ULEeqfMc95BD27pw" id="(0.7567567567567568,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_y2R6AJULEeqfMc95BD27pw" type="Generalization_Edge" source="_y2PdwJULEeqfMc95BD27pw" target="_y2TvMJULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_y2R6AZULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_y2R6ApULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_y2R6A5ULEeqfMc95BD27pw" x="24" y="118"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_y2R6BJULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#__rKAwIVfEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_y2R6BZULEeqfMc95BD27pw" points="[-790, 370, -643984, -643984]$[-710, 273, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_y2R6BpULEeqfMc95BD27pw" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_y2R6B5ULEeqfMc95BD27pw" id="(0.21621621621621623,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_y2TIIJULEeqfMc95BD27pw" type="Generalization_Edge" source="_y2OPoJULEeqfMc95BD27pw" target="_y2ShEJULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_y2TIIZULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_y2TIIpULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_y2TII5ULEeqfMc95BD27pw" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_y2TIJJULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_9EA_YIVfEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_y2TIJZULEeqfMc95BD27pw" points="[-390, 170, -643984, -643984]$[-530, 90, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_y2TIJpULEeqfMc95BD27pw" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_y2TIJ5ULEeqfMc95BD27pw" id="(0.6936416184971098,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_y2TIOJULEeqfMc95BD27pw" type="Generalization_Edge" source="_y2R6CZULEeqfMc95BD27pw" target="_y2TvMJULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_y2TIOZULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_y2TIOpULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_y2TIO5ULEeqfMc95BD27pw" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_y2TIPJULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#__G9ukIVfEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_y2TIPZULEeqfMc95BD27pw" points="[-670, 370, -643984, -643984]$[-670, 273, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_y2TIPpULEeqfMc95BD27pw" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_y2TIP5ULEeqfMc95BD27pw" id="(0.43243243243243246,1.0)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_7PFC4JUJEeqWd_6S3mbYXg" type="PapyrusUMLProfileDiagram" name="Normalization_layers" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="__By0oJULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="__By0oZULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__By0opULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="__By0o5ULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_KI-OAIVhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="__By0pJULEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="__By0pZULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_OsXgsIVhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="__By0ppULEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__By0p5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__By0qJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__By0qZULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__By0qpULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__By0q5ULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__By0rJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__By0rZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__By0rpULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__By0r5ULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_GstigIVhEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__By0s5ULEeqfMc95BD27pw" x="10" y="-750"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="__B0p0JULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="__B0p0ZULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__B0p0pULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="__B0p05ULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_iVdAIIVhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="__B0p1JULEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="__B0p1ZULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_ygFbsIVhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="__B0p1pULEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="__B0p15ULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_2tKgIIVhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="__B0p2JULEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__B0p2ZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__B0p2pULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__B0p25ULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B0p3JULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__B0p3ZULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__B0p3pULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__B0p35ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__B0p4JULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B0p4ZULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_fbbfAIVhEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B0p5ZULEeqfMc95BD27pw" x="950" y="-590"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="__B0p5pULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="__B0p55ULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__B0p6JULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="__B0p6ZULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_gvtxYIVhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="__B0p6pULEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__B0p65ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__B0p7JULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__B0p7ZULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B0p7pULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__B0p75ULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__B0p8JULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__B0p8ZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__B0p8pULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B0p85ULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_bf7SwIVhEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B0p95ULEeqfMc95BD27pw" x="330" y="-750"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="__B1Q6ZULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="__B1Q6pULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__B1Q65ULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__B1Q7JULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__B1Q7ZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__B1Q7pULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B1Q75ULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__B1Q8JULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__B1Q8ZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__B1Q8pULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__B1Q85ULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B1Q9JULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_BDZUIIViEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B1Q-JULEeqfMc95BD27pw" x="510" y="-370"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="__B138JULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="__B138ZULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__B138pULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__B1385ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__B139JULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__B139ZULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B139pULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__B1395ULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__B13-JULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__B13-ZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__B13-pULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B13-5ULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_OF6vQIViEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B13_5ULEeqfMc95BD27pw" x="1210" y="-370"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="__B14AJULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="__B14AZULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__B14ApULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="__B14A5ULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_mNNU0IVhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="__B14BJULEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="__B14BZULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_njZrsIVhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="__B14BpULEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__B14B5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__B14CJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__B14CZULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B14CpULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__B14C5ULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__B14DJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__B14DZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__B14DpULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B14D5ULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_kVSw8IVhEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B14E5ULEeqfMc95BD27pw" x="270" y="-590"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="__B14FJULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="__B14FZULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__B14FpULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__B14F5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__B14GJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__B14GZULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B14GpULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__B14G5ULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__B14HJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__B14HZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__B14HpULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B14H5ULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_SiGmsIViEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B14I5ULEeqfMc95BD27pw" x="1450" y="-370"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="__B2fApULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="__B2fA5ULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__B2fBJULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__B2fBZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__B2fBpULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__B2fB5ULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B2fCJULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__B2fCZULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__B2fCpULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__B2fC5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__B2fDJULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B2fDZULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_ws_i4IVgEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B2fEZULEeqfMc95BD27pw" x="210" y="-1110"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="__B3GEZULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="__B3GEpULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__B3GE5ULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="__B3GFJULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_K2rMEIViEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="__B3GFZULEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__B3GFpULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__B3GF5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__B3GGJULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B3GGZULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__B3GGpULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__B3GG5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__B3GHJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__B3GHZULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B3GHpULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_Ikef8IViEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B3GIpULEeqfMc95BD27pw" x="950" y="-370"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="__B3tKJULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="__B3tKZULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__B3tKpULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="__B3tK5ULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_Qt56oIVhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="__B3tLJULEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="__B3tLZULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_RjEoEIVhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="__B3tLpULEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="__B3tL5ULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_SBd0QIVhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="__B3tMJULEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="__B3tMZULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_SVdHQIVhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="__B3tMpULEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__B3tM5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__B3tNJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__B3tNZULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B3tNpULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__B3tN5ULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__B3tOJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__B3tOZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__B3tOpULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B3tO5ULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_ILIBQIVhEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B3tP5ULEeqfMc95BD27pw" x="530" y="-950"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="__B5iUJULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="__B5iUZULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__B5iUpULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="__B5iU5ULEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_4_83kIVgEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="__B5iVJULEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="__B5iVZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__B5iVpULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__B5iV5ULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B5iWJULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__B5iWZULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__B5iWpULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__B5iW5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__B5iXJULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B5iXZULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_2ZKbgIVgEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B5iYZULEeqfMc95BD27pw" x="70" y="-930"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="__B5iYpULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="__B5iY5ULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__B5iZJULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__B5iZZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__B5iZpULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__B5iZ5ULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B5iaJULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__B5iaZULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__B5iapULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__B5ia5ULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__B5ibJULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B5ibZULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_GDAowIViEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B5icZULEeqfMc95BD27pw" x="790" y="-370"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="__B6JgZULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="__B6JgpULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__B6Jg5ULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__B6JhJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__B6JhZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__B6JhpULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B6Jh5ULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__B6JiJULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__B6JiZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__B6JipULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__B6Ji5ULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B6JjJULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_ELXxsIViEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B6JkJULEeqfMc95BD27pw" x="650" y="-370"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="__B6weZULEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="__B6wepULEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__B6we5ULEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__B6wfJULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__B6wfZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__B6wfpULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B6wf5ULEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="__B6wgJULEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="__B6wgZULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="__B6wgpULEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="__B6wg5ULEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B6whJULEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_RKVigIViEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="__B6wiJULEeqfMc95BD27pw" x="1330" y="-370"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_7PFC4ZUJEeqWd_6S3mbYXg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_7PFC4pUJEeqWd_6S3mbYXg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_7PFC45UJEeqWd_6S3mbYXg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_N5zMsJT2Eeq5BK6mmo2rWg"/>
+    </styles>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_N5zMsJT2Eeq5BK6mmo2rWg"/>
+    <edges xmi:type="notation:Connector" xmi:id="__B0CwJULEeqfMc95BD27pw" type="Generalization_Edge" source="__B0p5pULEeqfMc95BD27pw" target="__B5iUJULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="__B0CwZULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="__B0CwpULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__B0Cw5ULEeqfMc95BD27pw" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="__B0CxJULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_sCPOgIVhEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__B0CxZULEeqfMc95BD27pw" points="[330, -770, -643984, -643984]$[170, -847, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__B0CxpULEeqfMc95BD27pw" id="(0.11976047904191617,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__B0Cx5ULEeqfMc95BD27pw" id="(0.7741935483870968,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="__B1Q4ZULEeqfMc95BD27pw" type="Generalization_Edge" source="__B138JULEeqfMc95BD27pw" target="__B0p0JULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="__B1Q4pULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="__B1Q45ULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__B1Q5JULEeqfMc95BD27pw" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="__B1Q5ZULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_alo_UIViEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__B1Q5pULEeqfMc95BD27pw" points="[1230, -390, -643984, -643984]$[1090, -475, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__B1Q55ULEeqfMc95BD27pw" id="(0.39603960396039606,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__B1Q6JULEeqfMc95BD27pw" id="(0.6611570247933884,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="__B2fEpULEeqfMc95BD27pw" type="Generalization_Edge" source="__By0oJULEeqfMc95BD27pw" target="__B5iUJULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="__B2fE5ULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="__B2fFJULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__B2fFZULEeqfMc95BD27pw" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="__B2fFpULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_WYnasIVhEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__B2fF5ULEeqfMc95BD27pw" points="[10, -770, -643984, -643984]$[70, -847, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__B2fGJULEeqfMc95BD27pw" id="(0.08403361344537816,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__B2fGZULEeqfMc95BD27pw" id="(0.12903225806451613,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="__B3tIJULEeqfMc95BD27pw" type="Generalization_Edge" source="__B6weZULEeqfMc95BD27pw" target="__B0p0JULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="__B3tIZULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="__B3tIpULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__B3tI5ULEeqfMc95BD27pw" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="__B3tJJULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_a9amIIViEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__B3tJZULEeqfMc95BD27pw" points="[1370, -390, -643984, -643984]$[1130, -475, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__B3tJpULEeqfMc95BD27pw" id="(0.594059405940594,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__B3tJ5ULEeqfMc95BD27pw" id="(0.8264462809917356,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="__B4UMJULEeqfMc95BD27pw" type="Generalization_Edge" source="__B5iYpULEeqfMc95BD27pw" target="__B0p0JULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="__B4UMZULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="__B4UMpULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__B4UM5ULEeqfMc95BD27pw" x="1" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="__B4UNJULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_ZlFhQIViEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__B4UNZULEeqfMc95BD27pw" points="[810, -390, -643984, -643984]$[970, -475, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__B4UNpULEeqfMc95BD27pw" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__B4UN5ULEeqfMc95BD27pw" id="(0.1652892561983471,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="__B47QJULEeqfMc95BD27pw" type="Generalization_Edge" source="__B0p0JULEeqfMc95BD27pw" target="__B0p5pULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="__B47QZULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="__B47QpULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__B47Q5ULEeqfMc95BD27pw" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="__B47RJULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_67JjgIVhEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__B47RZULEeqfMc95BD27pw" points="[590, -610, -643984, -643984]$[450, -667, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__B47RpULEeqfMc95BD27pw" id="(0.3305785123966942,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__B47R5ULEeqfMc95BD27pw" id="(0.8383233532934131,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="__B47SZULEeqfMc95BD27pw" type="Generalization_Edge" source="__B5iUJULEeqfMc95BD27pw" target="__B2fApULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="__B47SpULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="__B47S5ULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__B47TJULEeqfMc95BD27pw" x="1" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="__B47TZULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_UxrSEIVhEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__B47TpULEeqfMc95BD27pw" points="[170, -950, -643984, -643984]$[210, -1030, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__B47T5ULEeqfMc95BD27pw" id="(0.7741935483870968,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__B47UJULEeqfMc95BD27pw" id="(0.16129032258064516,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="__B5icpULEeqfMc95BD27pw" type="Generalization_Edge" source="__B1Q6ZULEeqfMc95BD27pw" target="__B0p0JULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="__B5ic5ULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="__B5idJULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__B5idZULEeqfMc95BD27pw" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="__B5idpULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_XsCU8IViEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__B5id5ULEeqfMc95BD27pw" points="[510, -390, -643984, -643984]$[950, -475, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__B5ieJULEeqfMc95BD27pw" id="(0.2,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__B5ieZULEeqfMc95BD27pw" id="(0.08264462809917356,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="__B6JYJULEeqfMc95BD27pw" type="Generalization_Edge" source="__B3GEZULEeqfMc95BD27pw" target="__B0p0JULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="__B6JYZULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="__B6JYpULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__B6JY5ULEeqfMc95BD27pw" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="__B6JZJULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_aLhPIIViEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__B6JZZULEeqfMc95BD27pw" points="[1050, -390, -643984, -643984]$[1050, -475, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__B6JZpULEeqfMc95BD27pw" id="(0.5529953917050692,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__B6JZ5ULEeqfMc95BD27pw" id="(0.49586776859504134,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="__B6JaJULEeqfMc95BD27pw" type="Generalization_Edge" source="__B14AJULEeqfMc95BD27pw" target="__B0p5pULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="__B6JaZULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="__B6JapULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__B6Ja5ULEeqfMc95BD27pw" x="1" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="__B6JbJULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_qWp2cIVhEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__B6JbZULEeqfMc95BD27pw" points="[410, -610, -643984, -643984]$[410, -667, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__B6JbpULEeqfMc95BD27pw" id="(0.2803738317757009,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__B6Jb5ULEeqfMc95BD27pw" id="(0.11976047904191617,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="__B6JcZULEeqfMc95BD27pw" type="Generalization_Edge" source="__B14FJULEeqfMc95BD27pw" target="__B0p0JULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="__B6JcpULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="__B6Jc5ULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__B6JdJULEeqfMc95BD27pw" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="__B6JdZULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_baXn4IViEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__B6JdpULEeqfMc95BD27pw" points="[1470, -390, -643984, -643984]$[1130, -475, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__B6Jd5ULEeqfMc95BD27pw" id="(0.39603960396039606,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__B6JeJULEeqfMc95BD27pw" id="(0.8264462809917356,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="__B6JeZULEeqfMc95BD27pw" type="Generalization_Edge" source="__B3tKJULEeqfMc95BD27pw" target="__B2fApULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="__B6JepULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="__B6Je5ULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__B6JfJULEeqfMc95BD27pw" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="__B6JfZULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_UQtTAIVhEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__B6JfpULEeqfMc95BD27pw" points="[450, -970, -643984, -643984]$[290, -1030, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__B6Jf5ULEeqfMc95BD27pw" id="(0.24096385542168675,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__B6JgJULEeqfMc95BD27pw" id="(0.8064516129032258,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="__B6wcZULEeqfMc95BD27pw" type="Generalization_Edge" source="__B6JgZULEeqfMc95BD27pw" target="__B0p0JULEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="__B6wcpULEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="__B6wc5ULEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="__B6wdJULEeqfMc95BD27pw" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="__B6wdZULEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_YkOhMIViEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__B6wdpULEeqfMc95BD27pw" points="[670, -390, -643984, -643984]$[970, -475, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__B6wd5ULEeqfMc95BD27pw" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__B6weJULEeqfMc95BD27pw" id="(0.1652892561983471,1.0)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_8k-e0JUJEeqWd_6S3mbYXg" type="PapyrusUMLProfileDiagram" name="Recurrent_layers" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_IBabAJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_IBabAZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_IBabApUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_IBabA5UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_AP36kIVkEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_IBabBJUMEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_IBabBZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_IBabBpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_IBabB5UMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IBabCJUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_IBabCZUMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_IBabCpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_IBabC5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_IBabDJUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IBabDZUMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_-5MbgIVjEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IBabEZUMEeqfMc95BD27pw" x="450" y="210"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_IBbpIJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_IBbpIZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_IBbpIpUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_IBbpI5UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_495hwIVjEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_IBbpJJUMEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_IBbpJZUMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_6la5MIVjEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_IBbpJpUMEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_IBbpJ5UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_7-lrkIVjEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_IBbpKJUMEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_IBbpKZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_IBbpKpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_IBbpK5UMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IBbpLJUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_IBbpLZUMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_IBbpLpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_IBbpL5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_IBbpMJUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IBbpMZUMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_tHLn4IViEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IBbpNZUMEeqfMc95BD27pw" x="410" y="10"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_IBcQMJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_IBcQMZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_IBcQMpUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_IBcQM5UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_iaV_0IVkEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_IBcQNJUMEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_IBcQNZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_IBcQNpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_IBcQN5UMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IBcQOJUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_IBcQOZUMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_IBcQOpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_IBcQO5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_IBcQPJUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IBcQPZUMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_f3AgYIVkEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IBcQQZUMEeqfMc95BD27pw" x="40" y="520"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_IBc3SJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_IBc3SZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_IBc3SpUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_IBc3S5UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_Mgv2UIVkEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_IBc3TJUMEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_IBc3TZUMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_NmsKsIVkEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_IBc3TpUMEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_IBc3T5UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_bIpT0IVkEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_IBc3UJUMEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_IBc3UZUMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_dH_VYIVkEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_IBc3UpUMEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_GNDAIKaAEeqIr7xwFiWQGQ" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_GM1kwKaAEeqIr7xwFiWQGQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_GNDAIaaAEeqIr7xwFiWQGQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_M3Mj8KaAEeqIr7xwFiWQGQ" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_M26QEKaAEeqIr7xwFiWQGQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_M3Mj8aaAEeqIr7xwFiWQGQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_OaydoKaAEeqIr7xwFiWQGQ" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_OalCQKaAEeqIr7xwFiWQGQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_OaydoaaAEeqIr7xwFiWQGQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_PFwtQKaAEeqIr7xwFiWQGQ" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_PFb9IKaAEeqIr7xwFiWQGQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_PFwtQaaAEeqIr7xwFiWQGQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_TRIhgKaAEeqIr7xwFiWQGQ" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_TQ4C0KaAEeqIr7xwFiWQGQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_TRIhgaaAEeqIr7xwFiWQGQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_upKNIKaBEeqIr7xwFiWQGQ" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_uo4gUKaBEeqIr7xwFiWQGQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_upKNIaaBEeqIr7xwFiWQGQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_zj8sIKaBEeqIr7xwFiWQGQ" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_zjmG0KaBEeqIr7xwFiWQGQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_zj8sIaaBEeqIr7xwFiWQGQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_0zS0IKaBEeqIr7xwFiWQGQ" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_0y_SIKaBEeqIr7xwFiWQGQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_0zS0IaaBEeqIr7xwFiWQGQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_7RCToKaBEeqIr7xwFiWQGQ" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_7QlAoKaBEeqIr7xwFiWQGQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_7RCToaaBEeqIr7xwFiWQGQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_ugwuwOauEeq2yMJqys2DtQ" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_ugELMOauEeq2yMJqys2DtQ"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_ugwuweauEeq2yMJqys2DtQ"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_IBc3U5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_IBc3VJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_IBc3VZUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IBc3VpUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_IBc3V5UMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_IBc3WJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_IBc3WZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_IBc3WpUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IBc3W5UMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_w_eSoIVjEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IBc3X5UMEeqfMc95BD27pw" x="180" y="180"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_IBdeUJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_IBdeUZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_IBdeUpUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_IBdeU5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_IBdeVJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_IBdeVZUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IBdeVpUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_IBdeV5UMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_IBdeWJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_IBdeWZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_IBdeWpUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IBdeW5UMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_l8ROcIVkEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IBdeX5UMEeqfMc95BD27pw" x="420" y="520"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_IBeFYJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_IBeFYZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_IBeFYpUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_IBeFY5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_IBeFZJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_IBeFZZUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IBeFZpUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_IBeFZ5UMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_IBeFaJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_IBeFaZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_IBeFapUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IBeFa5UMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_EdBQcIVkEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IBeFb5UMEeqfMc95BD27pw" x="850" y="210"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_IBescJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_IBescZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_IBescpUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_IBesc5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_IBesdJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_IBesdZUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IBesdpUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_IBesd5UMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_IBeseJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_IBeseZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_IBesepUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IBese5UMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_CfAEkIVkEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IBesf5UMEeqfMc95BD27pw" x="710" y="210"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_IBfTj5UMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_IBfTkJUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_IBfTkZUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_IBfTkpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_IBfTk5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_IBfTlJUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IBfTlZUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_IBfTlpUMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_IBfTl5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_IBfTmJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_IBfTmZUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IBfTmpUMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_kOLU8IVkEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IBfTnpUMEeqfMc95BD27pw" x="280" y="520"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_8k-e0ZUJEeqWd_6S3mbYXg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_8k-e0pUJEeqWd_6S3mbYXg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_8k-e05UJEeqWd_6S3mbYXg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_RAjiQJT2Eeq5BK6mmo2rWg"/>
+    </styles>
+    <styles xmi:type="notation:BooleanValueStyle" xmi:id="_GVw4cPmcEeqCRcDdPeQY2A" name="rulergrid.viewgrid"/>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_RAjiQJT2Eeq5BK6mmo2rWg"/>
+    <edges xmi:type="notation:Connector" xmi:id="_IBcQQpUMEeqfMc95BD27pw" type="Generalization_Edge" source="_IBeFYJUMEeqfMc95BD27pw" target="_IBbpIJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_IBcQQ5UMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_IBcQRJUMEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_IBcQRZUMEeqfMc95BD27pw" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_IBcQRpUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_svnxkIVkEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_IBcQR5UMEeqfMc95BD27pw" points="[870, 190, -643984, -643984]$[570, 125, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IBcQSJUMEeqfMc95BD27pw" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IBcQSZUMEeqfMc95BD27pw" id="(0.9090909090909091,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_IBc3QJUMEeqfMc95BD27pw" type="Generalization_Edge" source="_IBdeUJUMEeqfMc95BD27pw" target="_IBc3SJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_IBc3QZUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_IBc3QpUMEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_IBc3Q5UMEeqfMc95BD27pw" x="-2" y="57"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_IBc3RJUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_qv_cIIVkEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_IBc3RZUMEeqfMc95BD27pw" points="[430, 410, -643984, -643984]$[330, 341, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IBc3RpUMEeqfMc95BD27pw" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IBc3R5UMEeqfMc95BD27pw" id="(0.8264462809917356,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_IBesgJUMEeqfMc95BD27pw" type="Generalization_Edge" source="_IBescJUMEeqfMc95BD27pw" target="_IBbpIJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_IBesgZUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_IBesgpUMEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_IBesg5UMEeqfMc95BD27pw" x="-2" y="57"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_IBeshJUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_sMLGQIVkEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_IBeshZUMEeqfMc95BD27pw" points="[730, 190, -643984, -643984]$[550, 125, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IBeshpUMEeqfMc95BD27pw" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IBesh5UMEeqfMc95BD27pw" id="(0.8080808080808081,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_IBesiJUMEeqfMc95BD27pw" type="Generalization_Edge" source="_IBfTj5UMEeqfMc95BD27pw" target="_IBc3SJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_IBesiZUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_IBesipUMEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_IBesi5UMEeqfMc95BD27pw" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_IBesjJUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_p2PwsIVkEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_IBesjZUMEeqfMc95BD27pw" points="[310, 410, -643984, -643984]$[290, 341, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IBesjpUMEeqfMc95BD27pw" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IBesj5UMEeqfMc95BD27pw" id="(0.5785123966942148,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_IBeskJUMEeqfMc95BD27pw" type="Generalization_Edge" source="_IBcQMJUMEeqfMc95BD27pw" target="_IBc3SJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_IBeskZUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_IBeskpUMEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_IBesk5UMEeqfMc95BD27pw" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_IBeslJUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_pXFIcIVkEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_IBeslZUMEeqfMc95BD27pw" points="[150, 410, -643984, -643984]$[230, 341, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IBeslpUMEeqfMc95BD27pw" id="(0.6976744186046512,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IBesl5UMEeqfMc95BD27pw" id="(0.3305785123966942,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_IBesmJUMEeqfMc95BD27pw" type="Generalization_Edge" source="_IBc3SJUMEeqfMc95BD27pw" target="_IBbpIJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_IBfTgJUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_IBfTgZUMEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_IBfTgpUMEeqfMc95BD27pw" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_IBfTg5UMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_tTUUgIVkEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_IBfThJUMEeqfMc95BD27pw" points="[270, 190, -643984, -643984]$[450, 125, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IBfThZUMEeqfMc95BD27pw" id="(0.49586776859504134,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IBfThpUMEeqfMc95BD27pw" id="(0.3048780487804878,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_IBfTh5UMEeqfMc95BD27pw" type="Generalization_Edge" source="_IBabAJUMEeqfMc95BD27pw" target="_IBbpIJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_IBfTiJUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_IBfTiZUMEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_IBfTipUMEeqfMc95BD27pw" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_IBfTi5UMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_rjgjwIVkEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_IBfTjJUMEeqfMc95BD27pw" points="[530, 190, -643984, -643984]$[530, 125, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IBfTjZUMEeqfMc95BD27pw" id="(0.5,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IBfTjpUMEeqfMc95BD27pw" id="(0.7070707070707071,1.0)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_90F9UJUJEeqWd_6S3mbYXg" type="PapyrusUMLProfileDiagram" name="Transformer_layers" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_QyNiR5UMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_QyNiSJUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_QyNiSZUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_QyNiSpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_QyNiS5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_QyNiTJUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QyNiTZUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_QyNiTpUMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_QyNiT5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_QyNiUJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_QyNiUZUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QyNiUpUMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_-aqagIVlEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QyNiVpUMEeqfMc95BD27pw" x="10380" y="1160"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_QyNiX5UMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_QyNiYJUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_QyNiYZUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_QyNiYpUMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_Nai6MIVmEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_QyNiY5UMEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_QyNiZJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_QyNiZZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_QyNiZpUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QyNiZ5UMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_QyNiaJUMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_QyNiaZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_QyNiapUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_QyNia5UMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QyNibJUMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_JjphIIVmEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QyNicJUMEeqfMc95BD27pw" x="10760" y="1160"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_QyNieJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_QyNieZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_QyNiepUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_QyNie5UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_sbCMMIVlEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_QyNifJUMEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_QyNifZUMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_tmddgIVlEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_QyNifpUMEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_QyNif5UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_uFbRcIVlEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_QyNigJUMEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_QyNigZUMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_v6pGoIVlEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_QyNigpUMEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_QyNig5UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_wuIZEIVlEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_QyNihJUMEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_QyNihZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_QyNihpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_QyNih5UMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QyNiiJUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_QyNiiZUMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_QyNiipUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_QyNii5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_QyNijJUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QyNijZUMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_gsKxUIVlEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QyNikZUMEeqfMc95BD27pw" x="10360" y="900"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_QyNik5UMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_QyNilJUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_QyNilZUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_QyNilpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_QyNil5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_QyNimJUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QyNimZUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_QyNimpUMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_QyNim5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_QyNinJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_QyNinZUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QyNinpUMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_zItakIVkEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QyNiopUMEeqfMc95BD27pw" x="10679" y="704"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_QyOJUJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_QyOJUZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_QyOJUpUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_QyOJU5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_QyOJVJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_QyOJVZUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QyOJVpUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_QyOJV5UMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_QyOJWJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_QyOJWZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_QyOJWpUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QyOJW5UMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_AIIo8IVmEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QyOJX5UMEeqfMc95BD27pw" x="10560" y="1160"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_QyOJYJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_QyOJYZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_QyOJYpUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_QyOJY5UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_mZVvgIVlEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_QyOJZJUMEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_QyOJZZUMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_oByUAIVlEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_QyOJZpUMEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_QyOJZ5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_QyOJaJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_QyOJaZUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QyOJapUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_QyOJa5UMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_QyOJbJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_QyOJbZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_QyOJbpUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QyOJb5UMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_kfJ6wIVlEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QyOJc5UMEeqfMc95BD27pw" x="10860" y="900"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_QyOJdJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_QyOJdZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_QyOJdpUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_QyOJd5UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_2FyaQIVlEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_QyOJeJUMEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_QyOJeZUMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_4EeUgIVlEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_QyOJepUMEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_QyOJe5UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_606b0IVlEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_QyOJfJUMEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_QyOJfZUMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_8LVcMIVlEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_QyOJfpUMEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_QyOJf5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_QyOJgJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_QyOJgZUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QyOJgpUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_QyOJg5UMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_QyOJhJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_QyOJhZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_QyOJhpUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QyOJh5UMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_0gXUkIVlEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QyOJi5UMEeqfMc95BD27pw" x="10100" y="1160"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_QyOJjJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_QyOJjZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_QyOJjpUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_QyOJj5UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_MA0HIIVmEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_QyOJkJUMEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_QyOJkZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_QyOJkpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_QyOJk5UMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QyOJlJUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_QyOJlZUMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_QyOJlpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_QyOJl5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_QyOJmJUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QyOJmZUMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_Ku6aYIVmEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QyOJnZUMEeqfMc95BD27pw" x="11040" y="1160"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_90F9UZUJEeqWd_6S3mbYXg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_90F9UpUJEeqWd_6S3mbYXg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_90F9U5UJEeqWd_6S3mbYXg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_T8DDAJT2Eeq5BK6mmo2rWg"/>
+    </styles>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_T8DDAJT2Eeq5BK6mmo2rWg"/>
+    <edges xmi:type="notation:Connector" xmi:id="_QyM7MJUMEeqfMc95BD27pw" type="Generalization_Edge" source="_QyOJdJUMEeqfMc95BD27pw" target="_QyNieJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_QyM7MZUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_QyM7MpUMEeqfMc95BD27pw" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_QyM7M5UMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_GMzhIIVmEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QyM7NJUMEeqfMc95BD27pw" points="[10220, 1140, -643984, -643984]$[10380, 1047, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QyM7NZUMEeqfMc95BD27pw" id="(0.5645161290322581,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QyM7NpUMEeqfMc95BD27pw" id="(0.1762114537444934,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_QyNiQJUMEeqfMc95BD27pw" type="Generalization_Edge" source="_QyOJjJUMEeqfMc95BD27pw" target="_QyOJYJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_QyNiQZUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_QyNiQpUMEeqfMc95BD27pw" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_QyNiQ5UMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_QhQMcIVmEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QyNiRJUMEeqfMc95BD27pw" points="[11120, 1140, -643984, -643984]$[10980, 999, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QyNiRZUMEeqfMc95BD27pw" id="(0.47619047619047616,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QyNiRpUMEeqfMc95BD27pw" id="(0.7106598984771574,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_QyNiV5UMEeqfMc95BD27pw" type="Generalization_Edge" source="_QyNieJUMEeqfMc95BD27pw" target="_QyNik5UMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_QyNiWJUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_QyNiWZUMEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_QyNiWpUMEeqfMc95BD27pw" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_QyNiW5UMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_SF09kIVmEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QyNiXJUMEeqfMc95BD27pw" points="[10500, 880, -643984, -643984]$[10700, 800, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QyNiXZUMEeqfMc95BD27pw" id="(0.7048458149779736,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QyNiXpUMEeqfMc95BD27pw" id="(0.36283185840707965,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_QyNicZUMEeqfMc95BD27pw" type="Generalization_Edge" source="_QyNiR5UMEeqfMc95BD27pw" target="_QyNieJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_QyNicpUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_QyNic5UMEeqfMc95BD27pw" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_QyNidJUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_GrExgIVmEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QyNidZUMEeqfMc95BD27pw" points="[10420, 1140, -643984, -643984]$[10420, 1047, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QyNidpUMEeqfMc95BD27pw" id="(0.40540540540540543,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QyNid5UMEeqfMc95BD27pw" id="(0.3524229074889868,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_QyOJnpUMEeqfMc95BD27pw" type="Generalization_Edge" source="_QyOJYJUMEeqfMc95BD27pw" target="_QyNik5UMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_QyOJn5UMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_QyOJoJUMEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_QyOJoZUMEeqfMc95BD27pw" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_QyOJopUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_RehtAIVmEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QyOJo5UMEeqfMc95BD27pw" points="[10940, 880, -643984, -643984]$[10740, 800, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QyOJpJUMEeqfMc95BD27pw" id="(0.5076142131979695,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QyOJpZUMEeqfMc95BD27pw" id="(0.7168141592920354,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_QyOJp5UMEeqfMc95BD27pw" type="Generalization_Edge" source="_QyNiX5UMEeqfMc95BD27pw" target="_QyOJYJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_QyOJqJUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_QyOJqZUMEeqfMc95BD27pw" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_QyOJqpUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_P0nv8IVmEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QyOJq5UMEeqfMc95BD27pw" points="[10860, 1140, -643984, -643984]$[10920, 999, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QyOJrJUMEeqfMc95BD27pw" id="(0.5714285714285714,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QyOJrZUMEeqfMc95BD27pw" id="(0.40609137055837563,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_QyOJrpUMEeqfMc95BD27pw" type="Generalization_Edge" source="_QyOJUJUMEeqfMc95BD27pw" target="_QyNieJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_QyOJr5UMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_QyOJsJUMEeqfMc95BD27pw" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_QyOJsZUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_HJqyAIVmEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QyOJspUMEeqfMc95BD27pw" points="[10580, 1140, -643984, -643984]$[10500, 1047, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QyOJs5UMEeqfMc95BD27pw" id="(0.272108843537415,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QyOJtJUMEeqfMc95BD27pw" id="(0.7048458149779736,1.0)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="__VnacJUJEeqWd_6S3mbYXg" type="PapyrusUMLProfileDiagram" name="Linear_layers" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_e_03gJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_e_03gZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_e_03gpUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_e_03g5UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_snPzEIhhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_e_03hJUMEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_e_03hZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_e_03hpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_e_03h5UMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e_03iJUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_e_03iZUMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_e_03ipUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_e_03i5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_e_03jJUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e_03jZUMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_ozz9sIhhEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e_03kZUMEeqfMc95BD27pw" x="11380" y="1220"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_e_03kpUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_e_03k5UMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_e_03lJUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_e_03lZUMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_u5YNwIhhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_e_03lpUMEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_e_03l5UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_wboqsIhhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_e_03mJUMEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_e_03mZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_e_03mpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_e_03m5UMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e_03nJUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_e_03nZUMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_e_03npUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_e_03n5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_e_03oJUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e_03oZUMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_pJFqIIhhEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e_03pZUMEeqfMc95BD27pw" x="11760" y="1220"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_e_03ppUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_e_03p5UMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_e_03qJUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_e_03qZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_e_03qpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_e_03q5UMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e_03rJUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_e_03rZUMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_e_03rpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_e_03r5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_e_03sJUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e_03sZUMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_c_eM8IhhEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e_03tZUMEeqfMc95BD27pw" x="11980" y="940"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_e_1ekJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_e_1ekZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_e_1ekpUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_e_1ek5UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_lYOnoIhhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_e_1elJUMEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_e_1elZUMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_m2y3YIhhEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_e_1elpUMEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_e_1el5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_e_1emJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_e_1emZUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e_1empUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_e_1em5UMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_e_1enJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_e_1enZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_e_1enpUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e_1en5UMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_hGyAkIhhEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e_1eo5UMEeqfMc95BD27pw" x="11560" y="940"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_e_1epJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_e_1epZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_e_1eppUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_e_1ep5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_e_1eqJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_e_1eqZUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e_1eqpUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_e_1eq5UMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_e_1erJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_e_1erZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_e_1erpUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e_1er5UMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_ThvuQIhhEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e_1es5UMEeqfMc95BD27pw" x="11720" y="700"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="__VnacZUJEeqWd_6S3mbYXg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="__VnacpUJEeqWd_6S3mbYXg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="__Vnac5UJEeqWd_6S3mbYXg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_WwqfsJT2Eeq5BK6mmo2rWg"/>
+    </styles>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_WwqfsJT2Eeq5BK6mmo2rWg"/>
+    <edges xmi:type="notation:Connector" xmi:id="_e_zpYJUMEeqfMc95BD27pw" type="Generalization_Edge" source="_e_03ppUMEeqfMc95BD27pw" target="_e_1epJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_e_zpYZUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_e_zpYpUMEeqfMc95BD27pw" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_e_zpY5UMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_5QYd0IhhEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_e_zpZJUMEeqfMc95BD27pw" points="[12000, 920, -643984, -643984]$[11780, 780, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_e_zpZZUMEeqfMc95BD27pw" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_e_zpZpUMEeqfMc95BD27pw" id="(0.8,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_e_0QcZUMEeqfMc95BD27pw" type="Generalization_Edge" source="_e_03kpUMEeqfMc95BD27pw" target="_e_1ekJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_e_0QcpUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_e_0Qc5UMEeqfMc95BD27pw" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_e_0QdJUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_4ugf0IhhEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_e_0QdZUMEeqfMc95BD27pw" points="[11820, 1200, -643984, -643984]$[11700, 1039, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_e_0QdpUMEeqfMc95BD27pw" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_e_0Qd5UMEeqfMc95BD27pw" id="(0.7920792079207921,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_e_0QeJUMEeqfMc95BD27pw" type="Generalization_Edge" source="_e_03gJUMEeqfMc95BD27pw" target="_e_1ekJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_e_0QeZUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_e_0QepUMEeqfMc95BD27pw" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_e_0Qe5UMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_4MFvQIhhEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_e_0QfJUMEeqfMc95BD27pw" points="[11520, 1200, -643984, -643984]$[11600, 1039, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_e_0QfZUMEeqfMc95BD27pw" id="(0.8247422680412371,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_e_0QfpUMEeqfMc95BD27pw" id="(0.297029702970297,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_e_0Qf5UMEeqfMc95BD27pw" type="Generalization_Edge" source="_e_1ekJUMEeqfMc95BD27pw" target="_e_1epJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_e_0QgJUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_e_0QgZUMEeqfMc95BD27pw" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_e_0QgpUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_58n4wIhhEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_e_0Qg5UMEeqfMc95BD27pw" points="[11660, 920, -643984, -643984]$[11720, 780, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_e_0QhJUMEeqfMc95BD27pw" id="(0.594059405940594,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_e_0QhZUMEeqfMc95BD27pw" id="(0.2,1.0)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_Ahgl0JUKEeqWd_6S3mbYXg" type="PapyrusUMLProfileDiagram" name="Dropout_layers" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_MzKwUK8XEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_MzKwUa8XEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_MzKwUq8XEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_MzKwU68XEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_MzKwVK8XEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_MzKwVa8XEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzKwVq8XEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_MzKwV68XEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_MzKwWK8XEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_MzKwWa8XEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_MzKwWq8XEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzKwW68XEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_QF418IhiEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzKwX68XEeqhVOlV64dXmA" x="50" y="290"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_MzLXYK8XEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_MzLXYa8XEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_MzLXYq8XEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_MzLXY68XEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_MzLXZK8XEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_MzLXZa8XEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzLXZq8XEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_MzLXZ68XEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_MzLXaK8XEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_MzLXaa8XEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_MzLXaq8XEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzLXa68XEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_O7XjkIhiEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzLXb68XEeqhVOlV64dXmA" x="-370" y="290"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_MzLXcK8XEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_MzLXca8XEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_MzLXcq8XEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_MzLXc68XEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_MzLXdK8XEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_MzLXda8XEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzLXdq8XEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_MzLXd68XEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_MzLXeK8XEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_MzLXea8XEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_MzLXeq8XEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzLXe68XEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_Proi4IhiEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzLXf68XEeqhVOlV64dXmA" x="-90" y="290"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_MzLXiK8XEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_MzLXia8XEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_MzLXiq8XEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_MzLXi68XEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_L5uXgIhiEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_MzLXjK8XEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_MzLXja8XEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_Mxr6QIhiEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_MzLXjq8XEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_MzLXj68XEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_k7wEsKcmEeqkzM30xo7jnw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_MzLXkK8XEeqhVOlV64dXmA"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_MzLXka8XEeqhVOlV64dXmA" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_m_lksKcmEeqkzM30xo7jnw"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_MzLXkq8XEeqhVOlV64dXmA"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_MzLXk68XEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_MzLXlK8XEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_MzLXla8XEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzLXlq8XEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_MzLXl68XEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_MzLXmK8XEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_MzLXma8XEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_MzLXmq8XEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzLXm68XEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_JJr40IhiEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzLXn68XEeqhVOlV64dXmA" x="-210" y="30"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_MzLXoK8XEeqhVOlV64dXmA" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_MzLXoa8XEeqhVOlV64dXmA" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_MzLXoq8XEeqhVOlV64dXmA" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_MzLXo68XEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_MzLXpK8XEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_MzLXpa8XEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzLXpq8XEeqhVOlV64dXmA"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_MzLXp68XEeqhVOlV64dXmA" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_MzLXqK8XEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_MzLXqa8XEeqhVOlV64dXmA"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_MzLXqq8XEeqhVOlV64dXmA"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzLXq68XEeqhVOlV64dXmA"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_PMP4MIhiEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MzLXr68XEeqhVOlV64dXmA" x="-230" y="290"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_Ahgl0ZUKEeqWd_6S3mbYXg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_Ahgl0pUKEeqWd_6S3mbYXg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_Ahgl05UKEeqWd_6S3mbYXg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_ZUMzcJT2Eeq5BK6mmo2rWg"/>
+    </styles>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_ZUMzcJT2Eeq5BK6mmo2rWg"/>
+    <edges xmi:type="notation:Connector" xmi:id="_MzLXgK8XEeqhVOlV64dXmA" type="Generalization_Edge" source="_MzLXYK8XEeqhVOlV64dXmA" target="_MzLXiK8XEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_MzLXga8XEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_MzLXgq8XEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_MzLXg68XEeqhVOlV64dXmA" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_MzLXhK8XEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_rp92AIhiEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_MzLXha8XEeqhVOlV64dXmA" points="[-350, 270, -643984, -643984]$[-210, 129, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MzLXhq8XEeqhVOlV64dXmA" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MzLXh68XEeqhVOlV64dXmA" id="(0.11428571428571428,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_MzL-cK8XEeqhVOlV64dXmA" type="Generalization_Edge" source="_MzKwUK8XEeqhVOlV64dXmA" target="_MzLXiK8XEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_MzL-ca8XEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_MzL-cq8XEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_MzL-c68XEeqhVOlV64dXmA" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_MzL-dK8XEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_t3zmkIhiEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_MzL-da8XEeqhVOlV64dXmA" points="[70, 270, -643984, -643984]$[-70, 129, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MzL-dq8XEeqhVOlV64dXmA" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MzL-d68XEeqhVOlV64dXmA" id="(0.9142857142857143,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_MzL-eK8XEeqhVOlV64dXmA" type="Generalization_Edge" source="_MzLXoK8XEeqhVOlV64dXmA" target="_MzLXiK8XEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_MzL-ea8XEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_MzL-eq8XEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_MzL-e68XEeqhVOlV64dXmA" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_MzL-fK8XEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_sKSU0IhiEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_MzL-fa8XEeqhVOlV64dXmA" points="[-190, 270, -643984, -643984]$[-190, 129, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MzL-fq8XEeqhVOlV64dXmA" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MzL-f68XEeqhVOlV64dXmA" id="(0.22857142857142856,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_MzL-gK8XEeqhVOlV64dXmA" type="Generalization_Edge" source="_MzLXcK8XEeqhVOlV64dXmA" target="_MzLXiK8XEeqhVOlV64dXmA">
+      <children xmi:type="notation:DecorationNode" xmi:id="_MzL-ga8XEeqhVOlV64dXmA" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_MzL-gq8XEeqhVOlV64dXmA" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_MzL-g68XEeqhVOlV64dXmA" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_MzL-hK8XEeqhVOlV64dXmA"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_srztgIhiEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_MzL-ha8XEeqhVOlV64dXmA" points="[-50, 270, -643984, -643984]$[-90, 129, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MzL-hq8XEeqhVOlV64dXmA" id="(0.2,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MzL-h68XEeqhVOlV64dXmA" id="(0.8,1.0)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_B1wb8JUKEeqWd_6S3mbYXg" type="PapyrusUMLProfileDiagram" name="Sparse_layers" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_nXg7MJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_nXg7MZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_nXg7MpUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_nXg7M5UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_nWwe8IhjEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_nXg7NJUMEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_nXg7NZUMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_p2G2QIhjEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_nXg7NpUMEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_nXg7N5UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_sIOC0IhjEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_nXg7OJUMEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_nXg7OZUMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_tKafoIhjEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_nXg7OpUMEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_nXg7O5UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_vicuAIhjEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_nXg7PJUMEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_nXg7PZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_nXg7PpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_nXg7P5UMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nXg7QJUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_nXg7QZUMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_nXg7QpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_nXg7Q5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_nXg7RJUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nXg7RZUMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_AdGtwIhjEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nXg7SZUMEeqfMc95BD27pw" x="12940" y="700"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_nXhiQJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_nXhiQZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_nXhiQpUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_nXhiQ5UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_ytrT4IhjEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_nXhiRJUMEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_nXhiRZUMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_z2sxcIhjEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_nXhiRpUMEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_nXhiR5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_nXhiSJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_nXhiSZUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nXhiSpUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_nXhiS5UMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_nXhiTJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_nXhiTZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_nXhiTpUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nXhiT5UMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_kIoWEIhjEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nXhiU5UMEeqfMc95BD27pw" x="13060" y="960"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_nXhiVJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_nXhiVZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_nXhiVpUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_nXhiV5UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_w7GjAIhjEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_nXhiWJUMEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_nXhiWZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_nXhiWpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_nXhiW5UMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nXhiXJUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_nXhiXZUMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_nXhiXpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_nXhiX5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_nXhiYJUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nXhiYZUMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_HDvqkIhjEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nXhiZZUMEeqfMc95BD27pw" x="12820" y="960"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_B1wb8ZUKEeqWd_6S3mbYXg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_B1wb8pUKEeqWd_6S3mbYXg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_B1wb85UKEeqWd_6S3mbYXg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_cKwJ0JT2Eeq5BK6mmo2rWg"/>
+    </styles>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_cKwJ0JT2Eeq5BK6mmo2rWg"/>
+    <edges xmi:type="notation:Connector" xmi:id="_nXgUIJUMEeqfMc95BD27pw" type="Generalization_Edge" source="_nXhiVJUMEeqfMc95BD27pw" target="_nXg7MJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_nXgUIZUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_nXgUIpUMEeqfMc95BD27pw" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_nXgUI5UMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_7zj6UIhjEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_nXgUJJUMEeqfMc95BD27pw" points="[12920, 940, -643984, -643984]$[12980, 847, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nXgUJZUMEeqfMc95BD27pw" id="(0.594059405940594,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nXgUJpUMEeqfMc95BD27pw" id="(0.2575107296137339,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_nXhiaJUMEeqfMc95BD27pw" type="Generalization_Edge" source="_nXhiQJUMEeqfMc95BD27pw" target="_nXg7MJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_nXhiaZUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_nXhiapUMEeqfMc95BD27pw" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_nXhia5UMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_8S-aMIhjEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_nXhibJUMEeqfMc95BD27pw" points="[13160, 940, -643984, -643984]$[13080, 847, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nXhibZUMEeqfMc95BD27pw" id="(0.5128205128205128,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nXhibpUMEeqfMc95BD27pw" id="(0.6866952789699571,1.0)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_D1T44JUKEeqWd_6S3mbYXg" type="PapyrusUMLProfileDiagram" name="Distance_functions" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_r-GEwJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_r-GEwZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_r-GEwpUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_r-GEw5UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_Km4ksIhkEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_r-GExJUMEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_r-GExZUMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_LieqQIhkEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_r-GExpUMEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_r-GEx5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_r-GEyJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_r-GEyZUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_r-GEypUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_r-GEy5UMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_r-GEzJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_r-GEzZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_r-GEzpUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_r-GEz5UMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_F-SB4IhkEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_r-GE05UMEeqfMc95BD27pw" x="13700" y="960"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_r-Gr0JUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_r-Gr0ZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_r-Gr0pUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_r-Gr05UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_D1Gu4IhkEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_r-Gr1JUMEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_r-Gr1ZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_r-Gr1pUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_r-Gr15UMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_r-Gr2JUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_r-Gr2ZUMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_r-Gr2pUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_r-Gr25UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_r-Gr3JUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_r-Gr3ZUMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_9-4iYIhjEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_r-Gr4ZUMEeqfMc95BD27pw" x="13560" y="700"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_r-Gr8JUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_r-Gr8ZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_r-Gr8pUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_r-Gr85UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_JmnagIhkEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_r-Gr9JUMEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_r-Gr9ZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_r-Gr9pUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_r-Gr95UMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_r-Gr-JUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_r-Gr-ZUMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_r-Gr-pUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_r-Gr-5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_r-Gr_JUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_r-Gr_ZUMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_Ff9uMIhkEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_r-GsAZUMEeqfMc95BD27pw" x="13460" y="960"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_D1T44ZUKEeqWd_6S3mbYXg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_D1T44pUKEeqWd_6S3mbYXg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_D1T445UKEeqWd_6S3mbYXg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_fjUoIJT2Eeq5BK6mmo2rWg"/>
+    </styles>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_fjUoIJT2Eeq5BK6mmo2rWg"/>
+    <edges xmi:type="notation:Connector" xmi:id="_r-Gr4pUMEeqfMc95BD27pw" type="Generalization_Edge" source="_r-Gr8JUMEeqfMc95BD27pw" target="_r-Gr0JUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_r-Gr45UMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_r-Gr5JUMEeqfMc95BD27pw" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_r-Gr5ZUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_QjaNgIhkEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_r-Gr5pUMEeqfMc95BD27pw" points="[13540, 940, -643984, -643984]$[13580, 783, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_r-Gr55UMEeqfMc95BD27pw" id="(0.6329113924050633,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_r-Gr6JUMEeqfMc95BD27pw" id="(0.25806451612903225,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_r-Gr6ZUMEeqfMc95BD27pw" type="Generalization_Edge" source="_r-GEwJUMEeqfMc95BD27pw" target="_r-Gr0JUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_r-Gr6pUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_r-Gr65UMEeqfMc95BD27pw" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_r-Gr7JUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_RFcjkIhkEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_r-Gr7ZUMEeqfMc95BD27pw" points="[13720, 940, -643984, -643984]$[13660, 783, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_r-Gr7pUMEeqfMc95BD27pw" id="(0.2185792349726776,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_r-Gr75UMEeqfMc95BD27pw" id="(0.7741935483870968,1.0)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_FJrq0JUKEeqWd_6S3mbYXg" type="PapyrusUMLProfileDiagram" name="Loss_functions" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_w8sFsJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w8sFsZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w8sFspUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_w8sFs5UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_qCV-oIhnEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_w8sFtJUMEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w8sFtZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w8sFtpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w8sFt5UMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w8sFuJUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w8sFuZUMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w8sFupUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w8sFu5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w8sFvJUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w8sFvZUMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_oNze4IhnEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w8t64JUMEeqfMc95BD27pw" x="510" y="-170"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_w8t64ZUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w8t64pUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w8t645UMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_w8t65JUMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_2xgRgIhqEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_w8t65ZUMEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w8t65pUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w8t655UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w8t66JUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w8t66ZUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w8t66pUMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w8t665UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w8t67JUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w8t67ZUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w8t67pUMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_1ml9kIhqEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w8t68pUMEeqfMc95BD27pw" x="2410" y="570"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_w8uh8JUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w8uh8ZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w8uh8pUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w8uh85UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w8uh9JUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w8uh9ZUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w8uh9pUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w8uh95UMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w8uh-JUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w8uh-ZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w8uh-pUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w8uh-5UMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_XkZnMIhoEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w8uh_5UMEeqfMc95BD27pw" x="810" y="330"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_w8vJCJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w8vJCZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w8vJCpUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w8vJC5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w8vJDJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w8vJDZUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w8vJDpUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w8vJD5UMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w8vJEJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w8vJEZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w8vJEpUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w8vJE5UMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_uaWOwIhpEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w8vJF5UMEeqfMc95BD27pw" x="1450" y="530"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_w8vwEpUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w8vwE5UMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w8vwFJUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_w8vwFZUMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_4J95QIhqEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_w8vwFpUMEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_w8vwF5UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_5TNZQIhqEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_w8vwGJUMEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_w8vwGZUMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_6KGlAIhqEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_w8vwGpUMEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w8vwG5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w8vwHJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w8vwHZUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w8vwHpUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w8vwH5UMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w8vwIJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w8vwIZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w8vwIpUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w8vwI5UMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_0iSA4IhqEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w8vwJ5UMEeqfMc95BD27pw" x="2170" y="570"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_w8wXIpUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w8wXI5UMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w8wXJJUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w8wXJZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w8wXJpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w8wXJ5UMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w8wXKJUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w8wXKZUMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w8wXKpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w8wXK5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w8wXLJUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w8wXLZUMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_6OX2cIhpEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w8wXMZUMEeqfMc95BD27pw" x="2650" y="570"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_w8w-MJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w8w-MZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w8w-MpUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w8w-M5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w8w-NJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w8w-NZUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w8w-NpUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w8w-N5UMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w8w-OJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w8w-OZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w8w-OpUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w8w-O5UMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_o24mMIhpEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w8w-P5UMEeqfMc95BD27pw" x="1290" y="530"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_w8w-QJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w8w-QZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w8w-QpUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_w8w-Q5UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_Hr6rkIhoEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_w8w-RJUMEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_w8w-RZUMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_KRcjYIhoEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_w8w-RpUMEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w8w-R5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w8w-SJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w8w-SZUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w8w-SpUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w8w-S5UMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w8w-TJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w8w-TZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w8w-TpUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w8w-T5UMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_F2VqAIhoEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w8w-U5UMEeqfMc95BD27pw" x="1110" y="70"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_w8xlSJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w8xlSZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w8xlSpUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w8xlS5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w8xlTJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w8xlTZUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w8xlTpUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w8xlT5UMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w8xlUJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w8xlUZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w8xlUpUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w8xlU5UMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_v673wIhpEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w8yMU5UMEeqfMc95BD27pw" x="1590" y="530"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_w8yMXJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w8yMXZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w8yMXpUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w8yMX5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w8yMYJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w8yMYZUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w8yMYpUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w8yMY5UMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w8yMZJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w8yMZZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w8yMZpUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w8yMZ5UMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_UW5JYIhoEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w8yMa5UMEeqfMc95BD27pw" x="670" y="330"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_w8zacJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w8zacZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w8zacpUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w8zac5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w8zadJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w8zadZUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w8zadpUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w8zad5UMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w8zaeJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w8zaeZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w8zaepUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w8zae5UMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_yCiS4IhoEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w8zaf5UMEeqfMc95BD27pw" x="1110" y="330"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_w80BgJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w80BgZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w80BgpUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w80Bg5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w80BhJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w80BhZUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w80BhpUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w80Bh5UMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w80BiJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w80BiZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w80BipUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w80Bi5UMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_pWuucIhqEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w80Bj5UMEeqfMc95BD27pw" x="2950" y="790"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_w80BkJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w80BkZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w80BkpUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_w80okJUMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_e4iGsIhpEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_w80okZUMEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w80okpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w80ok5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w80olJUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w80olZUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w80olpUMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w80ol5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w80omJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w80omZUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w80ompUMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_cSDMoIhpEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w80onpUMEeqfMc95BD27pw" x="2510" y="330"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_w81PoJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w81PoZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w81PopUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_w81Po5UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_HB3XEIhqEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_w81PpJUMEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w81PpZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w81PppUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w81Pp5UMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w81PqJUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w81PqZUMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w81PqpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w81Pq5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w81PrJUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w81PrZUMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_DrSc0IhqEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w81PsZUMEeqfMc95BD27pw" x="1810" y="530"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_w812sZUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w812spUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w812s5UMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_w812tJUMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_NFUHQIhqEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_w812tZUMEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w812tpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w812t5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w812uJUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w812uZUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w812upUMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w812u5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w812vJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w812vZUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w812vpUMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_JaQx0IhqEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w812wpUMEeqfMc95BD27pw" x="1730" y="770"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_w83E2pUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w83E25UMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w83E3JUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w83E3ZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w83E3pUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w83E35UMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w83E4JUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w83E4ZUMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w83E4pUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w83E45UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w83E5JUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w83E5ZUMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_sYrucIhoEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w83E6ZUMEeqfMc95BD27pw" x="970" y="330"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_w84S-JUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w84S-ZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w84S-pUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_w84S-5UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_LlDOYIhqEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_w84S_JUMEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w84S_ZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w84S_pUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w84S_5UMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w84TAJUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w84TAZUMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w84TApUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w84TA5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w84TBJUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w84TBZUMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_J1LMMIhqEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w84TCZUMEeqfMc95BD27pw" x="1930" y="770"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_w846AZUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w846ApUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w846A5UMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w846BJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w846BZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w846BpUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w846B5UMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w846CJUMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w846CZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w846CpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w846C5UMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w846DJUMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_oavnUIhqEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w846EJUMEeqfMc95BD27pw" x="2810" y="790"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_w85hEJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w85hEZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w85hEpUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_w85hE5UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_dvGZcIhpEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_w85hFJUMEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w85hFZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w85hFpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w85hF5UMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w85hGJUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w85hGZUMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w85hGpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w85hG5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w85hHJUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w85hHZUMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_TXEOoIhpEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w85hIZUMEeqfMc95BD27pw" x="1530" y="330"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_w86IIJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w86IIZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w86IIpUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_w86II5UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_fsyDkIhoEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_w86IJJUMEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_w86IJZUMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_g54v4IhoEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_w86IJpUMEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w86IJ5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w86IKJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w86IKZUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w86IKpUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w86IK5UMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w86ILJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w86ILZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w86ILpUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w86IL5UMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_dgekEIhoEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w86IM5UMEeqfMc95BD27pw" x="30" y="70"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_w86vMpUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w86vM5UMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w86vNJUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_w86vNZUMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_kXdYEIhqEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_w86vNpUMEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w86vN5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w86vOJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w86vOZUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w86vOpUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_w86vO5UMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_w86vPJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_w86vPZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_w86vPpUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w86vP5UMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_hqxIUIhqEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w86vQ5UMEeqfMc95BD27pw" x="2810" y="570"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_FJrq0ZUKEeqWd_6S3mbYXg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_FJrq0pUKEeqWd_6S3mbYXg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_FJrq05UKEeqWd_6S3mbYXg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_nZcP0JT2Eeq5BK6mmo2rWg"/>
+    </styles>
+    <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_Ej3QgJm2Eeq8nv7tV9lOqQ" name="css_stylesheets" eObjectListValue="_mci3oJm1Eeq8nv7tV9lOqQ"/>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_nZcP0JT2Eeq5BK6mmo2rWg"/>
+    <edges xmi:type="notation:Connector" xmi:id="_w8q3kJUMEeqfMc95BD27pw" type="Generalization_Edge" source="_w8w-MJUMEeqfMc95BD27pw" target="_w85hEJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w8q3kZUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_w8q3kpUMEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_w8reoJUMEeqfMc95BD27pw" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_w8reoZUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_sErX4IhpEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_w8reopUMEeqfMc95BD27pw" points="[1155, 515, -643984, -643984]$[1175, 418, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w8reo5UMEeqfMc95BD27pw" id="(0.45112781954887216,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w8repJUMEeqfMc95BD27pw" id="(0.11428571428571428,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_w8vJAJUMEeqfMc95BD27pw" type="Generalization_Edge" source="_w85hEJUMEeqfMc95BD27pw" target="_w8w-QJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w8vJAZUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_w8vJApUMEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_w8vJA5UMEeqfMc95BD27pw" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_w8vJBJUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_KmOZMIhrEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_w8vJBZUMEeqfMc95BD27pw" points="[1315, 315, -643984, -643984]$[1015, 173, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w8vJBpUMEeqfMc95BD27pw" id="(0.22857142857142856,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w8vJB5UMEeqfMc95BD27pw" id="(0.7920792079207921,0.9971988795518194)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_w8xlQJUMEeqfMc95BD27pw" type="Generalization_Edge" source="_w8vJCJUMEeqfMc95BD27pw" target="_w85hEJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w8xlQZUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_w8xlQpUMEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_w8xlQ5UMEeqfMc95BD27pw" x="-1" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_w8xlRJUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_zEGoIIhpEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_w8xlRZUMEeqfMc95BD27pw" points="[1235, 515, -643984, -643984]$[1195, 418, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w8xlRpUMEeqfMc95BD27pw" id="(0.3418803418803419,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w8xlR5UMEeqfMc95BD27pw" id="(0.22857142857142856,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_w8yMVJUMEeqfMc95BD27pw" type="Generalization_Edge" source="_w86vMpUMEeqfMc95BD27pw" target="_w80BkJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w8yMVZUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_w8yMVpUMEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_w8yMV5UMEeqfMc95BD27pw" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_w8yMWJUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_uCkygIhqEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_w8yMWZUMEeqfMc95BD27pw" points="[2490, 555, -643984, -643984]$[2410, 418, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w8yMWpUMEeqfMc95BD27pw" id="(0.2926829268292683,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w8yMW5UMEeqfMc95BD27pw" id="(0.9942196531791907,0.970873786407767)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_w8yzYJUMEeqfMc95BD27pw" type="Generalization_Edge" source="_w86IIJUMEeqfMc95BD27pw" target="_w8sFsJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w8yzYZUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_w8yzYpUMEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_w8yzY5UMEeqfMc95BD27pw" x="-1" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_w8yzZJUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_YDZI8IhrEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_w8yzZZUMEeqfMc95BD27pw" points="[130, 50, -643984, -643984]$[550, -88, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w8yzZpUMEeqfMc95BD27pw" id="(0.5970149253731343,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w8yzZ5UMEeqfMc95BD27pw" id="(0.3191489361702128,0.996763754045307)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_w8yzaJUMEeqfMc95BD27pw" type="Generalization_Edge" source="_w80BgJUMEeqfMc95BD27pw" target="_w86vMpUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w8yzaZUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_w8yzapUMEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_w8yza5UMEeqfMc95BD27pw" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_w8yzbJUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_qQK34IhqEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_w8yzbZUMEeqfMc95BD27pw" points="[2650, 795, -643984, -643984]$[2590, 658, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w8yzbpUMEeqfMc95BD27pw" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w8yzb5UMEeqfMc95BD27pw" id="(0.7804878048780488,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_w8zagJUMEeqfMc95BD27pw" type="Generalization_Edge" source="_w81PoJUMEeqfMc95BD27pw" target="_w85hEJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w8zagZUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_w8zagpUMEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_w8zag5UMEeqfMc95BD27pw" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_w8zahJUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_UcGuoIhqEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_w8zahZUMEeqfMc95BD27pw" points="[1575, 515, -643984, -643984]$[1415, 418, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w8zahpUMEeqfMc95BD27pw" id="(0.1388888888888889,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w8zah5UMEeqfMc95BD27pw" id="(0.8,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_w80on5UMEeqfMc95BD27pw" type="Generalization_Edge" source="_w83E2pUMEeqfMc95BD27pw" target="_w8w-QJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w80ooJUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_w80ooZUMEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_w80oopUMEeqfMc95BD27pw" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_w80oo5UMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_Ojop8IhrEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_w80opJUMEeqfMc95BD27pw" points="[795, 315, -643984, -643984]$[935, 173, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w80opZUMEeqfMc95BD27pw" id="(0.8,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w80oppUMEeqfMc95BD27pw" id="(0.39603960396039606,0.9971988795518194)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_w81PspUMEeqfMc95BD27pw" type="Generalization_Edge" source="_w8vwEpUMEeqfMc95BD27pw" target="_w80BkJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w81Ps5UMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_w81PtJUMEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_w81PtZUMEeqfMc95BD27pw" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_w81PtpUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_H58ZIIhrEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_w81Pt5UMEeqfMc95BD27pw" points="[2055, 555, -643984, -643984]$[2275, 417, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w81PuJUMEeqfMc95BD27pw" id="(0.7486631016042781,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w81PuZUMEeqfMc95BD27pw" id="(0.11560693641618497,0.9967637540453059)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_w82dwZUMEeqfMc95BD27pw" type="Generalization_Edge" source="_w846AZUMEeqfMc95BD27pw" target="_w86vMpUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w82dwpUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_w82dw5UMEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_w82dxJUMEeqfMc95BD27pw" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_w82dxZUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_rT8pEIhqEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_w82dxpUMEeqfMc95BD27pw" points="[2490, 775, -643984, -643984]$[2490, 658, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w82dx5UMEeqfMc95BD27pw" id="(0.5660377358490566,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w82dyJUMEeqfMc95BD27pw" id="(0.2926829268292683,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_w82dyZUMEeqfMc95BD27pw" type="Generalization_Edge" source="_w8w-QJUMEeqfMc95BD27pw" target="_w8sFsJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w82dypUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_w82dy5UMEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_w82dzJUMEeqfMc95BD27pw" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_w82dzZUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_YyIeQIhrEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_w82dzpUMEeqfMc95BD27pw" points="[1150, 50, -643984, -643984]$[630, -88, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w82dz5UMEeqfMc95BD27pw" id="(0.297029702970297,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w82d0JUMEeqfMc95BD27pw" id="(0.7446808510638298,0.996763754045307)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_w83E0pUMEeqfMc95BD27pw" type="Generalization_Edge" source="_w812sZUMEeqfMc95BD27pw" target="_w81PoJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w83E05UMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_w83E1JUMEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_w83E1ZUMEeqfMc95BD27pw" x="1" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_w83E1pUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_THXJQIhqEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_w83E15UMEeqfMc95BD27pw" points="[1535, 755, -643984, -643984]$[1595, 618, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w83E2JUMEeqfMc95BD27pw" id="(0.3468208092485549,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w83E2ZUMEeqfMc95BD27pw" id="(0.2777777777777778,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_w83r4JUMEeqfMc95BD27pw" type="Generalization_Edge" source="_w8yMXJUMEeqfMc95BD27pw" target="_w8w-QJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w83r4ZUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_w83r4pUMEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_w83r45UMEeqfMc95BD27pw" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_w83r5JUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_PzV-UIhrEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_w83r5ZUMEeqfMc95BD27pw" points="[475, 315, -643984, -643984]$[875, 173, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w83r5pUMEeqfMc95BD27pw" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w83r55UMEeqfMc95BD27pw" id="(0.09900990099009901,0.9971988795518194)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_w83r6JUMEeqfMc95BD27pw" type="Generalization_Edge" source="_w84S-JUMEeqfMc95BD27pw" target="_w81PoJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w83r6ZUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_w83r6pUMEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_w83r65UMEeqfMc95BD27pw" x="-1" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_w83r7JUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_ToeSQIhqEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_w83r7ZUMEeqfMc95BD27pw" points="[1715, 755, -643984, -643984]$[1655, 618, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w83r7pUMEeqfMc95BD27pw" id="(0.24390243902439024,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w83r75UMEeqfMc95BD27pw" id="(0.6944444444444444,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_w83r8JUMEeqfMc95BD27pw" type="Generalization_Edge" source="_w80BkJUMEeqfMc95BD27pw" target="_w8w-QJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w83r8ZUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_w83r8pUMEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_w83r85UMEeqfMc95BD27pw" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_w83r9JUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_L6mLIIhrEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_w83r9ZUMEeqfMc95BD27pw" points="[2275, 315, -643984, -643984]$[1035, 173, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w83r9pUMEeqfMc95BD27pw" id="(0.11560693641618497,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w83r95UMEeqfMc95BD27pw" id="(0.8910891089108911,0.9971988795518194)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_w84S8JUMEeqfMc95BD27pw" type="Generalization_Edge" source="_w8xlSJUMEeqfMc95BD27pw" target="_w85hEJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w84S8ZUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_w84S8pUMEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_w84S85UMEeqfMc95BD27pw" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_w84S9JUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_0GpqQIhpEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_w84S9ZUMEeqfMc95BD27pw" points="[1355, 515, -643984, -643984]$[1215, 418, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w84S9pUMEeqfMc95BD27pw" id="(0.15503875968992248,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w84S95UMEeqfMc95BD27pw" id="(0.34285714285714286,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_w846EZUMEeqfMc95BD27pw" type="Generalization_Edge" source="_w8zacJUMEeqfMc95BD27pw" target="_w8w-QJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w846EpUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_w846E5UMEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_w846FJUMEeqfMc95BD27pw" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_w846FZUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_OBMEMIhrEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_w846FpUMEeqfMc95BD27pw" points="[935, 315, -643984, -643984]$[955, 173, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w846F5UMEeqfMc95BD27pw" id="(0.6153846153846154,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w846GJUMEeqfMc95BD27pw" id="(0.49504950495049505,0.9971988795518194)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_w86INJUMEeqfMc95BD27pw" type="Generalization_Edge" source="_w8uh8JUMEeqfMc95BD27pw" target="_w8w-QJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w86INZUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_w86INpUMEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_w86IN5UMEeqfMc95BD27pw" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_w86IOJUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_PLRRsIhrEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_w86IOZUMEeqfMc95BD27pw" points="[595, 315, -643984, -643984]$[915, 173, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w86vMJUMEeqfMc95BD27pw" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w86vMZUMEeqfMc95BD27pw" id="(0.297029702970297,0.9971988795518194)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_w87WQJUMEeqfMc95BD27pw" type="Generalization_Edge" source="_w8wXIpUMEeqfMc95BD27pw" target="_w80BkJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w87WQZUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_w87WQpUMEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_w87WQ5UMEeqfMc95BD27pw" x="-1" y="57"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_w87WRJUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_7bTjoIhpEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_w87WRZUMEeqfMc95BD27pw" points="[2430, 575, -643984, -643984]$[2310, 418, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w87WRpUMEeqfMc95BD27pw" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w87WR5UMEeqfMc95BD27pw" id="(0.8092485549132948,0.9805825242718447)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_w87WSJUMEeqfMc95BD27pw" type="Generalization_Edge" source="_w8t64ZUMEeqfMc95BD27pw" target="_w80BkJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_w87WSZUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_w87WSpUMEeqfMc95BD27pw" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_w87WS5UMEeqfMc95BD27pw" x="1" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_w87WTJUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_HRZLYIhrEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_w87WTZUMEeqfMc95BD27pw" points="[2275, 555, -643984, -643984]$[2335, 417, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w87WTpUMEeqfMc95BD27pw" id="(0.6091370558375635,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_w87WT5UMEeqfMc95BD27pw" id="(0.4624277456647399,0.9967637540453059)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_GhIl8JUKEeqWd_6S3mbYXg" type="PapyrusUMLProfileDiagram" name="Vision_layers" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_2LXKAJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_2LXKAZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_2LXKApUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_2LXKA5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_2LXKBJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_2LXKBZUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2LXKBpUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_2LXKB5UMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_2LXKCJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_2LXKCZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_2LXKCpUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2LXKC5UMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_iLwgEIhrEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2LXKD5UMEeqfMc95BD27pw" x="280" y="40" width="569"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_2LYYIJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_2LYYIZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_2LYYIpUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_2LYYI5UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_507w0IhrEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_2LYYJJUMEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_2LYYJZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_2LYYJpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_2LYYJ5UMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2LYYKJUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_2LYYKZUMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_2LYYKpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_2LYYK5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_2LYYLJUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2LYYLZUMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_2p5YMIhrEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2LYYMZUMEeqfMc95BD27pw" x="640" y="220"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_2LYYOZUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_2LYYOpUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_2LYYO5UMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_2LYYPJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_2LYYPZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_2LYYPpUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2LYYP5UMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_2LYYQJUMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_2LYYQZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_2LYYQpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_2LYYQ5UMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2LYYRJUMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_ExzHAIhsEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2LYYSJUMEeqfMc95BD27pw" x="340" y="400"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_2LY_MJUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_2LY_MZUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_2LY_MpUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_2LY_M5UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_-r78AIhrEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_2LY_NJUMEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_2LY_NZUMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#___G0EIhrEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_2LY_NpUMEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_2LY_N5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_2LY_OJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_2LY_OZUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2LY_OpUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_2LY_O5UMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_2LY_PJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_2LY_PZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_2LY_PpUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2LY_P5UMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_9D3yAIhrEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2LY_Q5UMEeqfMc95BD27pw" x="100" y="400"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_2LZmTpUMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_2LZmT5UMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_2LZmUJUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_2LZmUZUMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_xJ4sQIhrEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_2LZmUpUMEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_2LZmU5UMEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_yEO0oIhrEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_2LZmVJUMEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_2LZmVZUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_2LZmVpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_2LZmV5UMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2LZmWJUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_2LZmWZUMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_2LZmWpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_2LZmW5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_2LZmXJUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2LZmXZUMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_t32TwIhrEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2LZmYZUMEeqfMc95BD27pw" x="280" y="220" width="201" height="101"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_2LZmY5UMEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_2LZmZJUMEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_2LZmZZUMEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_2LZmZpUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_2LZmZ5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_2LaNUJUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2LaNUZUMEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_2LaNUpUMEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_2LaNU5UMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_2LaNVJUMEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_2LaNVZUMEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2LaNVpUMEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_FiUlAIhsEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2LaNWpUMEeqfMc95BD27pw" x="520" y="400"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_GhIl8ZUKEeqWd_6S3mbYXg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_GhIl8pUKEeqWd_6S3mbYXg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_GhIl85UKEeqWd_6S3mbYXg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_q6FsEJT2Eeq5BK6mmo2rWg"/>
+    </styles>
+    <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_mciQkJm1Eeq8nv7tV9lOqQ" name="css_stylesheets" eObjectListValue="_mci3oJm1Eeq8nv7tV9lOqQ"/>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_q6FsEJT2Eeq5BK6mmo2rWg"/>
+    <edges xmi:type="notation:Connector" xmi:id="_2LYYMpUMEeqfMc95BD27pw" type="Generalization_Edge" source="_2LY_MJUMEeqfMc95BD27pw" target="_2LZmTpUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_2LYYM5UMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_t_FRcJm0Eeq8nv7tV9lOqQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_2LYYNJUMEeqfMc95BD27pw" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_2LYYNZUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_KFjfoIhsEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2LYYNpUMEeqfMc95BD27pw" points="[280, 400, -643984, -643984]$[280, 360, -643984, -643984]$[320, 360, -643984, -643984]$[320, 321, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2LYYN5UMEeqfMc95BD27pw" id="(0.6862745098039216,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2LYYOJUMEeqfMc95BD27pw" id="(0.19900497512437812,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_2LY_RZUMEeqfMc95BD27pw" type="Generalization_Edge" source="_2LZmTpUMEeqfMc95BD27pw" target="_2LXKAJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_2LY_RpUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_t-8ukJm0Eeq8nv7tV9lOqQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_2LY_R5UMEeqfMc95BD27pw" x="-1" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_2LY_SJUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_MhVlkIhsEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2LY_SZUMEeqfMc95BD27pw" points="[12680, 615, -643984, -643984]$[12800, 535, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2LY_SpUMEeqfMc95BD27pw" id="(0.4975124378109453,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2LY_S5UMEeqfMc95BD27pw" id="(0.1757469244288225,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_2LY_TJUMEeqfMc95BD27pw" type="Generalization_Edge" source="_2LZmY5UMEeqfMc95BD27pw" target="_2LZmTpUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_2LY_TZUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_t_MmMJm0Eeq8nv7tV9lOqQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_2LY_TpUMEeqfMc95BD27pw" x="-2" y="57"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_2LY_T5UMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_LUKn0IhsEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2LY_UJUMEeqfMc95BD27pw" points="[660, 400, -643984, -643984]$[660, 360, -643984, -643984]$[460, 360, -643984, -643984]$[460, 321, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2LY_UZUMEeqfMc95BD27pw" id="(0.4166666666666667,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2LY_UpUMEeqfMc95BD27pw" id="(0.8955223880597015,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_2LZmQJUMEeqfMc95BD27pw" type="Generalization_Edge" source="_2LYYIJUMEeqfMc95BD27pw" target="_2LXKAJUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_2LZmQZUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_t_e6EJm0Eeq8nv7tV9lOqQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_2LZmQpUMEeqfMc95BD27pw" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_2LZmQ5UMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_L7Zm8IhsEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2LZmRJUMEeqfMc95BD27pw" points="[13000, 615, -643984, -643984]$[12840, 535, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2LZmRZUMEeqfMc95BD27pw" id="(0.4807692307692308,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2LZmRpUMEeqfMc95BD27pw" id="(0.8084358523725835,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_2LZmR5UMEeqfMc95BD27pw" type="Generalization_Edge" source="_2LYYOZUMEeqfMc95BD27pw" target="_2LZmTpUMEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_2LZmSJUMEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_t_UiAJm0Eeq8nv7tV9lOqQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_2LZmSZUMEeqfMc95BD27pw" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_2LZmSpUMEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_KqD64IhsEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2LZmS5UMEeqfMc95BD27pw" points="[460, 400, -643984, -643984]$[460, 360, -643984, -643984]$[400, 360, -643984, -643984]$[400, 321, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2LZmTJUMEeqfMc95BD27pw" id="(0.410958904109589,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2LZmTZUMEeqfMc95BD27pw" id="(0.5970149253731343,1.0)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_ITCocJUKEeqWd_6S3mbYXg" type="PapyrusUMLProfileDiagram" name="DataParallel_layers_(multi-GPU, distributed)" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_B_Hr8ZUNEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_B_Hr8pUNEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_B_Hr85UNEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_B_Hr9JUNEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_rBanQIhtEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_B_Hr9ZUNEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_B_Hr9pUNEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_r6Q60IhtEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_B_Hr95UNEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_B_Hr-JUNEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_stpfkIhtEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_B_Hr-ZUNEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_B_Hr-pUNEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_B_Hr-5UNEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_B_Hr_JUNEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_B_Hr_ZUNEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_B_Hr_pUNEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_B_Hr_5UNEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_B_HsAJUNEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_B_HsAZUNEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_B_HsApUNEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_jq9XEIhtEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_B_HsBpUNEeqfMc95BD27pw" x="120" y="60" width="541"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_B_ITAJUNEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_B_ITAZUNEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_B_ITApUNEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_B_ITA5UNEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_B_ITBJUNEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_B_ITBZUNEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_B_ITBpUNEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_B_ITB5UNEeqfMc95BD27pw" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_B_ITCJUNEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_B_ITCZUNEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_B_ITCpUNEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_B_ITC5UNEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_2bnZsIhtEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_B_ITD5UNEeqfMc95BD27pw" x="500" y="280" width="161"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_B_ITEJUNEeqfMc95BD27pw" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_B_ITEZUNEeqfMc95BD27pw" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_B_ITEpUNEeqfMc95BD27pw" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_B_ITE5UNEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_vpBrkIhtEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_B_ITFJUNEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_B_ITFZUNEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_xG4JoIhtEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_B_ITFpUNEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_B_ITF5UNEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_yJonIIhtEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_B_ITGJUNEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_B_ITGZUNEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_zcpuMIhtEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_B_ITGpUNEeqfMc95BD27pw"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_B_ITG5UNEeqfMc95BD27pw" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_1KdT0IhtEeqlnrZTj0aPoA"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_B_ITHJUNEeqfMc95BD27pw"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_B_ITHZUNEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_B_ITHpUNEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_B_ITH5UNEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_B_ITIJUNEeqfMc95BD27pw"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_B_ITIZUNEeqfMc95BD27pw" visible="false" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_B_ITIpUNEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_B_ITI5UNEeqfMc95BD27pw"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_B_ITJJUNEeqfMc95BD27pw"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_B_ITJZUNEeqfMc95BD27pw"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_tsGr4IhtEeqlnrZTj0aPoA"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_B_ITKZUNEeqfMc95BD27pw" x="120" y="280" width="281" height="141"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_ITCocZUKEeqWd_6S3mbYXg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_ITCocpUKEeqWd_6S3mbYXg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_ITCoc5UKEeqWd_6S3mbYXg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_wBUroJT2Eeq5BK6mmo2rWg"/>
+    </styles>
+    <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_B6gooJm2Eeq8nv7tV9lOqQ" name="css_stylesheets" eObjectListValue="_mci3oJm1Eeq8nv7tV9lOqQ"/>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_wBUroJT2Eeq5BK6mmo2rWg"/>
+    <edges xmi:type="notation:Connector" xmi:id="_B_Gd0JUNEeqfMc95BD27pw" type="Generalization_Edge" source="_B_ITAJUNEeqfMc95BD27pw" target="_B_Hr8ZUNEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_B_Gd0ZUNEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_M4hgQJm0Eeq8nv7tV9lOqQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_B_Gd0pUNEeqfMc95BD27pw" x="-1" y="57"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_B_Gd05UNEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_4pLdcIhtEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_B_Gd1JUNEeqfMc95BD27pw" points="[11560, 775, -643984, -643984]$[11440, 649, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_B_Gd1ZUNEeqfMc95BD27pw" id="(0.4968944099378882,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_B_Gd1pUNEeqfMc95BD27pw" id="(0.8502772643253235,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_B_HE4JUNEeqfMc95BD27pw" type="Generalization_Edge" source="_B_ITEJUNEeqfMc95BD27pw" target="_B_Hr8ZUNEeqfMc95BD27pw">
+      <children xmi:type="notation:DecorationNode" xmi:id="_B_HE4ZUNEeqfMc95BD27pw" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_M4pcEJm0Eeq8nv7tV9lOqQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_B_HE4pUNEeqfMc95BD27pw" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_B_HE45UNEeqfMc95BD27pw"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_5KbJUIhtEeqlnrZTj0aPoA"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_B_HE5JUNEeqfMc95BD27pw" points="[11300, 775, -643984, -643984]$[11320, 649, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_B_HE5ZUNEeqfMc95BD27pw" id="(0.498220640569395,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_B_HE5pUNEeqfMc95BD27pw" id="(0.2587800369685767,1.0)"/>
+    </edges>
+  </notation:Diagram>
+  <css:EmbeddedStyleSheet xmi:id="_mci3oJm1Eeq8nv7tV9lOqQ" label="OnlyAttributes" content="Stereotype > Compartment[kind=&quot;operations&quot;] {&#xD;&#xA;    visible: false;&#xD;&#xA;}&#xD;&#xA;&#xD;&#xA;Generalization {&#xD;&#xA;&#x9;routing : Rectilinear;&#xD;&#xA;}&#xD;&#xA;&#xD;&#xA;Extension {&#xD;&#xA;&#x9;routing : Rectilinear;&#xD;&#xA;}"/>
+  <notation:Diagram xmi:id="_IJYokKThEeqmTOsCAzVBxg" type="PapyrusUMLProfileDiagram" name="Layer_weight_constraints" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_Q5hogKThEeqmTOsCAzVBxg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Q5iPkKThEeqmTOsCAzVBxg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Q5iPkaThEeqmTOsCAzVBxg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_EPESoKTiEeqmTOsCAzVBxg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_EO8W0KTiEeqmTOsCAzVBxg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_EPESoaTiEeqmTOsCAzVBxg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_H-KakKTiEeqmTOsCAzVBxg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_H-FiEKTiEeqmTOsCAzVBxg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_H-KakaTiEeqmTOsCAzVBxg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Q5iPkqThEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Q5iPk6ThEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Q5iPlKThEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Q5iPlaThEeqmTOsCAzVBxg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Q5iPlqThEeqmTOsCAzVBxg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Q5iPl6ThEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Q5iPmKThEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Q5iPmaThEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Q5iPmqThEeqmTOsCAzVBxg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_Q5gaYKThEeqmTOsCAzVBxg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Q5hogaThEeqmTOsCAzVBxg" x="140" y="680"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_SFrSkKThEeqmTOsCAzVBxg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_SFrSkqThEeqmTOsCAzVBxg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_SFr5oKThEeqmTOsCAzVBxg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_SFr5oaThEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_SFr5oqThEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_SFr5o6ThEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SFr5pKThEeqmTOsCAzVBxg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_SFr5paThEeqmTOsCAzVBxg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_SFr5pqThEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_SFr5p6ThEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_SFr5qKThEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SFr5qaThEeqmTOsCAzVBxg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_SFqEcKThEeqmTOsCAzVBxg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SFrSkaThEeqmTOsCAzVBxg" y="680"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_oe5-YKThEeqmTOsCAzVBxg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_oe6lcKThEeqmTOsCAzVBxg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_oe6lcaThEeqmTOsCAzVBxg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_oe6lcqThEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_oe6lc6ThEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_oe6ldKThEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oe6ldaThEeqmTOsCAzVBxg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_oe7MgKThEeqmTOsCAzVBxg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_oe7MgaThEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_oe7MgqThEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_oe7Mg6ThEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oe7MhKThEeqmTOsCAzVBxg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_oe1s8KThEeqmTOsCAzVBxg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oe5-YaThEeqmTOsCAzVBxg" x="540" y="460"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_p5hiQKThEeqmTOsCAzVBxg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_p5iJUKThEeqmTOsCAzVBxg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_p5iJUaThEeqmTOsCAzVBxg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_p5iJUqThEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_p5iJU6ThEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_p5iJVKThEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_p5iJVaThEeqmTOsCAzVBxg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_p5iJVqThEeqmTOsCAzVBxg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_p5iJV6ThEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_p5iJWKThEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_p5iJWaThEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_p5iJWqThEeqmTOsCAzVBxg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_p5ftEKThEeqmTOsCAzVBxg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_p5hiQaThEeqmTOsCAzVBxg" x="420" y="460"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_s2-K0KThEeqmTOsCAzVBxg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_s2-x4KThEeqmTOsCAzVBxg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_s2-x4aThEeqmTOsCAzVBxg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_s2-x4qThEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_s2-x46ThEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_s2-x5KThEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s2-x5aThEeqmTOsCAzVBxg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_s2-x5qThEeqmTOsCAzVBxg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_s2-x56ThEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_s2-x6KThEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_s2-x6aThEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s2-x6qThEeqmTOsCAzVBxg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_s288sKThEeqmTOsCAzVBxg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_s2-K0aThEeqmTOsCAzVBxg" x="300" y="460"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_T5M-UKTkEeqmTOsCAzVBxg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_T5NlYKTkEeqmTOsCAzVBxg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_T5NlYaTkEeqmTOsCAzVBxg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_YMPg0KTkEeqmTOsCAzVBxg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_YMFv0KTkEeqmTOsCAzVBxg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_YMPg0aTkEeqmTOsCAzVBxg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_T5NlYqTkEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_T5NlY6TkEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_T5NlZKTkEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T5NlZaTkEeqmTOsCAzVBxg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_T5NlZqTkEeqmTOsCAzVBxg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_T5NlZ6TkEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_T5NlaKTkEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_T5NlaaTkEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T5NlaqTkEeqmTOsCAzVBxg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_T5LJIKTkEeqmTOsCAzVBxg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_T5M-UaTkEeqmTOsCAzVBxg" x="160" y="240"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_cxYf8KTkEeqmTOsCAzVBxg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_cxYf8qTkEeqmTOsCAzVBxg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_cxYf86TkEeqmTOsCAzVBxg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_hrnlUKTkEeqmTOsCAzVBxg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_hrd0UKTkEeqmTOsCAzVBxg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_hrnlUaTkEeqmTOsCAzVBxg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cxYf9KTkEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cxYf9aTkEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cxYf9qTkEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cxYf96TkEeqmTOsCAzVBxg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_cxYf-KTkEeqmTOsCAzVBxg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_cxYf-aTkEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_cxYf-qTkEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_cxYf-6TkEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cxYf_KTkEeqmTOsCAzVBxg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_cxXR0KTkEeqmTOsCAzVBxg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cxYf8aTkEeqmTOsCAzVBxg" x="20" y="480"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_sQ2WIKZ6EeqIr7xwFiWQGQ" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_sQ6AgKZ6EeqIr7xwFiWQGQ" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_sQ6nkKZ6EeqIr7xwFiWQGQ" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_sQ6nkaZ6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_sQ6nkqZ6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_sQ6nk6Z6EeqIr7xwFiWQGQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sQ6nlKZ6EeqIr7xwFiWQGQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_sQ6nlaZ6EeqIr7xwFiWQGQ" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_sQ6nlqZ6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_sQ6nl6Z6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_sQ6nmKZ6EeqIr7xwFiWQGQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sQ6nmaZ6EeqIr7xwFiWQGQ"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_sQtMMKZ6EeqIr7xwFiWQGQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sQ2WIaZ6EeqIr7xwFiWQGQ" x="340" y="40"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_IJYokaThEeqmTOsCAzVBxg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_IJYokqThEeqmTOsCAzVBxg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_IJYok6ThEeqmTOsCAzVBxg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    </styles>
+    <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_02nlsK8YEeqhVOlV64dXmA" name="css_stylesheets" eObjectListValue="_mci3oJm1Eeq8nv7tV9lOqQ"/>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    <edges xmi:type="notation:Connector" xmi:id="_ZkbbwKTkEeqmTOsCAzVBxg" type="Generalization_Edge" source="_s2-K0KThEeqmTOsCAzVBxg" target="_T5M-UKTkEeqmTOsCAzVBxg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Zkbbw6TkEeqmTOsCAzVBxg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Z-gvsKTkEeqmTOsCAzVBxg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ZkbbxKTkEeqmTOsCAzVBxg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_ZkbbwaTkEeqmTOsCAzVBxg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_ZkPOgKTkEeqmTOsCAzVBxg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ZkbbwqTkEeqmTOsCAzVBxg" points="[560, 460, -643984, -643984]$[400, 443, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Zko3IKTkEeqmTOsCAzVBxg" id="(0.2,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Zko3IaTkEeqmTOsCAzVBxg" id="(0.5970149253731343,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_vNWsAKTkEeqmTOsCAzVBxg" type="Generalization_Edge" source="_Q5hogKThEeqmTOsCAzVBxg" target="_cxYf8KTkEeqmTOsCAzVBxg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_vNWsA6TkEeqmTOsCAzVBxg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_y4PpYKTkEeqmTOsCAzVBxg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_vNWsBKTkEeqmTOsCAzVBxg" x="-1" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_vNWsAaTkEeqmTOsCAzVBxg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_vNIpkKTkEeqmTOsCAzVBxg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_vNWsAqTkEeqmTOsCAzVBxg" points="[200, 680, -643984, -643984]$[140, 583, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vNo_4KTkEeqmTOsCAzVBxg" id="(0.4225352112676056,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vNpm8KTkEeqmTOsCAzVBxg" id="(0.8333333333333334,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_vv4KQKTkEeqmTOsCAzVBxg" type="Generalization_Edge" source="_SFrSkKThEeqmTOsCAzVBxg" target="_cxYf8KTkEeqmTOsCAzVBxg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_vv4KQ6TkEeqmTOsCAzVBxg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_y4W-IKTkEeqmTOsCAzVBxg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_vv4KRKTkEeqmTOsCAzVBxg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_vv4KQaTkEeqmTOsCAzVBxg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_vvr9AKTkEeqmTOsCAzVBxg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_vv4KQqTkEeqmTOsCAzVBxg" points="[60, 680, -643984, -643984]$[80, 583, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vwE-kKTkEeqmTOsCAzVBxg" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_vwE-kaTkEeqmTOsCAzVBxg" id="(0.4166666666666667,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_1Q8mIKTkEeqmTOsCAzVBxg" type="Generalization_Edge" source="_cxYf8KTkEeqmTOsCAzVBxg" target="_T5M-UKTkEeqmTOsCAzVBxg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_1Q9NMKTkEeqmTOsCAzVBxg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_wMXwgKZ6EeqIr7xwFiWQGQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_1Q9NMaTkEeqmTOsCAzVBxg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_1Q8mIaTkEeqmTOsCAzVBxg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_1Qw_8KTkEeqmTOsCAzVBxg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_1Q8mIqTkEeqmTOsCAzVBxg" points="[140, 480, -643984, -643984]$[200, 343, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1RKokKTkEeqmTOsCAzVBxg" id="(0.8333333333333334,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1RKokaTkEeqmTOsCAzVBxg" id="(0.29850746268656714,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_ymr20KZ6EeqIr7xwFiWQGQ" type="Generalization_Edge" source="_T5M-UKTkEeqmTOsCAzVBxg" target="_sQ2WIKZ6EeqIr7xwFiWQGQ">
+      <children xmi:type="notation:DecorationNode" xmi:id="_ymr206Z6EeqIr7xwFiWQGQ" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_ymr21KZ6EeqIr7xwFiWQGQ" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_ymr20aZ6EeqIr7xwFiWQGQ"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_ymebcKZ6EeqIr7xwFiWQGQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ymr20qZ6EeqIr7xwFiWQGQ" points="[240, 240, -643984, -643984]$[380, 140, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ynOCUKZ6EeqIr7xwFiWQGQ" id="(0.5970149253731343,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ynOCUaZ6EeqIr7xwFiWQGQ" id="(0.4,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_zMcPQKZ6EeqIr7xwFiWQGQ" type="Generalization_Edge" source="_p5hiQKThEeqmTOsCAzVBxg" target="_sQ2WIKZ6EeqIr7xwFiWQGQ">
+      <children xmi:type="notation:DecorationNode" xmi:id="_zMc2UKZ6EeqIr7xwFiWQGQ" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_zMc2UaZ6EeqIr7xwFiWQGQ" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_zMcPQaZ6EeqIr7xwFiWQGQ"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_zMJUUKZ6EeqIr7xwFiWQGQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_zMcPQqZ6EeqIr7xwFiWQGQ" points="[480, 460, -643984, -643984]$[400, 140, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zM_o4KZ6EeqIr7xwFiWQGQ" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zM_o4aZ6EeqIr7xwFiWQGQ" id="(0.6,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_z1-7gKZ6EeqIr7xwFiWQGQ" type="Generalization_Edge" source="_oe5-YKThEeqmTOsCAzVBxg" target="_sQ2WIKZ6EeqIr7xwFiWQGQ">
+      <children xmi:type="notation:DecorationNode" xmi:id="_z1_ikKZ6EeqIr7xwFiWQGQ" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_z1_ikaZ6EeqIr7xwFiWQGQ" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_z1-7gaZ6EeqIr7xwFiWQGQ"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_z11KgKZ6EeqIr7xwFiWQGQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_z1-7gqZ6EeqIr7xwFiWQGQ" points="[600, 460, -643984, -643984]$[400, 140, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_z2RPYKZ6EeqIr7xwFiWQGQ" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_z2RPYaZ6EeqIr7xwFiWQGQ" id="(0.6,1.0)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_W-_1IKTlEeqmTOsCAzVBxg" type="PapyrusUMLProfileDiagram" name="Layer_weight_constraints" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_9z2S0KZ6EeqIr7xwFiWQGQ" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_9z2S0aZ6EeqIr7xwFiWQGQ" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_9z2S0qZ6EeqIr7xwFiWQGQ" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_9z2S06Z6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_9z2S1KZ6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_9z2S1aZ6EeqIr7xwFiWQGQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9z2S1qZ6EeqIr7xwFiWQGQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_9z2S16Z6EeqIr7xwFiWQGQ" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_9z2S2KZ6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_9z2S2aZ6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_9z2S2qZ6EeqIr7xwFiWQGQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9z2S26Z6EeqIr7xwFiWQGQ"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_SFqEcKThEeqmTOsCAzVBxg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9z2S36Z6EeqIr7xwFiWQGQ" x="10" y="690"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_9z254KZ6EeqIr7xwFiWQGQ" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_9z254aZ6EeqIr7xwFiWQGQ" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_9z254qZ6EeqIr7xwFiWQGQ" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_9z2546Z6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_9z255KZ6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_9z255aZ6EeqIr7xwFiWQGQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9z255qZ6EeqIr7xwFiWQGQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_9z2556Z6EeqIr7xwFiWQGQ" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_9z256KZ6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_9z256aZ6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_9z256qZ6EeqIr7xwFiWQGQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9z2566Z6EeqIr7xwFiWQGQ"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_p5ftEKThEeqmTOsCAzVBxg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9z2576Z6EeqIr7xwFiWQGQ" x="430" y="470"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_9z258KZ6EeqIr7xwFiWQGQ" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_9z258aZ6EeqIr7xwFiWQGQ" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_9z258qZ6EeqIr7xwFiWQGQ" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_9z2586Z6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_9z259KZ6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_9z259aZ6EeqIr7xwFiWQGQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9z259qZ6EeqIr7xwFiWQGQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_9z2596Z6EeqIr7xwFiWQGQ" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_9z25-KZ6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_9z25-aZ6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_9z25-qZ6EeqIr7xwFiWQGQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9z25-6Z6EeqIr7xwFiWQGQ"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_oe1s8KThEeqmTOsCAzVBxg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9z25_6Z6EeqIr7xwFiWQGQ" x="550" y="470"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_9z4IAKZ6EeqIr7xwFiWQGQ" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_9z4IAaZ6EeqIr7xwFiWQGQ" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_9z4IAqZ6EeqIr7xwFiWQGQ" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_9z4IA6Z6EeqIr7xwFiWQGQ" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_hrd0UKTkEeqmTOsCAzVBxg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_9z4IBKZ6EeqIr7xwFiWQGQ"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_9z4IBaZ6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_9z4IBqZ6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_9z4IB6Z6EeqIr7xwFiWQGQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9z4ICKZ6EeqIr7xwFiWQGQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_9z4ICaZ6EeqIr7xwFiWQGQ" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_9z4ICqZ6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_9z4IC6Z6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_9z4IDKZ6EeqIr7xwFiWQGQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9z4IDaZ6EeqIr7xwFiWQGQ"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_cxXR0KTkEeqmTOsCAzVBxg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9z4IEaZ6EeqIr7xwFiWQGQ" x="30" y="490"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_9z4IFKZ6EeqIr7xwFiWQGQ" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_9z4IFaZ6EeqIr7xwFiWQGQ" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_9z4IFqZ6EeqIr7xwFiWQGQ" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_9z4IF6Z6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_9z4IGKZ6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_9z4IGaZ6EeqIr7xwFiWQGQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9z4IGqZ6EeqIr7xwFiWQGQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_9z4IG6Z6EeqIr7xwFiWQGQ" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_9z4IHKZ6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_9z4IHaZ6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_9z4IHqZ6EeqIr7xwFiWQGQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9z4IH6Z6EeqIr7xwFiWQGQ"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_s288sKThEeqmTOsCAzVBxg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9z4II6Z6EeqIr7xwFiWQGQ" x="310" y="470"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_9z4vEaZ6EeqIr7xwFiWQGQ" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_9z4vEqZ6EeqIr7xwFiWQGQ" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_9z4vE6Z6EeqIr7xwFiWQGQ" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_9z4vFKZ6EeqIr7xwFiWQGQ" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_YMFv0KTkEeqmTOsCAzVBxg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_9z4vFaZ6EeqIr7xwFiWQGQ"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_9z4vFqZ6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_9z4vF6Z6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_9z4vGKZ6EeqIr7xwFiWQGQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9z4vGaZ6EeqIr7xwFiWQGQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_9z4vGqZ6EeqIr7xwFiWQGQ" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_9z4vG6Z6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_9z4vHKZ6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_9z4vHaZ6EeqIr7xwFiWQGQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9z4vHqZ6EeqIr7xwFiWQGQ"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_T5LJIKTkEeqmTOsCAzVBxg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9z4vIqZ6EeqIr7xwFiWQGQ" x="170" y="250"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_9z4vLKZ6EeqIr7xwFiWQGQ" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_9z4vLaZ6EeqIr7xwFiWQGQ" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_9z4vLqZ6EeqIr7xwFiWQGQ" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_9z4vL6Z6EeqIr7xwFiWQGQ" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_EO8W0KTiEeqmTOsCAzVBxg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_9z4vMKZ6EeqIr7xwFiWQGQ"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_9z4vMaZ6EeqIr7xwFiWQGQ" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_H-FiEKTiEeqmTOsCAzVBxg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_9z4vMqZ6EeqIr7xwFiWQGQ"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_9z4vM6Z6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_9z4vNKZ6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_9z4vNaZ6EeqIr7xwFiWQGQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9z4vNqZ6EeqIr7xwFiWQGQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_9z4vN6Z6EeqIr7xwFiWQGQ" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_9z4vOKZ6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_9z4vOaZ6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_9z4vOqZ6EeqIr7xwFiWQGQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9z4vO6Z6EeqIr7xwFiWQGQ"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_Q5gaYKThEeqmTOsCAzVBxg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9z4vP6Z6EeqIr7xwFiWQGQ" x="150" y="690"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_9z5WIKZ6EeqIr7xwFiWQGQ" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_9z5WIaZ6EeqIr7xwFiWQGQ" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_9z5WIqZ6EeqIr7xwFiWQGQ" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_9z5WI6Z6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_9z5WJKZ6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_9z5WJaZ6EeqIr7xwFiWQGQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9z5WJqZ6EeqIr7xwFiWQGQ"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_9z5WJ6Z6EeqIr7xwFiWQGQ" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_9z5WKKZ6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_9z5WKaZ6EeqIr7xwFiWQGQ"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_9z5WKqZ6EeqIr7xwFiWQGQ"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9z5WK6Z6EeqIr7xwFiWQGQ"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_sQtMMKZ6EeqIr7xwFiWQGQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9z5WL6Z6EeqIr7xwFiWQGQ" x="350" y="50"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_W-_1IaTlEeqmTOsCAzVBxg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_W-_1IqTlEeqmTOsCAzVBxg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_W-_1I6TlEeqmTOsCAzVBxg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_DtlO0KTlEeqmTOsCAzVBxg"/>
+    </styles>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_DtlO0KTlEeqmTOsCAzVBxg"/>
+    <edges xmi:type="notation:Connector" xmi:id="_9z2S4KZ6EeqIr7xwFiWQGQ" type="Generalization_Edge" source="_9z258KZ6EeqIr7xwFiWQGQ" target="_9z5WIKZ6EeqIr7xwFiWQGQ">
+      <children xmi:type="notation:DecorationNode" xmi:id="_9z2S4aZ6EeqIr7xwFiWQGQ" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_9z2S4qZ6EeqIr7xwFiWQGQ" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_9z2S46Z6EeqIr7xwFiWQGQ"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_z11KgKZ6EeqIr7xwFiWQGQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9z2S5KZ6EeqIr7xwFiWQGQ" points="[600, 460, -643984, -643984]$[400, 140, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9z2S5aZ6EeqIr7xwFiWQGQ" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9z2S5qZ6EeqIr7xwFiWQGQ" id="(0.6,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_9z3g8KZ6EeqIr7xwFiWQGQ" type="Generalization_Edge" source="_9z4vLKZ6EeqIr7xwFiWQGQ" target="_9z4IAKZ6EeqIr7xwFiWQGQ">
+      <children xmi:type="notation:DecorationNode" xmi:id="_9z3g8aZ6EeqIr7xwFiWQGQ" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_9z3g8qZ6EeqIr7xwFiWQGQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_9z3g86Z6EeqIr7xwFiWQGQ" x="-1" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_9z3g9KZ6EeqIr7xwFiWQGQ"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_vNIpkKTkEeqmTOsCAzVBxg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9z3g9aZ6EeqIr7xwFiWQGQ" points="[200, 680, -643984, -643984]$[140, 583, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9z3g9qZ6EeqIr7xwFiWQGQ" id="(0.4225352112676056,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9z3g96Z6EeqIr7xwFiWQGQ" id="(0.8333333333333334,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_9z3g-KZ6EeqIr7xwFiWQGQ" type="Generalization_Edge" source="_9z254KZ6EeqIr7xwFiWQGQ" target="_9z5WIKZ6EeqIr7xwFiWQGQ">
+      <children xmi:type="notation:DecorationNode" xmi:id="_9z3g-aZ6EeqIr7xwFiWQGQ" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_9z3g-qZ6EeqIr7xwFiWQGQ" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_9z3g-6Z6EeqIr7xwFiWQGQ"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_zMJUUKZ6EeqIr7xwFiWQGQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9z3g_KZ6EeqIr7xwFiWQGQ" points="[480, 460, -643984, -643984]$[400, 140, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9z3g_aZ6EeqIr7xwFiWQGQ" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9z3g_qZ6EeqIr7xwFiWQGQ" id="(0.6,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_9z3g_6Z6EeqIr7xwFiWQGQ" type="Generalization_Edge" source="_9z4vEaZ6EeqIr7xwFiWQGQ" target="_9z5WIKZ6EeqIr7xwFiWQGQ">
+      <children xmi:type="notation:DecorationNode" xmi:id="_9z3hAKZ6EeqIr7xwFiWQGQ" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_9z3hAaZ6EeqIr7xwFiWQGQ" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_9z3hAqZ6EeqIr7xwFiWQGQ"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_ymebcKZ6EeqIr7xwFiWQGQ"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9z3hA6Z6EeqIr7xwFiWQGQ" points="[240, 240, -643984, -643984]$[380, 140, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9z3hBKZ6EeqIr7xwFiWQGQ" id="(0.5970149253731343,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9z3hBaZ6EeqIr7xwFiWQGQ" id="(0.4,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_9z3hBqZ6EeqIr7xwFiWQGQ" type="Generalization_Edge" source="_9z2S0KZ6EeqIr7xwFiWQGQ" target="_9z4IAKZ6EeqIr7xwFiWQGQ">
+      <children xmi:type="notation:DecorationNode" xmi:id="_9z3hB6Z6EeqIr7xwFiWQGQ" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_9z3hCKZ6EeqIr7xwFiWQGQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_9z3hCaZ6EeqIr7xwFiWQGQ" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_9z3hCqZ6EeqIr7xwFiWQGQ"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_vvr9AKTkEeqmTOsCAzVBxg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9z3hC6Z6EeqIr7xwFiWQGQ" points="[60, 680, -643984, -643984]$[80, 583, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9z3hDKZ6EeqIr7xwFiWQGQ" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9z3hDaZ6EeqIr7xwFiWQGQ" id="(0.4166666666666667,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_9z4vJKZ6EeqIr7xwFiWQGQ" type="Generalization_Edge" source="_9z4IFKZ6EeqIr7xwFiWQGQ" target="_9z4vEaZ6EeqIr7xwFiWQGQ">
+      <children xmi:type="notation:DecorationNode" xmi:id="_9z4vJaZ6EeqIr7xwFiWQGQ" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_9z4vJqZ6EeqIr7xwFiWQGQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_9z4vJ6Z6EeqIr7xwFiWQGQ" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_9z4vKKZ6EeqIr7xwFiWQGQ"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_ZkPOgKTkEeqmTOsCAzVBxg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9z4vKaZ6EeqIr7xwFiWQGQ" points="[560, 460, -643984, -643984]$[400, 443, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9z4vKqZ6EeqIr7xwFiWQGQ" id="(0.2,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9z4vK6Z6EeqIr7xwFiWQGQ" id="(0.5970149253731343,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_9z4vQKZ6EeqIr7xwFiWQGQ" type="Generalization_Edge" source="_9z4IAKZ6EeqIr7xwFiWQGQ" target="_9z4vEaZ6EeqIr7xwFiWQGQ">
+      <children xmi:type="notation:DecorationNode" xmi:id="_9z4vQaZ6EeqIr7xwFiWQGQ" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_9z4vQqZ6EeqIr7xwFiWQGQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_9z4vQ6Z6EeqIr7xwFiWQGQ" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_9z4vRKZ6EeqIr7xwFiWQGQ"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_1Qw_8KTkEeqmTOsCAzVBxg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9z4vRaZ6EeqIr7xwFiWQGQ" points="[140, 480, -643984, -643984]$[200, 343, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9z4vRqZ6EeqIr7xwFiWQGQ" id="(0.8333333333333334,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9z4vR6Z6EeqIr7xwFiWQGQ" id="(0.29850746268656714,1.0)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_wSAfkKTnEeqmTOsCAzVBxg" type="PapyrusUMLProfileDiagram" name="Layer_weight_regularizers" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_0kKRQKTnEeqmTOsCAzVBxg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_0kK4UKTnEeqmTOsCAzVBxg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_0kK4UaTnEeqmTOsCAzVBxg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_0kK4UqTnEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_0kK4U6TnEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_0kK4VKTnEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0kK4VaTnEeqmTOsCAzVBxg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_0kK4VqTnEeqmTOsCAzVBxg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_0kK4V6TnEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_0kK4WKTnEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_0kK4WaTnEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0kK4WqTnEeqmTOsCAzVBxg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_0kGm4KTnEeqmTOsCAzVBxg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0kKRQaTnEeqmTOsCAzVBxg" x="40" y="380"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_PhR_AKToEeqmTOsCAzVBxg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_PhSmEaToEeqmTOsCAzVBxg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_PhSmEqToEeqmTOsCAzVBxg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_PhSmE6ToEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_PhSmFKToEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_PhSmFaToEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PhSmFqToEeqmTOsCAzVBxg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_PhSmF6ToEeqmTOsCAzVBxg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_PhSmGKToEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_PhSmGaToEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_PhSmGqToEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PhSmG6ToEeqmTOsCAzVBxg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_PhQJ0KToEeqmTOsCAzVBxg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PhSmEKToEeqmTOsCAzVBxg" x="380" y="380"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_QuL3AKToEeqmTOsCAzVBxg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_QuL3AqToEeqmTOsCAzVBxg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_QuL3A6ToEeqmTOsCAzVBxg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_QuL3BKToEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_QuL3BaToEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_QuL3BqToEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QuL3B6ToEeqmTOsCAzVBxg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_QuL3CKToEeqmTOsCAzVBxg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_QuL3CaToEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_QuL3CqToEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_QuL3C6ToEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QuL3DKToEeqmTOsCAzVBxg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_QuKB0KToEeqmTOsCAzVBxg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QuL3AaToEeqmTOsCAzVBxg" x="220" y="380"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_smfaoKToEeqmTOsCAzVBxg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_smgBsKToEeqmTOsCAzVBxg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_smgBsaToEeqmTOsCAzVBxg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_yJ9qQKToEeqmTOsCAzVBxg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_yJ2VgKToEeqmTOsCAzVBxg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_yJ9qQaToEeqmTOsCAzVBxg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_smgBsqToEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_smgBs6ToEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_smgBtKToEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_smgBtaToEeqmTOsCAzVBxg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_smgBtqToEeqmTOsCAzVBxg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_smgBt6ToEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_smgBuKToEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_smgBuaToEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_smgBuqToEeqmTOsCAzVBxg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_smezkKToEeqmTOsCAzVBxg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_smfaoaToEeqmTOsCAzVBxg" x="140" y="220"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_vbyMwKToEeqmTOsCAzVBxg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_vbyMwqToEeqmTOsCAzVBxg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_vbyMw6ToEeqmTOsCAzVBxg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_zAfpoKToEeqmTOsCAzVBxg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_zAXt0KToEeqmTOsCAzVBxg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_zAfpoaToEeqmTOsCAzVBxg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_vbyMxKToEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_vbyMxaToEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_vbyMxqToEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vbyMx6ToEeqmTOsCAzVBxg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_vbyMyKToEeqmTOsCAzVBxg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_vbyMyaToEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_vbyMyqToEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_vbyMy6ToEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vbyMzKToEeqmTOsCAzVBxg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_vbw-oKToEeqmTOsCAzVBxg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_vbyMwaToEeqmTOsCAzVBxg" x="360" y="220"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_wSAfkaTnEeqmTOsCAzVBxg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_wSAfkqTnEeqmTOsCAzVBxg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_wSAfk6TnEeqmTOsCAzVBxg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    </styles>
+    <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_2EVWAK8YEeqhVOlV64dXmA" name="css_stylesheets" eObjectListValue="_mci3oJm1Eeq8nv7tV9lOqQ"/>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    <edges xmi:type="notation:Connector" xmi:id="_8VxW8KToEeqmTOsCAzVBxg" type="Generalization_Edge" source="_0kKRQKTnEeqmTOsCAzVBxg" target="_smfaoKToEeqmTOsCAzVBxg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8Vx-AKToEeqmTOsCAzVBxg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_8Vx-AaToEeqmTOsCAzVBxg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_8VxW8aToEeqmTOsCAzVBxg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_8VmX0KToEeqmTOsCAzVBxg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8VxW8qToEeqmTOsCAzVBxg" points="[120, 380, -643984, -643984]$[180, 323, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8WCcsKToEeqmTOsCAzVBxg" id="(0.8,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8WCcsaToEeqmTOsCAzVBxg" id="(0.4,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_8pp8QKToEeqmTOsCAzVBxg" type="Generalization_Edge" source="_PhR_AKToEeqmTOsCAzVBxg" target="_vbyMwKToEeqmTOsCAzVBxg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_8pp8Q6ToEeqmTOsCAzVBxg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_8pp8RKToEeqmTOsCAzVBxg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_8pp8QaToEeqmTOsCAzVBxg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_8pjOkKToEeqmTOsCAzVBxg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8pp8QqToEeqmTOsCAzVBxg" points="[440, 380, -643984, -643984]$[400, 323, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8p1icKToEeqmTOsCAzVBxg" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8p1icaToEeqmTOsCAzVBxg" id="(0.4,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_98O-cKToEeqmTOsCAzVBxg" type="Generalization_Edge" source="_QuL3AKToEeqmTOsCAzVBxg" target="_smfaoKToEeqmTOsCAzVBxg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_98O-c6ToEeqmTOsCAzVBxg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_98O-dKToEeqmTOsCAzVBxg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_98O-caToEeqmTOsCAzVBxg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_98EmYKToEeqmTOsCAzVBxg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_98O-cqToEeqmTOsCAzVBxg" points="[260, 380, -643984, -643984]$[200, 323, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_98Z9kKToEeqmTOsCAzVBxg" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_98Z9kaToEeqmTOsCAzVBxg" id="(0.6,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_-X18YKToEeqmTOsCAzVBxg" type="Generalization_Edge" source="_QuL3AKToEeqmTOsCAzVBxg" target="_vbyMwKToEeqmTOsCAzVBxg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_-X2jcKToEeqmTOsCAzVBxg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_-X2jcaToEeqmTOsCAzVBxg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_-X18YaToEeqmTOsCAzVBxg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_-XpvIKToEeqmTOsCAzVBxg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-X18YqToEeqmTOsCAzVBxg" points="[280, 380, -643984, -643984]$[380, 323, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-YF0AKToEeqmTOsCAzVBxg" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-YF0AaToEeqmTOsCAzVBxg" id="(0.2,1.0)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_crFRYKTpEeqmTOsCAzVBxg" type="PapyrusUMLProfileDiagram" name="Layer_weight_regularizers" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_f-SukKTpEeqmTOsCAzVBxg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_f-SukaTpEeqmTOsCAzVBxg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_f-SukqTpEeqmTOsCAzVBxg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_f-Suk6TpEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_f-SulKTpEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_f-SulaTpEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f-SulqTpEeqmTOsCAzVBxg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_f-Sul6TpEeqmTOsCAzVBxg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_f-SumKTpEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_f-SumaTpEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_f-SumqTpEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f-Sum6TpEeqmTOsCAzVBxg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_PhQJ0KToEeqmTOsCAzVBxg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f-Sun6TpEeqmTOsCAzVBxg" x="390" y="390"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_f-TVoKTpEeqmTOsCAzVBxg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_f-TVoaTpEeqmTOsCAzVBxg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_f-TVoqTpEeqmTOsCAzVBxg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_f-TVo6TpEeqmTOsCAzVBxg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_zAXt0KToEeqmTOsCAzVBxg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_f-TVpKTpEeqmTOsCAzVBxg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_f-TVpaTpEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_f-TVpqTpEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_f-TVp6TpEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f-TVqKTpEeqmTOsCAzVBxg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_f-TVqaTpEeqmTOsCAzVBxg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_f-TVqqTpEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_f-TVq6TpEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_f-TVrKTpEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f-TVraTpEeqmTOsCAzVBxg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_vbw-oKToEeqmTOsCAzVBxg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f-TVsaTpEeqmTOsCAzVBxg" x="370" y="230"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_f-T8sKTpEeqmTOsCAzVBxg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_f-T8saTpEeqmTOsCAzVBxg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_f-T8sqTpEeqmTOsCAzVBxg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_f-T8s6TpEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_f-T8tKTpEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_f-T8taTpEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f-T8tqTpEeqmTOsCAzVBxg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_f-T8t6TpEeqmTOsCAzVBxg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_f-T8uKTpEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_f-T8uaTpEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_f-T8uqTpEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f-T8u6TpEeqmTOsCAzVBxg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_0kGm4KTnEeqmTOsCAzVBxg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f-T8v6TpEeqmTOsCAzVBxg" x="50" y="390"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_f-Ujx6TpEeqmTOsCAzVBxg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_f-UjyKTpEeqmTOsCAzVBxg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_f-UjyaTpEeqmTOsCAzVBxg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_f-UjyqTpEeqmTOsCAzVBxg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_yJ2VgKToEeqmTOsCAzVBxg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_f-Ujy6TpEeqmTOsCAzVBxg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_f-UjzKTpEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_f-UjzaTpEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_f-UjzqTpEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f-Ujz6TpEeqmTOsCAzVBxg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_f-Uj0KTpEeqmTOsCAzVBxg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_f-Uj0aTpEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_f-Uj0qTpEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_f-Uj06TpEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f-Uj1KTpEeqmTOsCAzVBxg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_smezkKToEeqmTOsCAzVBxg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f-Uj2KTpEeqmTOsCAzVBxg" x="150" y="230"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_f-Uj6KTpEeqmTOsCAzVBxg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_f-Uj6aTpEeqmTOsCAzVBxg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_f-Uj6qTpEeqmTOsCAzVBxg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_f-Uj66TpEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_f-Uj7KTpEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_f-Uj7aTpEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f-Uj7qTpEeqmTOsCAzVBxg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_f-Uj76TpEeqmTOsCAzVBxg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_f-Uj8KTpEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_f-VK0KTpEeqmTOsCAzVBxg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_f-VK0aTpEeqmTOsCAzVBxg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f-VK0qTpEeqmTOsCAzVBxg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_QuKB0KToEeqmTOsCAzVBxg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_f-VK1qTpEeqmTOsCAzVBxg" x="230" y="390"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_crFRYaTpEeqmTOsCAzVBxg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_crFRYqTpEeqmTOsCAzVBxg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_crFRY6TpEeqmTOsCAzVBxg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_X5a5MKTpEeqmTOsCAzVBxg"/>
+    </styles>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_X5a5MKTpEeqmTOsCAzVBxg"/>
+    <edges xmi:type="notation:Connector" xmi:id="_f-T8wKTpEeqmTOsCAzVBxg" type="Generalization_Edge" source="_f-T8sKTpEeqmTOsCAzVBxg" target="_f-Ujx6TpEeqmTOsCAzVBxg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_f-T8waTpEeqmTOsCAzVBxg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_f-T8wqTpEeqmTOsCAzVBxg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_f-T8w6TpEeqmTOsCAzVBxg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_8VmX0KToEeqmTOsCAzVBxg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_f-T8xKTpEeqmTOsCAzVBxg" points="[120, 380, -643984, -643984]$[180, 323, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_f-T8xaTpEeqmTOsCAzVBxg" id="(0.8,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_f-T8xqTpEeqmTOsCAzVBxg" id="(0.4,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_f-UjwKTpEeqmTOsCAzVBxg" type="Generalization_Edge" source="_f-Uj6KTpEeqmTOsCAzVBxg" target="_f-TVoKTpEeqmTOsCAzVBxg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_f-UjwaTpEeqmTOsCAzVBxg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_f-UjwqTpEeqmTOsCAzVBxg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_f-Ujw6TpEeqmTOsCAzVBxg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_-XpvIKToEeqmTOsCAzVBxg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_f-UjxKTpEeqmTOsCAzVBxg" points="[280, 380, -643984, -643984]$[380, 323, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_f-UjxaTpEeqmTOsCAzVBxg" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_f-UjxqTpEeqmTOsCAzVBxg" id="(0.2,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_f-Uj2qTpEeqmTOsCAzVBxg" type="Generalization_Edge" source="_f-Uj6KTpEeqmTOsCAzVBxg" target="_f-Ujx6TpEeqmTOsCAzVBxg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_f-Uj26TpEeqmTOsCAzVBxg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_f-Uj3KTpEeqmTOsCAzVBxg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_f-Uj3aTpEeqmTOsCAzVBxg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_98EmYKToEeqmTOsCAzVBxg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_f-Uj3qTpEeqmTOsCAzVBxg" points="[260, 380, -643984, -643984]$[200, 323, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_f-Uj36TpEeqmTOsCAzVBxg" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_f-Uj4KTpEeqmTOsCAzVBxg" id="(0.6,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_f-Uj4aTpEeqmTOsCAzVBxg" type="Generalization_Edge" source="_f-SukKTpEeqmTOsCAzVBxg" target="_f-TVoKTpEeqmTOsCAzVBxg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_f-Uj4qTpEeqmTOsCAzVBxg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_f-Uj46TpEeqmTOsCAzVBxg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_f-Uj5KTpEeqmTOsCAzVBxg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_8pjOkKToEeqmTOsCAzVBxg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_f-Uj5aTpEeqmTOsCAzVBxg" points="[440, 380, -643984, -643984]$[400, 323, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_f-Uj5qTpEeqmTOsCAzVBxg" id="(0.6,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_f-Uj56TpEeqmTOsCAzVBxg" id="(0.4,1.0)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_zDd5UKWREeq2dLYfuMvqgg" type="PapyrusUMLProfileDiagram" name="Layer_weight_initializers" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_-KB-EKWREeq2dLYfuMvqgg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_-KDzQKWREeq2dLYfuMvqgg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_-KDzQaWREeq2dLYfuMvqgg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_-KDzQqWREeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_-KDzQ6WREeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_-KDzRKWREeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-KDzRaWREeq2dLYfuMvqgg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_-KDzRqWREeq2dLYfuMvqgg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_-KDzR6WREeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_-KDzSKWREeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_-KDzSaWREeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-KDzSqWREeq2dLYfuMvqgg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_-JzUkKWREeq2dLYfuMvqgg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-KB-EaWREeq2dLYfuMvqgg" x="1620" y="400"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Gws48KWSEeq2dLYfuMvqgg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_GwtgAKWSEeq2dLYfuMvqgg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GwtgAaWSEeq2dLYfuMvqgg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_IifmsKWSEeq2dLYfuMvqgg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_IiUAgKWSEeq2dLYfuMvqgg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_IifmsaWSEeq2dLYfuMvqgg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_JNhgsKWSEeq2dLYfuMvqgg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_JNazAKWSEeq2dLYfuMvqgg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_JNhgsaWSEeq2dLYfuMvqgg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GwtgAqWSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GwtgA6WSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GwtgBKWSEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GwtgBaWSEeq2dLYfuMvqgg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_GwuHEKWSEeq2dLYfuMvqgg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_GwuHEaWSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_GwuHEqWSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_GwuHE6WSEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GwuHFKWSEeq2dLYfuMvqgg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_GwoAcKWSEeq2dLYfuMvqgg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Gws48aWSEeq2dLYfuMvqgg" x="1000" y="220"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_Keup4KWSEeq2dLYfuMvqgg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_KevQ8KWSEeq2dLYfuMvqgg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Kev4AKWSEeq2dLYfuMvqgg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Kev4AaWSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Kev4AqWSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Kev4A6WSEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Kev4BKWSEeq2dLYfuMvqgg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_Kev4BaWSEeq2dLYfuMvqgg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_Kev4BqWSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_Kev4B6WSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_Kev4CKWSEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Kev4CaWSEeq2dLYfuMvqgg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_KermkKWSEeq2dLYfuMvqgg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Keup4aWSEeq2dLYfuMvqgg" x="1360" y="400"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_OfGvEKWSEeq2dLYfuMvqgg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_OfGvEqWSEeq2dLYfuMvqgg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_OfHWIKWSEeq2dLYfuMvqgg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_OfHWIaWSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_OfHWIqWSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_OfHWI6WSEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OfHWJKWSEeq2dLYfuMvqgg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_OfHWJaWSEeq2dLYfuMvqgg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_OfHWJqWSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_OfHWJ6WSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_OfHWKKWSEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OfHWKaWSEeq2dLYfuMvqgg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_OfDEsKWSEeq2dLYfuMvqgg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OfGvEaWSEeq2dLYfuMvqgg" x="-180" y="40"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_ZE3z4KWSEeq2dLYfuMvqgg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_ZE3z4qWSEeq2dLYfuMvqgg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ZE4a8KWSEeq2dLYfuMvqgg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ZE4a8aWSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ZE4a8qWSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ZE4a86WSEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZE4a9KWSEeq2dLYfuMvqgg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ZE4a9aWSEeq2dLYfuMvqgg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ZE4a9qWSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ZE4a96WSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ZE4a-KWSEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZE4a-aWSEeq2dLYfuMvqgg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_ZEzicKWSEeq2dLYfuMvqgg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZE3z4aWSEeq2dLYfuMvqgg" x="-340" y="40"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_e62IwKWSEeq2dLYfuMvqgg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_e62v0KWSEeq2dLYfuMvqgg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_e62v0aWSEeq2dLYfuMvqgg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_e62v0qWSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_e62v06WSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_e62v1KWSEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e62v1aWSEeq2dLYfuMvqgg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_e62v1qWSEeq2dLYfuMvqgg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_e62v16WSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_e62v2KWSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_e62v2aWSEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e62v2qWSEeq2dLYfuMvqgg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_e6wCIKWSEeq2dLYfuMvqgg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_e62IwaWSEeq2dLYfuMvqgg" x="1800" y="220"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_hxV0wKWSEeq2dLYfuMvqgg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_hxV0wqWSEeq2dLYfuMvqgg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_hxWb0KWSEeq2dLYfuMvqgg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_hxWb0aWSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_hxWb0qWSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_hxWb06WSEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hxWb1KWSEeq2dLYfuMvqgg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_hxWb1aWSEeq2dLYfuMvqgg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_hxWb1qWSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_hxWb16WSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_hxWb2KWSEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hxWb2aWSEeq2dLYfuMvqgg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_hxQVMKWSEeq2dLYfuMvqgg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hxV0waWSEeq2dLYfuMvqgg" x="1220" y="220"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_lmhWkKWSEeq2dLYfuMvqgg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_lmhWkqWSEeq2dLYfuMvqgg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_lmhWk6WSEeq2dLYfuMvqgg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_lmhWlKWSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_lmhWlaWSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_lmhWlqWSEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lmhWl6WSEeq2dLYfuMvqgg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_lmhWmKWSEeq2dLYfuMvqgg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_lmhWmaWSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_lmhWmqWSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_lmhWm6WSEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lmhWnKWSEeq2dLYfuMvqgg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_lmeTQKWSEeq2dLYfuMvqgg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lmhWkaWSEeq2dLYfuMvqgg" x="400" y="200"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_nCTYEKWSEeq2dLYfuMvqgg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_nCTYEqWSEeq2dLYfuMvqgg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_nCTYE6WSEeq2dLYfuMvqgg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_nCTYFKWSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_nCTYFaWSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_nCTYFqWSEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nCTYF6WSEeq2dLYfuMvqgg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_nCTYGKWSEeq2dLYfuMvqgg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_nCTYGaWSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_nCTYGqWSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_nCTYG6WSEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nCTYHKWSEeq2dLYfuMvqgg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_nCPGoKWSEeq2dLYfuMvqgg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nCTYEaWSEeq2dLYfuMvqgg" x="540" y="200"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_oi62QKWSEeq2dLYfuMvqgg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_oi7dUKWSEeq2dLYfuMvqgg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_oi7dUaWSEeq2dLYfuMvqgg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_xJGB4KWSEeq2dLYfuMvqgg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_xIu1gKWSEeq2dLYfuMvqgg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_xJGB4aWSEeq2dLYfuMvqgg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_oi7dUqWSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_oi7dU6WSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_oi7dVKWSEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oi7dVaWSEeq2dLYfuMvqgg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_oi7dVqWSEeq2dLYfuMvqgg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_oi7dV6WSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_oi7dWKWSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_oi7dWaWSEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oi7dWqWSEeq2dLYfuMvqgg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_oi19wKWSEeq2dLYfuMvqgg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oi62QaWSEeq2dLYfuMvqgg" x="-20" y="40"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_yti3MKWSEeq2dLYfuMvqgg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_yti3MqWSEeq2dLYfuMvqgg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_yti3M6WSEeq2dLYfuMvqgg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_z0xlAKWSEeq2dLYfuMvqgg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_z0htYKWSEeq2dLYfuMvqgg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_z0xlAaWSEeq2dLYfuMvqgg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_0X_m0KWSEeq2dLYfuMvqgg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_0XpokKWSEeq2dLYfuMvqgg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_0X_m0aWSEeq2dLYfuMvqgg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_0qo2AKWSEeq2dLYfuMvqgg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_0qcowKWSEeq2dLYfuMvqgg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_0qo2AaWSEeq2dLYfuMvqgg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_yti3NKWSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_yti3NaWSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_yti3NqWSEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yti3N6WSEeq2dLYfuMvqgg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_ytjeQKWSEeq2dLYfuMvqgg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_ytjeQaWSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_ytjeQqWSEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_ytjeQ6WSEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ytjeRKWSEeq2dLYfuMvqgg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_ytfM0KWSEeq2dLYfuMvqgg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yti3MaWSEeq2dLYfuMvqgg" x="780" y="220"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_IHyLMKWTEeq2dLYfuMvqgg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_IHyLMqWTEeq2dLYfuMvqgg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_IHyLM6WTEeq2dLYfuMvqgg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_L5KyIKWTEeq2dLYfuMvqgg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_L46TcKWTEeq2dLYfuMvqgg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_L5KyIaWTEeq2dLYfuMvqgg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_IHyLNKWTEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_IHyLNaWTEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_IHyLNqWTEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IHyLN6WTEeq2dLYfuMvqgg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_IHyLOKWTEeq2dLYfuMvqgg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_IHyLOaWTEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_IHyLOqWTEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_IHyLO6WTEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IHyLPKWTEeq2dLYfuMvqgg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_IHtSsKWTEeq2dLYfuMvqgg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IHyLMaWTEeq2dLYfuMvqgg" x="400"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_OIV_cKWTEeq2dLYfuMvqgg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_OIWmgKWTEeq2dLYfuMvqgg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_OIWmgaWTEeq2dLYfuMvqgg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_R5J-oKWTEeq2dLYfuMvqgg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_R4qPYKWTEeq2dLYfuMvqgg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_R5J-oaWTEeq2dLYfuMvqgg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_OIWmgqWTEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_OIWmg6WTEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_OIWmhKWTEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OIWmhaWTEeq2dLYfuMvqgg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_OIWmhqWTEeq2dLYfuMvqgg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_OIWmh6WTEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_OIWmiKWTEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_OIWmiaWTEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OIWmiqWTEeq2dLYfuMvqgg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_OISVEKWTEeq2dLYfuMvqgg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_OIV_caWTEeq2dLYfuMvqgg" x="980" y="-20"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_iKZYgKWTEeq2dLYfuMvqgg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_iKZ_kKWTEeq2dLYfuMvqgg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_iKZ_kaWTEeq2dLYfuMvqgg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_lIObkKWTEeq2dLYfuMvqgg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_lHusUKWTEeq2dLYfuMvqgg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_lIObkaWTEeq2dLYfuMvqgg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_lmo14KWTEeq2dLYfuMvqgg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_lmazcKWTEeq2dLYfuMvqgg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_lmo14aWTEeq2dLYfuMvqgg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_iKZ_kqWTEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_iKZ_k6WTEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_iKZ_lKWTEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iKZ_laWTEeq2dLYfuMvqgg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_iKZ_lqWTEeq2dLYfuMvqgg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_iKZ_l6WTEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_iKZ_mKWTEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_iKZ_maWTEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iKZ_mqWTEeq2dLYfuMvqgg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_iKWVMKWTEeq2dLYfuMvqgg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iKZYgaWTEeq2dLYfuMvqgg" x="1480" y="220"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_zDd5UaWREeq2dLYfuMvqgg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_zDd5UqWREeq2dLYfuMvqgg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_zDd5U6WREeq2dLYfuMvqgg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    </styles>
+    <styles xmi:type="notation:EObjectListValueStyle" xmi:id="_3GTJUK8YEeqhVOlV64dXmA" name="css_stylesheets" eObjectListValue="_mci3oJm1Eeq8nv7tV9lOqQ"/>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_IDYhIH13EeqSHNFOHg2_Jw"/>
+    <edges xmi:type="notation:Connector" xmi:id="_YcE5EKWTEeq2dLYfuMvqgg" type="Generalization_Edge" source="_hxV0wKWSEeq2dLYfuMvqgg" target="_OIV_cKWTEeq2dLYfuMvqgg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_YcE5E6WTEeq2dLYfuMvqgg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_3MJUAKWTEeq2dLYfuMvqgg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_YcE5FKWTEeq2dLYfuMvqgg" x="1" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_YcE5EaWTEeq2dLYfuMvqgg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_YbtssKWTEeq2dLYfuMvqgg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_YcE5EqWTEeq2dLYfuMvqgg" points="[1160, 160, -643984, -643984]$[1180, 103, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Yc-Q8KWTEeq2dLYfuMvqgg" id="(0.7453416149068323,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Yc-Q8aWTEeq2dLYfuMvqgg" id="(0.7453416149068323,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_aA9zQKWTEeq2dLYfuMvqgg" type="Generalization_Edge" source="_Gws48KWSEeq2dLYfuMvqgg" target="_OIV_cKWTEeq2dLYfuMvqgg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_aA9zQ6WTEeq2dLYfuMvqgg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Koc7sKWUEeq2dLYfuMvqgg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_aA9zRKWTEeq2dLYfuMvqgg" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_aA9zQaWTEeq2dLYfuMvqgg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_aApDIKWTEeq2dLYfuMvqgg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aA9zQqWTEeq2dLYfuMvqgg" points="[940, 160, -643984, -643984]$[1140, 103, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aBW00KWTEeq2dLYfuMvqgg" id="(0.8,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aBW00aWTEeq2dLYfuMvqgg" id="(0.6211180124223602,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_dNI0UKWTEeq2dLYfuMvqgg" type="Generalization_Edge" source="_e62IwKWSEeq2dLYfuMvqgg" target="_OIV_cKWTEeq2dLYfuMvqgg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_dNJbYKWTEeq2dLYfuMvqgg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_HWmJYKWUEeq2dLYfuMvqgg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_dNJbYaWTEeq2dLYfuMvqgg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_dNI0UaWTEeq2dLYfuMvqgg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_dM91MKWTEeq2dLYfuMvqgg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dNI0UqWTEeq2dLYfuMvqgg" points="[1480, 200, -643984, -643984]$[1240, 103, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dNn8gKWTEeq2dLYfuMvqgg" id="(0.37267080745341613,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dNn8gaWTEeq2dLYfuMvqgg" id="(0.8695652173913043,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_nvD68KWTEeq2dLYfuMvqgg" type="Generalization_Edge" source="_-KB-EKWREeq2dLYfuMvqgg" target="_iKZYgKWTEeq2dLYfuMvqgg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_nvD686WTEeq2dLYfuMvqgg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_FMZisKWUEeq2dLYfuMvqgg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_nvD69KWTEeq2dLYfuMvqgg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_nvD68aWTEeq2dLYfuMvqgg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_nuodIKWTEeq2dLYfuMvqgg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_nvD68qWTEeq2dLYfuMvqgg" points="[1680, 400, -643984, -643984]$[1620, 339, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nvoisKWTEeq2dLYfuMvqgg" id="(0.3488372093023256,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nvoisaWTEeq2dLYfuMvqgg" id="(0.813953488372093,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_oMmykKWTEeq2dLYfuMvqgg" type="Generalization_Edge" source="_Keup4KWSEeq2dLYfuMvqgg" target="_iKZYgKWTEeq2dLYfuMvqgg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_oMmyk6WTEeq2dLYfuMvqgg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_FMm-EKWUEeq2dLYfuMvqgg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_oMnZoKWTEeq2dLYfuMvqgg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_oMmykaWTEeq2dLYfuMvqgg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_oMXiAKWTEeq2dLYfuMvqgg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_oMmykqWTEeq2dLYfuMvqgg" points="[1480, 400, -643984, -643984]$[1520, 339, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_oM-mAKWTEeq2dLYfuMvqgg" id="(0.6976744186046512,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_oM-mAaWTEeq2dLYfuMvqgg" id="(0.23255813953488372,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_4drNUKWTEeq2dLYfuMvqgg" type="Generalization_Edge" source="_yti3MKWSEeq2dLYfuMvqgg" target="_OIV_cKWTEeq2dLYfuMvqgg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_4drNU6WTEeq2dLYfuMvqgg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_LQucoKWUEeq2dLYfuMvqgg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_4dr0YKWTEeq2dLYfuMvqgg" x="-1" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_4drNUaWTEeq2dLYfuMvqgg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_4dWdMKWTEeq2dLYfuMvqgg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4drNUqWTEeq2dLYfuMvqgg" points="[740, 160, -643984, -643984]$[1120, 103, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4egTwKWTEeq2dLYfuMvqgg" id="(0.8080808080808081,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4eg60KWTEeq2dLYfuMvqgg" id="(0.4968944099378882,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_DYiYYKWUEeq2dLYfuMvqgg" type="Generalization_Edge" source="_lmhWkKWSEeq2dLYfuMvqgg" target="_IHyLMKWTEeq2dLYfuMvqgg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_DYi_cKWUEeq2dLYfuMvqgg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_PX4fQKWUEeq2dLYfuMvqgg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_DYi_caWUEeq2dLYfuMvqgg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_DYiYYaWUEeq2dLYfuMvqgg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_DYQrkKWUEeq2dLYfuMvqgg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_DYiYYqWUEeq2dLYfuMvqgg" points="[440, 200, -643984, -643984]$[440, 143, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DY8oEKWUEeq2dLYfuMvqgg" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DY9PIKWUEeq2dLYfuMvqgg" id="(0.25,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_MGr0QKWUEeq2dLYfuMvqgg" type="Generalization_Edge" source="_iKZYgKWTEeq2dLYfuMvqgg" target="_OIV_cKWTEeq2dLYfuMvqgg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_MGr0Q6WUEeq2dLYfuMvqgg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Ol620KWUEeq2dLYfuMvqgg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_MGr0RKWUEeq2dLYfuMvqgg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_MGr0QaWUEeq2dLYfuMvqgg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_MGbVkKWUEeq2dLYfuMvqgg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_MGr0QqWUEeq2dLYfuMvqgg" points="[1540, 220, -643984, -643984]$[1200, 103, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MHEOwKWUEeq2dLYfuMvqgg" id="(0.3488372093023256,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MHEOwaWUEeq2dLYfuMvqgg" id="(0.7453416149068323,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_Q3bmcKWUEeq2dLYfuMvqgg" type="Generalization_Edge" source="_nCTYEKWSEeq2dLYfuMvqgg" target="_IHyLMKWTEeq2dLYfuMvqgg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Q3bmc6WUEeq2dLYfuMvqgg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_WILHUKWUEeq2dLYfuMvqgg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_Q3bmdKWUEeq2dLYfuMvqgg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_Q3bmcaWUEeq2dLYfuMvqgg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_Q3KgsKWUEeq2dLYfuMvqgg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Q3bmcqWUEeq2dLYfuMvqgg" points="[600, 200, -643984, -643984]$[520, 103, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Q37VsKWUEeq2dLYfuMvqgg" id="(0.37267080745341613,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Q378wKWUEeq2dLYfuMvqgg" id="(0.75,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_WydacKWUEeq2dLYfuMvqgg" type="Generalization_Edge" source="_nCTYEKWSEeq2dLYfuMvqgg" target="_OIV_cKWTEeq2dLYfuMvqgg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_Wydac6WUEeq2dLYfuMvqgg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_WydadKWUEeq2dLYfuMvqgg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_WydacaWUEeq2dLYfuMvqgg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_WyCjsKWUEeq2dLYfuMvqgg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_WydacqWUEeq2dLYfuMvqgg" points="[660, 200, -643984, -643984]$[1000, 83, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Wy-X0KWUEeq2dLYfuMvqgg" id="(0.7453416149068323,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Wy-X0aWUEeq2dLYfuMvqgg" id="(0.12422360248447205,1.0)"/>
+    </edges>
+  </notation:Diagram>
+  <notation:Diagram xmi:id="_bdoToKWVEeq2dLYfuMvqgg" type="PapyrusUMLProfileDiagram" name="Layer_weight_initializers" measurementUnit="Pixel">
+    <children xmi:type="notation:Shape" xmi:id="_gtKTkKWVEeq2dLYfuMvqgg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_gtKTkaWVEeq2dLYfuMvqgg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gtKTkqWVEeq2dLYfuMvqgg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_gtKTk6WVEeq2dLYfuMvqgg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_z0htYKWSEeq2dLYfuMvqgg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_gtKTlKWVEeq2dLYfuMvqgg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_gtKTlaWVEeq2dLYfuMvqgg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_0XpokKWSEeq2dLYfuMvqgg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_gtKTlqWVEeq2dLYfuMvqgg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_gtKTl6WVEeq2dLYfuMvqgg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_0qcowKWSEeq2dLYfuMvqgg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_gtKTmKWVEeq2dLYfuMvqgg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gtKTmaWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gtKTmqWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gtKTm6WVEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtKTnKWVEeq2dLYfuMvqgg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gtKTnaWVEeq2dLYfuMvqgg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gtKTnqWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gtKTn6WVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gtKToKWVEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtKToaWVEeq2dLYfuMvqgg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_ytfM0KWSEeq2dLYfuMvqgg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtKTpaWVEeq2dLYfuMvqgg" x="790" y="230"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_gtKTpqWVEeq2dLYfuMvqgg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_gtK6oKWVEeq2dLYfuMvqgg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gtK6oaWVEeq2dLYfuMvqgg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gtK6oqWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gtK6o6WVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gtK6pKWVEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtK6paWVEeq2dLYfuMvqgg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gtK6pqWVEeq2dLYfuMvqgg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gtK6p6WVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gtK6qKWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gtK6qaWVEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtK6qqWVEeq2dLYfuMvqgg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_OfDEsKWSEeq2dLYfuMvqgg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtK6rqWVEeq2dLYfuMvqgg" x="-170" y="50"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_gtMIwKWVEeq2dLYfuMvqgg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_gtMIwaWVEeq2dLYfuMvqgg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gtMIwqWVEeq2dLYfuMvqgg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gtMIw6WVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gtMIxKWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gtMIxaWVEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtMIxqWVEeq2dLYfuMvqgg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gtMIx6WVEeq2dLYfuMvqgg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gtMIyKWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gtMIyaWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gtMIyqWVEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtMIy6WVEeq2dLYfuMvqgg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_KermkKWSEeq2dLYfuMvqgg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtMIz6WVEeq2dLYfuMvqgg" x="1370" y="410"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_gtMv0KWVEeq2dLYfuMvqgg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_gtMv0aWVEeq2dLYfuMvqgg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gtMv0qWVEeq2dLYfuMvqgg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_gtMv06WVEeq2dLYfuMvqgg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_L46TcKWTEeq2dLYfuMvqgg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_gtMv1KWVEeq2dLYfuMvqgg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gtMv1aWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gtMv1qWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gtMv16WVEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtMv2KWVEeq2dLYfuMvqgg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gtMv2aWVEeq2dLYfuMvqgg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gtMv2qWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gtMv26WVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gtMv3KWVEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtMv3aWVEeq2dLYfuMvqgg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_IHtSsKWTEeq2dLYfuMvqgg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtMv4aWVEeq2dLYfuMvqgg" x="410" y="10"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_gtPMEKWVEeq2dLYfuMvqgg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_gtPMEaWVEeq2dLYfuMvqgg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gtPMEqWVEeq2dLYfuMvqgg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_gtPME6WVEeq2dLYfuMvqgg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_xIu1gKWSEeq2dLYfuMvqgg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_gtPMFKWVEeq2dLYfuMvqgg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gtPMFaWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gtPMFqWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gtPMF6WVEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtPMGKWVEeq2dLYfuMvqgg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gtPMGaWVEeq2dLYfuMvqgg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gtPMGqWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gtPMG6WVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gtPMHKWVEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtPMHaWVEeq2dLYfuMvqgg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_oi19wKWSEeq2dLYfuMvqgg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtPMIaWVEeq2dLYfuMvqgg" x="-10" y="50"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_gtPzIKWVEeq2dLYfuMvqgg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_gtPzIaWVEeq2dLYfuMvqgg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gtPzIqWVEeq2dLYfuMvqgg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gtPzI6WVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gtPzJKWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gtPzJaWVEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtPzJqWVEeq2dLYfuMvqgg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gtPzJ6WVEeq2dLYfuMvqgg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gtPzKKWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gtPzKaWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gtPzKqWVEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtPzK6WVEeq2dLYfuMvqgg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_e6wCIKWSEeq2dLYfuMvqgg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtPzL6WVEeq2dLYfuMvqgg" x="1810" y="230"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_gtQaMKWVEeq2dLYfuMvqgg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_gtQaMaWVEeq2dLYfuMvqgg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gtQaMqWVEeq2dLYfuMvqgg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gtQaM6WVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gtQaNKWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gtQaNaWVEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtQaNqWVEeq2dLYfuMvqgg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gtQaN6WVEeq2dLYfuMvqgg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gtQaOKWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gtQaOaWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gtQaOqWVEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtQaO6WVEeq2dLYfuMvqgg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_nCPGoKWSEeq2dLYfuMvqgg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtQaP6WVEeq2dLYfuMvqgg" x="550" y="210"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_gtRBSKWVEeq2dLYfuMvqgg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_gtRBSaWVEeq2dLYfuMvqgg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gtRBSqWVEeq2dLYfuMvqgg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gtRBS6WVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gtRBTKWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gtRBTaWVEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtRBTqWVEeq2dLYfuMvqgg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gtRBT6WVEeq2dLYfuMvqgg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gtRBUKWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gtRBUaWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gtRBUqWVEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtRBU6WVEeq2dLYfuMvqgg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_hxQVMKWSEeq2dLYfuMvqgg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtRBV6WVEeq2dLYfuMvqgg" x="1230" y="230"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_gtRoUqWVEeq2dLYfuMvqgg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_gtRoU6WVEeq2dLYfuMvqgg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gtSPYKWVEeq2dLYfuMvqgg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gtSPYaWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gtSPYqWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gtSPY6WVEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtSPZKWVEeq2dLYfuMvqgg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gtSPZaWVEeq2dLYfuMvqgg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gtSPZqWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gtSPZ6WVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gtSPaKWVEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtSPaaWVEeq2dLYfuMvqgg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_ZEzicKWSEeq2dLYfuMvqgg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtSPbaWVEeq2dLYfuMvqgg" x="-330" y="50"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_gtS2cKWVEeq2dLYfuMvqgg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_gtS2caWVEeq2dLYfuMvqgg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gtS2cqWVEeq2dLYfuMvqgg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_gtS2c6WVEeq2dLYfuMvqgg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_IiUAgKWSEeq2dLYfuMvqgg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_gtS2dKWVEeq2dLYfuMvqgg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_gtS2daWVEeq2dLYfuMvqgg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_JNazAKWSEeq2dLYfuMvqgg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_gtS2dqWVEeq2dLYfuMvqgg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gtS2d6WVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gtS2eKWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gtS2eaWVEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtS2eqWVEeq2dLYfuMvqgg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gtS2e6WVEeq2dLYfuMvqgg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gtS2fKWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gtS2faWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gtS2fqWVEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtS2f6WVEeq2dLYfuMvqgg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_GwoAcKWSEeq2dLYfuMvqgg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtS2g6WVEeq2dLYfuMvqgg" x="1010" y="230"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_gtTdgKWVEeq2dLYfuMvqgg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_gtTdgaWVEeq2dLYfuMvqgg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gtTdgqWVEeq2dLYfuMvqgg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_gtTdg6WVEeq2dLYfuMvqgg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_R4qPYKWTEeq2dLYfuMvqgg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_gtTdhKWVEeq2dLYfuMvqgg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gtTdhaWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gtTdhqWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gtTdh6WVEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtTdiKWVEeq2dLYfuMvqgg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gtTdiaWVEeq2dLYfuMvqgg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gtTdiqWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gtTdi6WVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gtTdjKWVEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtTdjaWVEeq2dLYfuMvqgg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_OISVEKWTEeq2dLYfuMvqgg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtTdkaWVEeq2dLYfuMvqgg" x="990" y="-10"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_gtUEkKWVEeq2dLYfuMvqgg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_gtUEkaWVEeq2dLYfuMvqgg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gtUEkqWVEeq2dLYfuMvqgg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gtUEk6WVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gtUElKWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gtUElaWVEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtUElqWVEeq2dLYfuMvqgg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gtUEl6WVEeq2dLYfuMvqgg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gtUEmKWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gtUEmaWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gtUEmqWVEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtUEm6WVEeq2dLYfuMvqgg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_lmeTQKWSEeq2dLYfuMvqgg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtUEn6WVEeq2dLYfuMvqgg" x="410" y="210"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_gtUroKWVEeq2dLYfuMvqgg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_gtUroaWVEeq2dLYfuMvqgg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gtUroqWVEeq2dLYfuMvqgg" type="Stereotype_AttributeCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gtUro6WVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gtUrpKWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gtUrpaWVEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtUrpqWVEeq2dLYfuMvqgg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gtUrp6WVEeq2dLYfuMvqgg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gtUrqKWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gtUrqaWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gtUrqqWVEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtUrq6WVEeq2dLYfuMvqgg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_-JzUkKWREeq2dLYfuMvqgg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtUrr6WVEeq2dLYfuMvqgg" x="1630" y="410"/>
+    </children>
+    <children xmi:type="notation:Shape" xmi:id="_gtVSsKWVEeq2dLYfuMvqgg" type="Stereotype_Shape">
+      <children xmi:type="notation:DecorationNode" xmi:id="_gtVSsaWVEeq2dLYfuMvqgg" type="Stereotype_NameLabel"/>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gtVSsqWVEeq2dLYfuMvqgg" type="Stereotype_AttributeCompartment">
+        <children xmi:type="notation:Shape" xmi:id="_gtVSs6WVEeq2dLYfuMvqgg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_lHusUKWTEeq2dLYfuMvqgg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_gtVStKWVEeq2dLYfuMvqgg"/>
+        </children>
+        <children xmi:type="notation:Shape" xmi:id="_gtVStaWVEeq2dLYfuMvqgg" type="Property_ClassAttributeLabel">
+          <element xmi:type="uml:Property" href="AIML.profile.uml#_lmazcKWTEeq2dLYfuMvqgg"/>
+          <layoutConstraint xmi:type="notation:Location" xmi:id="_gtVStqWVEeq2dLYfuMvqgg"/>
+        </children>
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gtVSt6WVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gtVSuKWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gtVSuaWVEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtVSuqWVEeq2dLYfuMvqgg"/>
+      </children>
+      <children xmi:type="notation:BasicCompartment" xmi:id="_gtVSu6WVEeq2dLYfuMvqgg" type="Stereotype_OperationCompartment">
+        <styles xmi:type="notation:TitleStyle" xmi:id="_gtVSvKWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:SortingStyle" xmi:id="_gtVSvaWVEeq2dLYfuMvqgg"/>
+        <styles xmi:type="notation:FilteringStyle" xmi:id="_gtVSvqWVEeq2dLYfuMvqgg"/>
+        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtVSv6WVEeq2dLYfuMvqgg"/>
+      </children>
+      <element xmi:type="uml:Stereotype" href="AIML.profile.uml#_iKWVMKWTEeq2dLYfuMvqgg"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gtVSw6WVEeq2dLYfuMvqgg" x="1490" y="230"/>
+    </children>
+    <styles xmi:type="notation:StringValueStyle" xmi:id="_bdoToaWVEeq2dLYfuMvqgg" name="diagram_compatibility_version" stringValue="1.4.0"/>
+    <styles xmi:type="notation:DiagramStyle" xmi:id="_bdoToqWVEeq2dLYfuMvqgg"/>
+    <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_bdoTo6WVEeq2dLYfuMvqgg" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+      <owner xmi:type="uml:Profile" href="AIML.profile.uml#_ZgMWkKWVEeq2dLYfuMvqgg"/>
+    </styles>
+    <element xmi:type="uml:Profile" href="AIML.profile.uml#_ZgMWkKWVEeq2dLYfuMvqgg"/>
+    <edges xmi:type="notation:Connector" xmi:id="_gtIeYKWVEeq2dLYfuMvqgg" type="Generalization_Edge" source="_gtKTkKWVEeq2dLYfuMvqgg" target="_gtTdgKWVEeq2dLYfuMvqgg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_gtIeYaWVEeq2dLYfuMvqgg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_gtIeYqWVEeq2dLYfuMvqgg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_gtIeY6WVEeq2dLYfuMvqgg" x="-1" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_gtIeZKWVEeq2dLYfuMvqgg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_4dWdMKWTEeq2dLYfuMvqgg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gtIeZaWVEeq2dLYfuMvqgg" points="[740, 160, -643984, -643984]$[1120, 103, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gtIeZqWVEeq2dLYfuMvqgg" id="(0.8080808080808081,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gtIeZ6WVEeq2dLYfuMvqgg" id="(0.4968944099378882,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_gtK6r6WVEeq2dLYfuMvqgg" type="Generalization_Edge" source="_gtS2cKWVEeq2dLYfuMvqgg" target="_gtTdgKWVEeq2dLYfuMvqgg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_gtK6sKWVEeq2dLYfuMvqgg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_gtK6saWVEeq2dLYfuMvqgg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_gtK6sqWVEeq2dLYfuMvqgg" x="1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_gtK6s6WVEeq2dLYfuMvqgg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_aApDIKWTEeq2dLYfuMvqgg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gtK6tKWVEeq2dLYfuMvqgg" points="[940, 160, -643984, -643984]$[1140, 103, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gtK6taWVEeq2dLYfuMvqgg" id="(0.8,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gtK6tqWVEeq2dLYfuMvqgg" id="(0.6211180124223602,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_gtLhsKWVEeq2dLYfuMvqgg" type="Generalization_Edge" source="_gtUroKWVEeq2dLYfuMvqgg" target="_gtVSsKWVEeq2dLYfuMvqgg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_gtLhsaWVEeq2dLYfuMvqgg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_gtLhsqWVEeq2dLYfuMvqgg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_gtLhs6WVEeq2dLYfuMvqgg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_gtLhtKWVEeq2dLYfuMvqgg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_nuodIKWTEeq2dLYfuMvqgg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gtLhtaWVEeq2dLYfuMvqgg" points="[1680, 400, -643984, -643984]$[1620, 339, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gtLhtqWVEeq2dLYfuMvqgg" id="(0.3488372093023256,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gtLht6WVEeq2dLYfuMvqgg" id="(0.813953488372093,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_gtOlAaWVEeq2dLYfuMvqgg" type="Generalization_Edge" source="_gtMIwKWVEeq2dLYfuMvqgg" target="_gtVSsKWVEeq2dLYfuMvqgg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_gtOlAqWVEeq2dLYfuMvqgg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_gtOlA6WVEeq2dLYfuMvqgg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_gtOlBKWVEeq2dLYfuMvqgg" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_gtOlBaWVEeq2dLYfuMvqgg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_oMXiAKWTEeq2dLYfuMvqgg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gtOlBqWVEeq2dLYfuMvqgg" points="[1480, 400, -643984, -643984]$[1520, 339, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gtOlB6WVEeq2dLYfuMvqgg" id="(0.6976744186046512,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gtOlCKWVEeq2dLYfuMvqgg" id="(0.23255813953488372,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_gtPMIqWVEeq2dLYfuMvqgg" type="Generalization_Edge" source="_gtPzIKWVEeq2dLYfuMvqgg" target="_gtTdgKWVEeq2dLYfuMvqgg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_gtPMI6WVEeq2dLYfuMvqgg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_gtPMJKWVEeq2dLYfuMvqgg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_gtPMJaWVEeq2dLYfuMvqgg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_gtPMJqWVEeq2dLYfuMvqgg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_dM91MKWTEeq2dLYfuMvqgg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gtPMJ6WVEeq2dLYfuMvqgg" points="[1480, 200, -643984, -643984]$[1240, 103, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gtPMKKWVEeq2dLYfuMvqgg" id="(0.37267080745341613,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gtPMKaWVEeq2dLYfuMvqgg" id="(0.8695652173913043,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_gtRBQKWVEeq2dLYfuMvqgg" type="Generalization_Edge" source="_gtVSsKWVEeq2dLYfuMvqgg" target="_gtTdgKWVEeq2dLYfuMvqgg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_gtRBQaWVEeq2dLYfuMvqgg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_gtRBQqWVEeq2dLYfuMvqgg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_gtRBQ6WVEeq2dLYfuMvqgg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_gtRBRKWVEeq2dLYfuMvqgg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_MGbVkKWUEeq2dLYfuMvqgg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gtRBRaWVEeq2dLYfuMvqgg" points="[1540, 220, -643984, -643984]$[1200, 103, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gtRBRqWVEeq2dLYfuMvqgg" id="(0.3488372093023256,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gtRBR6WVEeq2dLYfuMvqgg" id="(0.7453416149068323,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_gtSPbqWVEeq2dLYfuMvqgg" type="Generalization_Edge" source="_gtQaMKWVEeq2dLYfuMvqgg" target="_gtTdgKWVEeq2dLYfuMvqgg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_gtSPb6WVEeq2dLYfuMvqgg" type="Generalization_StereotypeLabel">
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_gtSPcKWVEeq2dLYfuMvqgg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_gtSPcaWVEeq2dLYfuMvqgg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_WyCjsKWUEeq2dLYfuMvqgg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gtSPcqWVEeq2dLYfuMvqgg" points="[660, 200, -643984, -643984]$[1000, 83, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gtSPc6WVEeq2dLYfuMvqgg" id="(0.7453416149068323,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gtSPdKWVEeq2dLYfuMvqgg" id="(0.12422360248447205,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_gtS2hKWVEeq2dLYfuMvqgg" type="Generalization_Edge" source="_gtQaMKWVEeq2dLYfuMvqgg" target="_gtMv0KWVEeq2dLYfuMvqgg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_gtS2haWVEeq2dLYfuMvqgg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_gtS2hqWVEeq2dLYfuMvqgg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_gtS2h6WVEeq2dLYfuMvqgg" x="-1" y="58"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_gtS2iKWVEeq2dLYfuMvqgg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_Q3KgsKWUEeq2dLYfuMvqgg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gtS2iaWVEeq2dLYfuMvqgg" points="[600, 200, -643984, -643984]$[520, 103, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gtS2iqWVEeq2dLYfuMvqgg" id="(0.37267080745341613,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gtS2i6WVEeq2dLYfuMvqgg" id="(0.75,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_gtTdkqWVEeq2dLYfuMvqgg" type="Generalization_Edge" source="_gtUEkKWVEeq2dLYfuMvqgg" target="_gtMv0KWVEeq2dLYfuMvqgg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_gtTdk6WVEeq2dLYfuMvqgg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_gtTdlKWVEeq2dLYfuMvqgg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_gtTdlaWVEeq2dLYfuMvqgg" y="60"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_gtTdlqWVEeq2dLYfuMvqgg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_DYQrkKWUEeq2dLYfuMvqgg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gtTdl6WVEeq2dLYfuMvqgg" points="[440, 200, -643984, -643984]$[440, 143, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gtTdmKWVEeq2dLYfuMvqgg" id="(0.4,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gtTdmaWVEeq2dLYfuMvqgg" id="(0.25,1.0)"/>
+    </edges>
+    <edges xmi:type="notation:Connector" xmi:id="_gtUrsKWVEeq2dLYfuMvqgg" type="Generalization_Edge" source="_gtRBSKWVEeq2dLYfuMvqgg" target="_gtTdgKWVEeq2dLYfuMvqgg">
+      <children xmi:type="notation:DecorationNode" xmi:id="_gtUrsaWVEeq2dLYfuMvqgg" type="Generalization_StereotypeLabel">
+        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_gtUrsqWVEeq2dLYfuMvqgg" name="IS_UPDATED_POSITION" booleanValue="true"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_gtUrs6WVEeq2dLYfuMvqgg" x="1" y="59"/>
+      </children>
+      <styles xmi:type="notation:FontStyle" xmi:id="_gtUrtKWVEeq2dLYfuMvqgg"/>
+      <element xmi:type="uml:Generalization" href="AIML.profile.uml#_YbtssKWTEeq2dLYfuMvqgg"/>
+      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gtUrtaWVEeq2dLYfuMvqgg" points="[1160, 160, -643984, -643984]$[1180, 103, -643984, -643984]"/>
+      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gtUrtqWVEeq2dLYfuMvqgg" id="(0.7453416149068323,0.0)"/>
+      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gtUrt6WVEeq2dLYfuMvqgg" id="(0.7453416149068323,1.0)"/>
+    </edges>
+  </notation:Diagram>
+</xmi:XMI>
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/profile/AIML.profile.uml b/aiml/org.eclipse.papyrus.aiml.profile/profile/AIML.profile.uml
new file mode 100644
index 0000000..8562d8a
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/profile/AIML.profile.uml
@@ -0,0 +1,1445 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Profile xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_IDYhIH13EeqSHNFOHg2_Jw" name="AIML" URI="http://www.eclipse.org/papyrus/AIML/1" metaclassReference="_IfyLYK8eEeqUEZ8AVVPlLA">
+  <elementImport xmi:type="uml:ElementImport" xmi:id="_IfyLYK8eEeqUEZ8AVVPlLA" alias="Class">
+    <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+  </elementImport>
+  <packageImport xmi:type="uml:PackageImport" xmi:id="_ImVdMH13EeqSHNFOHg2_Jw">
+    <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+  </packageImport>
+  <packageImport xmi:type="uml:PackageImport" xmi:id="_ImfOMH13EeqSHNFOHg2_Jw">
+    <importedPackage xmi:type="uml:Model" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_0"/>
+  </packageImport>
+  <packagedElement xmi:type="uml:Profile" xmi:id="_u1dx8JT1Eeq5BK6mmo2rWg" name="Module" URI="http://www.eclipse.org/papyrus/AIML/module/1">
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_2E9coH2KEeqSHNFOHg2_Jw" name="Model">
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_n3H-sH5rEeqSHNFOHg2_Jw" name="base_Class" association="_n3BRAH5rEeqSHNFOHg2_Jw">
+        <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_n3H-sX5rEeqSHNFOHg2_Jw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_7EMR4IhuEeqlnrZTj0aPoA" name="name" isReadOnly="true" isDerived="true">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_7vDMwIhuEeqlnrZTj0aPoA" name="data" type="_kkWnwIhuEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_9DLHEIhuEeqlnrZTj0aPoA" name="requires_grad">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1-bYgJmyEeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_ivxlgIvAEeqlnrZTj0aPoA" name="subModule" type="_2E9coH2KEeqSHNFOHg2_Jw">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8M2poJmyEeq0jfmjFzaebA"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_eOQdAJm0Eeq0jfmjFzaebA" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="__N7qULYUEeq1Koq3J5meEA" name="optimizer">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZOwH4LYVEeq1Koq3J5meEA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_AtDTsLYVEeq1Koq3J5meEA" name="loss">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_YfAtALYVEeq1Koq3J5meEA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Extension" xmi:id="_n3BRAH5rEeqSHNFOHg2_Jw" name="E_Model_Class1" memberEnd="_n3HXoH5rEeqSHNFOHg2_Jw _n3H-sH5rEeqSHNFOHg2_Jw">
+      <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_n3HXoH5rEeqSHNFOHg2_Jw" name="extension_Model" type="_2E9coH2KEeqSHNFOHg2_Jw" aggregation="composite" association="_n3BRAH5rEeqSHNFOHg2_Jw"/>
+    </packagedElement>
+  </packagedElement>
+  <packagedElement xmi:type="uml:Profile" xmi:id="_38DjAJT1Eeq5BK6mmo2rWg" name="Tensor" URI="http://www.eclipse.org/papyrus/AIML/tensor/1">
+    <packagedElement xmi:type="uml:Enumeration" xmi:id="_D6R-YIvIEeqlnrZTj0aPoA" name="EDType">
+      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_GeF-8IvIEeqlnrZTj0aPoA" name="float32"/>
+      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_VdQs8IvIEeqlnrZTj0aPoA" name="float64"/>
+      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_YIbSsIvIEeqlnrZTj0aPoA" name="float16"/>
+      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_bZFyMIvIEeqlnrZTj0aPoA" name="uint8"/>
+      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_czCAoIvIEeqlnrZTj0aPoA" name="int8"/>
+      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_dzPgcIvIEeqlnrZTj0aPoA" name="int16"/>
+      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_ez5sMIvIEeqlnrZTj0aPoA" name="int32"/>
+      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_flb20IvIEeqlnrZTj0aPoA" name="int64"/>
+      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_gV4cUIvIEeqlnrZTj0aPoA" name="bool"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Enumeration" xmi:id="_AiQ84IvMEeqlnrZTj0aPoA" name="ETensorTypes">
+      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_FE7PwIvMEeqlnrZTj0aPoA" name="FloatTensor"/>
+      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_GM6ykIvMEeqlnrZTj0aPoA" name="DoubleTensor"/>
+      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_IXWp0IvMEeqlnrZTj0aPoA" name="HalfTensor"/>
+      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_KEe6AIvMEeqlnrZTj0aPoA" name="ByteTensor"/>
+      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_LzG_AIvMEeqlnrZTj0aPoA" name="CharTensor"/>
+      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_MmTWgIvMEeqlnrZTj0aPoA" name="ShortTensor"/>
+      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_Ndwi8IvMEeqlnrZTj0aPoA" name="IntTensor"/>
+      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_OHKFQIvMEeqlnrZTj0aPoA" name="LongTensor"/>
+      <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_O3f9EIvMEeqlnrZTj0aPoA" name="BoolTensor"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_kkWnwIhuEeqlnrZTj0aPoA" name="Tensor">
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_mlHloIhuEeqlnrZTj0aPoA" name="data">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Yr_CcJefEeq1-Ze45jZMTg"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_YsJagJefEeq1-Ze45jZMTg" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_ncDNoIhuEeqlnrZTj0aPoA" name="dtype" visibility="public" type="_D6R-YIvIEeqlnrZTj0aPoA">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_k0KfwJegEeq1-Ze45jZMTg"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_oUgfoIhuEeqlnrZTj0aPoA" name="device" type="_ZQQYwJbREeq1-Ze45jZMTg">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HrXUUJmzEeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_o5TOwIhuEeqlnrZTj0aPoA" name="requires_grad">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JBGYMJmzEeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_pnJzQIhuEeqlnrZTj0aPoA" name="pin_memory">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_XzSaIJmzEeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_wocFsKWvEeq2dLYfuMvqgg" name="shape">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HJeCoKWwEeq2dLYfuMvqgg"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NBT_wKWwEeq2dLYfuMvqgg" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_xs8PoKWvEeq2dLYfuMvqgg" name="name">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IBXT8KWwEeq2dLYfuMvqgg"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_JM8zYK8eEeqUEZ8AVVPlLA" name="base_Class" association="_JM3T0K8eEeqUEZ8AVVPlLA">
+        <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JM8zYa8eEeqUEZ8AVVPlLA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Extension" xmi:id="_JM3T0K8eEeqUEZ8AVVPlLA" name="E_Tensor_Class4" memberEnd="_JM7lQK8eEeqUEZ8AVVPlLA _JM8zYK8eEeqUEZ8AVVPlLA">
+      <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_JM7lQK8eEeqUEZ8AVVPlLA" name="extension_Tensor" type="_kkWnwIhuEeqlnrZTj0aPoA" aggregation="composite" association="_JM3T0K8eEeqUEZ8AVVPlLA"/>
+    </packagedElement>
+  </packagedElement>
+  <packagedElement xmi:type="uml:Package" xmi:id="_-8tiUJT1Eeq5BK6mmo2rWg" name="datatypes">
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_ZQQYwJbREeq1-Ze45jZMTg" name="Device">
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_mveW8JbREeq1-Ze45jZMTg" name="type">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+      </ownedAttribute>
+    </packagedElement>
+  </packagedElement>
+  <packagedElement xmi:type="uml:Profile" xmi:id="_Deu8AJT2Eeq5BK6mmo2rWg" name="Pooling_layers" URI="http://www.eclipse.org/papyrus/AIML/pooling/1">
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_nMBrUIVSEeqvavUi0dxRAw" name="Pooling_layers" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_rCc7kIVYEeqlnrZTj0aPoA" general="_2E9coH2KEeqSHNFOHg2_Jw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_qYSzAIVSEeqvavUi0dxRAw" name="Pooling_layers_1" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_DTFDUIVYEeqlnrZTj0aPoA" general="_nMBrUIVSEeqvavUi0dxRAw"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_CkDW8IVUEeqlnrZTj0aPoA" name="kernel_size">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SeW74I82Eeq5HrfdV5ATIg"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LZYuYJa3Eeq1-Ze45jZMTg" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_spFw8IVSEeqvavUi0dxRAw" name="Pooling_layers_2" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_CV1X8IVYEeqlnrZTj0aPoA" general="_nMBrUIVSEeqvavUi0dxRAw"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_vvW-UIVSEeqvavUi0dxRAw" name="output_size">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7E6k4Ja3Eeq1-Ze45jZMTg"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7DawEJa3Eeq1-Ze45jZMTg" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_x9fp0IVSEeqvavUi0dxRAw" name="AdaptativeMaxPool" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_i7emsIVTEeqlnrZTj0aPoA" general="_spFw8IVSEeqvavUi0dxRAw"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_3JChoIVSEeqvavUi0dxRAw" name="return_indices">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_Y8sCUIVTEeqlnrZTj0aPoA" name="AdaptativeMaxPool1d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_g8dVQIVTEeqlnrZTj0aPoA" general="_x9fp0IVSEeqvavUi0dxRAw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_cdWFoIVTEeqlnrZTj0aPoA" name="AdaptativeMaxPool2d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_hguf8IVTEeqlnrZTj0aPoA" general="_x9fp0IVSEeqvavUi0dxRAw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_dQfZ0IVTEeqlnrZTj0aPoA" name="AdaptativeMaxPool3d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_iK5eUIVTEeqlnrZTj0aPoA" general="_x9fp0IVSEeqvavUi0dxRAw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_sAviEIVTEeqlnrZTj0aPoA" name="AdaptiveAvgPool3d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_7a4U0IVTEeqlnrZTj0aPoA" general="_spFw8IVSEeqvavUi0dxRAw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_uVbhgIVTEeqlnrZTj0aPoA" name="AdaptiveAvgPool2d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_8DbikIVTEeqlnrZTj0aPoA" general="_spFw8IVSEeqvavUi0dxRAw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_vkD30IVTEeqlnrZTj0aPoA" name="AdaptiveAvgPool1d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_9Q2_AIVTEeqlnrZTj0aPoA" general="_spFw8IVSEeqvavUi0dxRAw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_H6da8IVUEeqlnrZTj0aPoA" name="Pooling_layers_1_1" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_2P_c8IVWEeqlnrZTj0aPoA" general="_qYSzAIVSEeqvavUi0dxRAw"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_K3ga4IVUEeqlnrZTj0aPoA" name="stride">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NKGeEJa3Eeq1-Ze45jZMTg"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NIPc4Ja3Eeq1-Ze45jZMTg" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_QF-D0IVUEeqlnrZTj0aPoA" name="MaxPool1d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_5a1L0IVXEeqlnrZTj0aPoA" general="_rL8rQIVXEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_SVcMEIVUEeqlnrZTj0aPoA" name="MaxUnpool1d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_3UmmgIVUEeqlnrZTj0aPoA" general="_h3EG4IVUEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_VqZVsIVUEeqlnrZTj0aPoA" name="AvgPool1d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_geEBsIVWEeqlnrZTj0aPoA" general="_6bJEMIVVEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_h3EG4IVUEeqlnrZTj0aPoA" name="Pooling_layers_1_1_1" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_Ud9iUIVVEeqlnrZTj0aPoA" general="_H6da8IVUEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_mqeLgIVUEeqlnrZTj0aPoA" name="padding">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_O_n1QJa3Eeq1-Ze45jZMTg"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_O9_dkJa3Eeq1-Ze45jZMTg" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_jxSQMKZ3EeqIr7xwFiWQGQ" name="padding_k">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lhqBoKZ3EeqIr7xwFiWQGQ"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_wYbekIVUEeqlnrZTj0aPoA" name="MaxUnpool2d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_2i3nkIVUEeqlnrZTj0aPoA" general="_h3EG4IVUEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_y5HSoIVUEeqlnrZTj0aPoA" name="MaxUnpool3d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_2DdHsIVUEeqlnrZTj0aPoA" general="_h3EG4IVUEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_FjbcsIVVEeqlnrZTj0aPoA" name="Pooling_layers_1_1_2" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_TaQCkIVVEeqlnrZTj0aPoA" general="_H6da8IVUEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_K5-DkIVVEeqlnrZTj0aPoA" name="ceil_mode">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gpkMYJm1Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_XxquwIVVEeqlnrZTj0aPoA" name="LPPool1d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_dGXikIVVEeqlnrZTj0aPoA" general="_FjbcsIVVEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_aIzlQIVVEeqlnrZTj0aPoA" name="LPPool2d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_dg9M0IVVEeqlnrZTj0aPoA" general="_FjbcsIVVEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_6bJEMIVVEeqlnrZTj0aPoA" name="Pooling_layers_1_1_2_1" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_eWQLMIVXEeqlnrZTj0aPoA" general="_Cfb1UIVXEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_Ayj5QIVWEeqlnrZTj0aPoA" name="count_include_pad">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_X90kQJm1Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_TS3LsIVWEeqlnrZTj0aPoA" name="AvgPool2d/3d" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_f8tBEIVWEeqlnrZTj0aPoA" general="_6bJEMIVVEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_Y5DYIIVWEeqlnrZTj0aPoA" name="divisor_override">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_a-aAYJm1Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_b9-hsIVWEeqlnrZTj0aPoA" name="AvgPool2d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_e4Tk0IVWEeqlnrZTj0aPoA" general="_TS3LsIVWEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_ddho4IVWEeqlnrZTj0aPoA" name="AvgPool3d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_fQk64IVWEeqlnrZTj0aPoA" general="_TS3LsIVWEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_Cfb1UIVXEeqlnrZTj0aPoA" name="Pooling_layers_1_1_1_1" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_V3zYMIVXEeqlnrZTj0aPoA" general="_h3EG4IVUEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_KnpSkIVXEeqlnrZTj0aPoA" name="ceil_mode">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPD3EJm1Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_xBPDUKZ3EeqIr7xwFiWQGQ" name="pool_size">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1Sv70KZ3EeqIr7xwFiWQGQ"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1S8wIKZ3EeqIr7xwFiWQGQ" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_rL8rQIVXEeqlnrZTj0aPoA" name="MaxPool" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_zKvGwIVXEeqlnrZTj0aPoA" general="_Cfb1UIVXEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_tPrdkIVXEeqlnrZTj0aPoA" name="dilation" visibility="public">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SBIecJa3Eeq1-Ze45jZMTg"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SBRoYJa3Eeq1-Ze45jZMTg" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_uGxdoIVXEeqlnrZTj0aPoA" name="return_indices">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_TAuYIJm1Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_1WhB0IVXEeqlnrZTj0aPoA" name="MaxPool2d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_6B2IgIVXEeqlnrZTj0aPoA" general="_rL8rQIVXEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_2J_tMIVXEeqlnrZTj0aPoA" name="MaxPool3d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_6loyEIVXEeqlnrZTj0aPoA" general="_rL8rQIVXEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_Y3zwEIVYEeqlnrZTj0aPoA" name="FractionalMaxPool2d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_hzfRoIVYEeqlnrZTj0aPoA" general="_qYSzAIVSEeqvavUi0dxRAw"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_cdy_UIVYEeqlnrZTj0aPoA" name="output_size" visibility="public">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_zyjKgJa3Eeq1-Ze45jZMTg"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zxKqcJa3Eeq1-Ze45jZMTg" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_dhzaAIVYEeqlnrZTj0aPoA" name="output_ratio">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1TXdAJa3Eeq1-Ze45jZMTg"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1MSkoJa3Eeq1-Ze45jZMTg" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_fG5IgIVYEeqlnrZTj0aPoA" name="return_indices">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_thHtoJm1Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+  </packagedElement>
+  <packagedElement xmi:type="uml:Profile" xmi:id="_Nr2NYJOPEeqnY_bZg2Ebjg" name="Convolution_layers" URI="http://www.eclipse.org/papyrus/AIML/convolution/1">
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_5DtswH2KEeqSHNFOHg2_Jw" name="Convolution" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_JBpp4H5sEeqSHNFOHg2_Jw" general="_YZ54MH5qEeqSHNFOHg2_Jw"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_xLDlAH5nEeqSHNFOHg2_Jw" name="in_channels">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_qBKXMKGzEeqsNvCDUfZJVA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_PgB_YH5oEeqSHNFOHg2_Jw" name="groups">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pV3qoJm0Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_RrmfEH5oEeqSHNFOHg2_Jw" name="biais">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_q7b6QJm0Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_UPxE8H5oEeqSHNFOHg2_Jw" name="padding_mode">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nCc2gJm0Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_NJHtgKG2EeqsNvCDUfZJVA" name="data_format">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_khfcsKTYEeqmTOsCAzVBxg"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_Ou9p8KG2EeqsNvCDUfZJVA" name="dilation_rate">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_goNTcKTXEeqmTOsCAzVBxg"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_goSL8KTXEeqmTOsCAzVBxg" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_SXLt0KG2EeqsNvCDUfZJVA" name="activation">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HIOnMKTZEeqmTOsCAzVBxg"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_THvoEKG2EeqsNvCDUfZJVA" name="bias_initializer">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_UiUvsKG2EeqsNvCDUfZJVA" name="activity_regularizer">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_kn6TMKG2EeqsNvCDUfZJVA" name="bias_constraint">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_bGMOcKStEeqmTOsCAzVBxg" name="bias_regularizer">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_anKPYH5pEeqSHNFOHg2_Jw" name="Unfold">
+      <generalization xmi:type="uml:Generalization" xmi:id="_Je4_gH5sEeqSHNFOHg2_Jw" general="_YZ54MH5qEeqSHNFOHg2_Jw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_ISZCEH5qEeqSHNFOHg2_Jw" name="Fold">
+      <generalization xmi:type="uml:Generalization" xmi:id="_J9Ae4H5sEeqSHNFOHg2_Jw" general="_YZ54MH5qEeqSHNFOHg2_Jw"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_MKi_YH5qEeqSHNFOHg2_Jw" name="output_size">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SOf3wIL9Eeqvud4Ae2T3Lg"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jtJCoJa2Eeq1-Ze45jZMTg" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_YZ54MH5qEeqSHNFOHg2_Jw" name="Convolution_layers" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_s5vukH5sEeqSHNFOHg2_Jw" general="_2E9coH2KEeqSHNFOHg2_Jw"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_ZsHuAH5qEeqSHNFOHg2_Jw" name="kernel_size" visibility="public">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_okd2EIvCEeqlnrZTj0aPoA"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_LFNqoJa2Eeq1-Ze45jZMTg" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_a-bqcH5qEeqSHNFOHg2_Jw" name="stride">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_kN1DwI81Eeq5HrfdV5ATIg"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7V1QIJm0Eeq0jfmjFzaebA" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_bcYxwH5qEeqSHNFOHg2_Jw" name="padding">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pAoEYI81Eeq5HrfdV5ATIg"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_U_9cgJa2Eeq1-Ze45jZMTg" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_cR75sH5qEeqSHNFOHg2_Jw" name="dilation" visibility="public">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ruNsAI81Eeq5HrfdV5ATIg"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_XIcL8Ja2Eeq1-Ze45jZMTg" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_2Ej78IVJEeqvud4Ae2T3Lg" name="Conv2d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_qNQVoKG3EeqsNvCDUfZJVA" general="_5JUXMKG1EeqsNvCDUfZJVA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_6j6cIIVJEeqvud4Ae2T3Lg" name="Conv3d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_pt11wKG3EeqsNvCDUfZJVA" general="_5JUXMKG1EeqsNvCDUfZJVA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_8w4C8IVJEeqvud4Ae2T3Lg" name="ConvTranspose1d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_ROpsIKSuEeqmTOsCAzVBxg" general="_37PHIKStEeqmTOsCAzVBxg"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="__Er4oIVJEeqvud4Ae2T3Lg" name="ConvTranspose2d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_QScZcKG3EeqsNvCDUfZJVA" general="_RBqh0KG1EeqsNvCDUfZJVA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_AfPLEIVKEeqvud4Ae2T3Lg" name="ConvTranspose3d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_Qt4YQKG3EeqsNvCDUfZJVA" general="_RBqh0KG1EeqsNvCDUfZJVA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_RBqh0KG1EeqsNvCDUfZJVA" name="transpose" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_RL6_IKG3EeqsNvCDUfZJVA" general="_5JUXMKG1EeqsNvCDUfZJVA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_SowbcKG1EeqsNvCDUfZJVA" name="output_padding">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_TFtJAKTdEeqmTOsCAzVBxg"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_TFxacKTdEeqmTOsCAzVBxg" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_5JUXMKG1EeqsNvCDUfZJVA" name="basic" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_QvZkUKSuEeqmTOsCAzVBxg" general="_37PHIKStEeqmTOsCAzVBxg"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_7rUZ4KG1EeqsNvCDUfZJVA" name="kernel_initializer">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_21W9AKTVEeqmTOsCAzVBxg"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_85lj0KG1EeqsNvCDUfZJVA" name="kernel_constraint" type="_sQtMMKZ6EeqIr7xwFiWQGQ"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_ak_cwKG2EeqsNvCDUfZJVA" name="kernel_regularizer">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lYtRMKTbEeqmTOsCAzVBxg"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_g_SxQKG3EeqsNvCDUfZJVA" name="Conv1d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_q1mIAKG3EeqsNvCDUfZJVA" general="_5JUXMKG1EeqsNvCDUfZJVA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_d-jusKG4EeqsNvCDUfZJVA" name="Separable" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_Rvo5UKSuEeqmTOsCAzVBxg" general="_37PHIKStEeqmTOsCAzVBxg"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_etxlIKG4EeqsNvCDUfZJVA" name="depth_multiplier">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_S7qjkKTaEeqmTOsCAzVBxg"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_S7tm4KTaEeqmTOsCAzVBxg" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_f_57YKG4EeqsNvCDUfZJVA" name="depthwise_initializer">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mEnKYKTaEeqmTOsCAzVBxg"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_hwRFwKG4EeqsNvCDUfZJVA" name="pointwise_initializer">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_kqpt0KTaEeqmTOsCAzVBxg"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_i2jYYKG4EeqsNvCDUfZJVA" name="depthwise_regularizer">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_lF9PMKG4EeqsNvCDUfZJVA" name="poitnwise_regularizer">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_mtJ2gKG4EeqsNvCDUfZJVA" name="depthwise_constraint">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_oTAaAKG4EeqsNvCDUfZJVA" name="pointwise_constraint">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_08Tc0KG4EeqsNvCDUfZJVA" name="SeparableConv2D">
+      <generalization xmi:type="uml:Generalization" xmi:id="_KvNvgKG5EeqsNvCDUfZJVA" general="_d-jusKG4EeqsNvCDUfZJVA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_34MmMKG4EeqsNvCDUfZJVA" name="SeparableConv1D">
+      <generalization xmi:type="uml:Generalization" xmi:id="_L9aA8KG5EeqsNvCDUfZJVA" general="_d-jusKG4EeqsNvCDUfZJVA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_Ip7BgKG6EeqsNvCDUfZJVA" name="DepthwiseConv2D">
+      <generalization xmi:type="uml:Generalization" xmi:id="_gvxQoKSuEeqmTOsCAzVBxg" general="_5DtswH2KEeqSHNFOHg2_Jw"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_SSgFUKG6EeqsNvCDUfZJVA" name="depth_multiplier">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fDw2cKTdEeqmTOsCAzVBxg"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fD1u8KTdEeqmTOsCAzVBxg" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_ZHdK8KG6EeqsNvCDUfZJVA" name="depthwise_initializer">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_chtrUKG6EeqsNvCDUfZJVA" name="depthwise_regularizer">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_iro28KG6EeqsNvCDUfZJVA" name="depthwise_constraint">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_37PHIKStEeqmTOsCAzVBxg" name="LayerWithFilter" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_SbB_sKSuEeqmTOsCAzVBxg" general="_5DtswH2KEeqSHNFOHg2_Jw"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_NbNPsKSuEeqmTOsCAzVBxg" name="out_channels" visibility="public">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+      </ownedAttribute>
+    </packagedElement>
+  </packagedElement>
+  <packagedElement xmi:type="uml:Profile" xmi:id="_2_xEcJT2Eeq5BK6mmo2rWg" name="Padding_layers" URI="http://www.eclipse.org/papyrus/AIML/padding/1">
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_w6iwUIVYEeqlnrZTj0aPoA" name="Padding_layers" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_zb6SIIVeEeqlnrZTj0aPoA" general="_2E9coH2KEeqSHNFOHg2_Jw"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_UZswkIVZEeqlnrZTj0aPoA" name="padding">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nu1jQJOREeqnY_bZg2Ebjg"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nvC-oJOREeqnY_bZg2Ebjg" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_YlZU8IVZEeqlnrZTj0aPoA" name="ReflectionPad1d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_zJF2EIVZEeqlnrZTj0aPoA" general="_w6iwUIVYEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_aphv4IVZEeqlnrZTj0aPoA" name="ReflectionPad2d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_0IHqIIVZEeqlnrZTj0aPoA" general="_w6iwUIVYEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_cIwG8IVZEeqlnrZTj0aPoA" name="ReplicationPad1d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_2srRkIVZEeqlnrZTj0aPoA" general="_w6iwUIVYEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_fdB7IIVZEeqlnrZTj0aPoA" name="ReplicationPad2d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_3Rpm4IVZEeqlnrZTj0aPoA" general="_w6iwUIVYEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_gxtPEIVZEeqlnrZTj0aPoA" name="ReplicationPad3d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_4uA3MIVZEeqlnrZTj0aPoA" general="_w6iwUIVYEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_kjrr4IVZEeqlnrZTj0aPoA" name="ZeroPad2d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_5Tm3kIVZEeqlnrZTj0aPoA" general="_w6iwUIVYEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_mNvZ8IVZEeqlnrZTj0aPoA" name="ConstantPad1d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_6g_QsIVZEeqlnrZTj0aPoA" general="_w6iwUIVYEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_okP-UIVZEeqlnrZTj0aPoA" name="ConstantPad2d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_7KBmoIVZEeqlnrZTj0aPoA" general="_w6iwUIVYEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_sNFGMIVZEeqlnrZTj0aPoA" name="ConstantPad3d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_7vcA0IVZEeqlnrZTj0aPoA" general="_w6iwUIVYEeqlnrZTj0aPoA"/>
+    </packagedElement>
+  </packagedElement>
+  <packagedElement xmi:type="uml:Profile" xmi:id="_H7fbMJT2Eeq5BK6mmo2rWg" name="NonLinearActivations" URI="http://www.eclipse.org/papyrus/AIML/nonlinear/1">
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_AwFawIVbEeqlnrZTj0aPoA" name="Non-linear_activations_(weighted sum, nonlinearity)" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_21Ud8IVeEeqlnrZTj0aPoA" general="_2E9coH2KEeqSHNFOHg2_Jw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_FFiYEIVbEeqlnrZTj0aPoA" name="ELU">
+      <generalization xmi:type="uml:Generalization" xmi:id="_ckA0sIVbEeqlnrZTj0aPoA" general="_Im3JwIVbEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_MoLDEIVbEeqlnrZTj0aPoA" name="alpha">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_98TtsJm1Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_Im3JwIVbEeqlnrZTj0aPoA" name="Non-linear_activations_(weighted sum, nonlinearity)_1" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_dfBEYIVbEeqlnrZTj0aPoA" general="_AwFawIVbEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_Ki9qEIVbEeqlnrZTj0aPoA" name="inplace">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__5jdgJm1Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_O0zSsIVbEeqlnrZTj0aPoA" name="shrink" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_Kab40IVeEeqlnrZTj0aPoA" general="_AwFawIVbEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_QsGykIVbEeqlnrZTj0aPoA" name="lambd">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EmVVsJm2Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_T1MDYIVbEeqlnrZTj0aPoA" name="LeakyReLU">
+      <generalization xmi:type="uml:Generalization" xmi:id="_dEj9AIVbEeqlnrZTj0aPoA" general="_Im3JwIVbEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_VlPEsIVbEeqlnrZTj0aPoA" name="negative_slope">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_M9Ch8Jm2Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_hnumMIVbEeqlnrZTj0aPoA" name="LogSigmoid">
+      <generalization xmi:type="uml:Generalization" xmi:id="_g0PMYIVeEeqlnrZTj0aPoA" general="_AwFawIVbEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_mNXUkIVbEeqlnrZTj0aPoA" name="MultiheadAttention">
+      <generalization xmi:type="uml:Generalization" xmi:id="_gMwVoIVeEeqlnrZTj0aPoA" general="_AwFawIVbEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_oCRnwIVbEeqlnrZTj0aPoA" name="embed_dim">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_pXDCUIVbEeqlnrZTj0aPoA" name="num_heads">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_qHZhMIVbEeqlnrZTj0aPoA" name="dropout">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UfYSAJm2Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_qxdK0IVbEeqlnrZTj0aPoA" name="bias">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VpCBsJm2Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_rp_8YIVbEeqlnrZTj0aPoA" name="add_bias_kv ">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aQ0sMJm2Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_uscZsIVbEeqlnrZTj0aPoA" name="add_zero_attn">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_a7QwUJm2Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_wd6XUIVbEeqlnrZTj0aPoA" name="kdim">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_h7FCIJm2Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_w_bI8IVbEeqlnrZTj0aPoA" name="vdim">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jWzZQJm2Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_FyhkcIVcEeqlnrZTj0aPoA" name="PReLU">
+      <generalization xmi:type="uml:Generalization" xmi:id="_fZNY0IVeEeqlnrZTj0aPoA" general="_AwFawIVbEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_H7n-8IVcEeqlnrZTj0aPoA" name="num_parameters">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_n_dmcJm2Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_J_NnUIVcEeqlnrZTj0aPoA" name="init">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ot4LoJm2Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_PQkzQIVcEeqlnrZTj0aPoA" name="ReLU">
+      <generalization xmi:type="uml:Generalization" xmi:id="_WsaSsIVcEeqlnrZTj0aPoA" general="_Im3JwIVbEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_Q694gIVcEeqlnrZTj0aPoA" name="ReLU6">
+      <generalization xmi:type="uml:Generalization" xmi:id="_XLnXMIVcEeqlnrZTj0aPoA" general="_Im3JwIVbEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_T9yJQIVcEeqlnrZTj0aPoA" name="SELU">
+      <generalization xmi:type="uml:Generalization" xmi:id="_X3PuIIVcEeqlnrZTj0aPoA" general="_Im3JwIVbEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_oPGGUIVcEeqlnrZTj0aPoA" name="RReLU">
+      <generalization xmi:type="uml:Generalization" xmi:id="_yH-P8IVcEeqlnrZTj0aPoA" general="_Im3JwIVbEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_pyKbkIVcEeqlnrZTj0aPoA" name="lower">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_vYFZ0Jm2Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_qj-TAIVcEeqlnrZTj0aPoA" name="upper">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_v48EIJm2Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_uYqFkIVcEeqlnrZTj0aPoA" name="CELU">
+      <generalization xmi:type="uml:Generalization" xmi:id="_ymuBcIVcEeqlnrZTj0aPoA" general="_Im3JwIVbEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_vrowYIVcEeqlnrZTj0aPoA" name="alpha">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2RN00Jm2Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_-FB30IVcEeqlnrZTj0aPoA" name="GELU">
+      <generalization xmi:type="uml:Generalization" xmi:id="_SfSgEIVeEeqlnrZTj0aPoA" general="_AwFawIVbEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="__HL4YIVcEeqlnrZTj0aPoA" name="Sigmoid">
+      <generalization xmi:type="uml:Generalization" xmi:id="_heXHcIVeEeqlnrZTj0aPoA" general="_AwFawIVbEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_AXPyEIVdEeqlnrZTj0aPoA" name="Softplus">
+      <generalization xmi:type="uml:Generalization" xmi:id="_LicCsIVeEeqlnrZTj0aPoA" general="_AwFawIVbEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_FZhZIIVdEeqlnrZTj0aPoA" name="beta">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6rtDIJm2Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_KHN3UIVdEeqlnrZTj0aPoA" name="threshold">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7RoasJm2Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_Q1o3IIVdEeqlnrZTj0aPoA" name="Softshrink">
+      <generalization xmi:type="uml:Generalization" xmi:id="_WoPu8IVdEeqlnrZTj0aPoA" general="_O0zSsIVbEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_Tr5SkIVdEeqlnrZTj0aPoA" name="Hardshrink">
+      <generalization xmi:type="uml:Generalization" xmi:id="_WKteYIVdEeqlnrZTj0aPoA" general="_O0zSsIVbEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_dgIz0IVdEeqlnrZTj0aPoA" name="Softsign">
+      <generalization xmi:type="uml:Generalization" xmi:id="_esL6wIVeEeqlnrZTj0aPoA" general="_AwFawIVbEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_ef3LcIVdEeqlnrZTj0aPoA" name="Tanhshrink">
+      <generalization xmi:type="uml:Generalization" xmi:id="_bY_rsIVeEeqlnrZTj0aPoA" general="_AwFawIVbEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_kIQXUIVdEeqlnrZTj0aPoA" name="Tanh">
+      <generalization xmi:type="uml:Generalization" xmi:id="_dbS6oIVeEeqlnrZTj0aPoA" general="_AwFawIVbEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_4wdxcIVdEeqlnrZTj0aPoA" name="Threshold">
+      <generalization xmi:type="uml:Generalization" xmi:id="_8qf-EIVdEeqlnrZTj0aPoA" general="_Im3JwIVbEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_6bNcAIVdEeqlnrZTj0aPoA" name="threshold">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_7aGGIIVdEeqlnrZTj0aPoA" name="value">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_ymNBQJa5Eeq1-Ze45jZMTg" name="Hardtanh">
+      <generalization xmi:type="uml:Generalization" xmi:id="_CXDD0Ja6Eeq1-Ze45jZMTg" general="_Im3JwIVbEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_3HW4QJa5Eeq1-Ze45jZMTg" name="min_val">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JS4kYJm2Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_60q3gJa5Eeq1-Ze45jZMTg" name="max_val">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KluFQJm2Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+  </packagedElement>
+  <packagedElement xmi:type="uml:Profile" xmi:id="_K1H6wJT2Eeq5BK6mmo2rWg" name="SoftMinMaxActivations" URI="http://www.eclipse.org/papyrus/AIML/softminmax/1">
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_HyCdwIVfEeqlnrZTj0aPoA" name="SoftMinMax" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_LHL_MIVgEeqlnrZTj0aPoA" general="_2E9coH2KEeqSHNFOHg2_Jw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_en-TsIVfEeqlnrZTj0aPoA" name="SoftMinMax_1" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_98A-YIVfEeqlnrZTj0aPoA" general="_HyCdwIVfEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_f3_xIIVfEeqlnrZTj0aPoA" name="dim">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZoGp4Jm3Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_lbyw4IVfEeqlnrZTj0aPoA" name="Softmin">
+      <generalization xmi:type="uml:Generalization" xmi:id="__rKAwIVfEeqlnrZTj0aPoA" general="_en-TsIVfEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_nBjNwIVfEeqlnrZTj0aPoA" name="Softmax">
+      <generalization xmi:type="uml:Generalization" xmi:id="__G9ukIVfEeqlnrZTj0aPoA" general="_en-TsIVfEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_n_v7YIVfEeqlnrZTj0aPoA" name="Softmax2d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_9EA_YIVfEeqlnrZTj0aPoA" general="_HyCdwIVfEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_qeP-IIVfEeqlnrZTj0aPoA" name="LogSoftmax">
+      <generalization xmi:type="uml:Generalization" xmi:id="_-m_OAIVfEeqlnrZTj0aPoA" general="_en-TsIVfEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_vpbpkIVfEeqlnrZTj0aPoA" name="AdaptiveLogSoftmaxWithLoss">
+      <generalization xmi:type="uml:Generalization" xmi:id="_8okZgIVfEeqlnrZTj0aPoA" general="_HyCdwIVfEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_zzHbwIVfEeqlnrZTj0aPoA" name="in_features">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_09lDwIVfEeqlnrZTj0aPoA" name="n_classes">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_1jP8oIVfEeqlnrZTj0aPoA" name="cutoffs">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PeizoJa8Eeq1-Ze45jZMTg"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Peo6QJa8Eeq1-Ze45jZMTg" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_2sVroIVfEeqlnrZTj0aPoA" name="div_value">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_g9ne4Jm3Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_3ZGrAIVfEeqlnrZTj0aPoA" name="head_biais">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hkG3IJm3Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+  </packagedElement>
+  <packagedElement xmi:type="uml:Profile" xmi:id="_N5zMsJT2Eeq5BK6mmo2rWg" name="Normalization_layers" URI="http://www.eclipse.org/papyrus/AIML/normalization/1">
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_ws_i4IVgEeqlnrZTj0aPoA" name="Normalization_layers" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_l2TbQIViEeqlnrZTj0aPoA" general="_2E9coH2KEeqSHNFOHg2_Jw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_2ZKbgIVgEeqlnrZTj0aPoA" name="Normalization_layers_1" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_UxrSEIVhEeqlnrZTj0aPoA" general="_ws_i4IVgEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_4_83kIVgEeqlnrZTj0aPoA" name="eps">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_w8xDMJm3Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_GstigIVhEeqlnrZTj0aPoA" name="LayerNorm">
+      <generalization xmi:type="uml:Generalization" xmi:id="_WYnasIVhEeqlnrZTj0aPoA" general="_2ZKbgIVgEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_KI-OAIVhEeqlnrZTj0aPoA" name="normalized_shape">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EiCX4Ja-Eeq1-Ze45jZMTg"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EiGpUJa-Eeq1-Ze45jZMTg" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_OsXgsIVhEeqlnrZTj0aPoA" name="elementwise_affine">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A4e5AJm4Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_ILIBQIVhEeqlnrZTj0aPoA" name="LocalResponseNorm">
+      <generalization xmi:type="uml:Generalization" xmi:id="_UQtTAIVhEeqlnrZTj0aPoA" general="_ws_i4IVgEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_Qt56oIVhEeqlnrZTj0aPoA" name="size">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_RjEoEIVhEeqlnrZTj0aPoA" name="alpha">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ja0GcJm4Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_SBd0QIVhEeqlnrZTj0aPoA" name="beta">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KkqDYJm4Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_SVdHQIVhEeqlnrZTj0aPoA" name="k">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NPhHIJm4Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_bf7SwIVhEeqlnrZTj0aPoA" name="Normalization_layers_1_1">
+      <generalization xmi:type="uml:Generalization" xmi:id="_sCPOgIVhEeqlnrZTj0aPoA" general="_2ZKbgIVgEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_gvtxYIVhEeqlnrZTj0aPoA" name="affine">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ut1GcJm3Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_fbbfAIVhEeqlnrZTj0aPoA" name="Normalization_layers_1_1_1" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_67JjgIVhEeqlnrZTj0aPoA" general="_bf7SwIVhEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_iVdAIIVhEeqlnrZTj0aPoA" name="num_features">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_ygFbsIVhEeqlnrZTj0aPoA" name="momentum">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rCxxAJm3Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_2tKgIIVhEeqlnrZTj0aPoA" name="track_running_stats ">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_sTlRkJm3Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_kVSw8IVhEeqlnrZTj0aPoA" name="GroupNorm">
+      <generalization xmi:type="uml:Generalization" xmi:id="_qWp2cIVhEeqlnrZTj0aPoA" general="_bf7SwIVhEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_mNNU0IVhEeqlnrZTj0aPoA" name="num_groups">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_njZrsIVhEeqlnrZTj0aPoA" name="num_channels">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_BDZUIIViEeqlnrZTj0aPoA" name="BatchNorm1d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_XsCU8IViEeqlnrZTj0aPoA" general="_fbbfAIVhEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_ELXxsIViEeqlnrZTj0aPoA" name="BatchNorm2d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_YkOhMIViEeqlnrZTj0aPoA" general="_fbbfAIVhEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_GDAowIViEeqlnrZTj0aPoA" name="BatchNorm3d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_ZlFhQIViEeqlnrZTj0aPoA" general="_fbbfAIVhEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_Ikef8IViEeqlnrZTj0aPoA" name="SyncBatchNorm">
+      <generalization xmi:type="uml:Generalization" xmi:id="_aLhPIIViEeqlnrZTj0aPoA" general="_fbbfAIVhEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_K2rMEIViEeqlnrZTj0aPoA" name="process_group ">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_kXoF4Ja9Eeq1-Ze45jZMTg"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_OF6vQIViEeqlnrZTj0aPoA" name="InstanceNorm1d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_alo_UIViEeqlnrZTj0aPoA" general="_fbbfAIVhEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_RKVigIViEeqlnrZTj0aPoA" name="InstanceNorm2d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_a9amIIViEeqlnrZTj0aPoA" general="_fbbfAIVhEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_SiGmsIViEeqlnrZTj0aPoA" name="InstanceNorm3d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_baXn4IViEeqlnrZTj0aPoA" general="_fbbfAIVhEeqlnrZTj0aPoA"/>
+    </packagedElement>
+  </packagedElement>
+  <packagedElement xmi:type="uml:Profile" xmi:id="_RAjiQJT2Eeq5BK6mmo2rWg" name="Recurrent_layers" URI="http://www.eclipse.org/papyrus/AIML/recurrent/1">
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_tHLn4IViEeqlnrZTj0aPoA" name="Recurrent_layers" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_wK-eIIVkEeqlnrZTj0aPoA" general="_2E9coH2KEeqSHNFOHg2_Jw"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_495hwIVjEeqlnrZTj0aPoA" name="input_size">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_6la5MIVjEeqlnrZTj0aPoA" name="hidden_size">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_7-lrkIVjEeqlnrZTj0aPoA" name="bias_pt">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Wl610Jm4Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_w_eSoIVjEeqlnrZTj0aPoA" name="Recurrent_layers_1" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_tTUUgIVkEeqlnrZTj0aPoA" general="_tHLn4IViEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_Mgv2UIVkEeqlnrZTj0aPoA" name="num_layers">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_TrfFAJm4Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_NmsKsIVkEeqlnrZTj0aPoA" name="batch_first_pt">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_X3E7sJm4Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_bIpT0IVkEeqlnrZTj0aPoA" name="dropout">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Y93koJm4Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_dH_VYIVkEeqlnrZTj0aPoA" name="bidirectional_pt">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aMeFwJm4Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_GM1kwKaAEeqIr7xwFiWQGQ" name="activation">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_LrZ0UKaCEeqIr7xwFiWQGQ"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_M26QEKaAEeqIr7xwFiWQGQ" name="recurrent_activation">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_K3rRUKaCEeqIr7xwFiWQGQ"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_OalCQKaAEeqIr7xwFiWQGQ" name="use_bias">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GrLbsKaCEeqIr7xwFiWQGQ"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_PFb9IKaAEeqIr7xwFiWQGQ" name="kernel_initializer">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HS90cKaCEeqIr7xwFiWQGQ"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_TQ4C0KaAEeqIr7xwFiWQGQ" name="recurrent_initializer">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_H5oL0KaCEeqIr7xwFiWQGQ"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_uo4gUKaBEeqIr7xwFiWQGQ" name="bias_initializer">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IYw-4KaCEeqIr7xwFiWQGQ"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_zjmG0KaBEeqIr7xwFiWQGQ" name="return_sequences">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AcN_EKaCEeqIr7xwFiWQGQ"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_0y_SIKaBEeqIr7xwFiWQGQ" name="return_state">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__7OK0KaBEeqIr7xwFiWQGQ"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_7QlAoKaBEeqIr7xwFiWQGQ" name="bidirectional_k" type="_w_eSoIVjEeqlnrZTj0aPoA">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__B1EsKaBEeqIr7xwFiWQGQ"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_ugELMOauEeq2yMJqys2DtQ" name="recurrent_dropout">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_-5MbgIVjEeqlnrZTj0aPoA" name="RNNCell">
+      <generalization xmi:type="uml:Generalization" xmi:id="_rjgjwIVkEeqlnrZTj0aPoA" general="_tHLn4IViEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_AP36kIVkEeqlnrZTj0aPoA" name="nonlinearity">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_eMdwcJm4Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_CfAEkIVkEeqlnrZTj0aPoA" name="LSTMCell">
+      <generalization xmi:type="uml:Generalization" xmi:id="_sMLGQIVkEeqlnrZTj0aPoA" general="_tHLn4IViEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_EdBQcIVkEeqlnrZTj0aPoA" name="GRUCell">
+      <generalization xmi:type="uml:Generalization" xmi:id="_svnxkIVkEeqlnrZTj0aPoA" general="_tHLn4IViEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_f3AgYIVkEeqlnrZTj0aPoA" name="RNN">
+      <generalization xmi:type="uml:Generalization" xmi:id="_pXFIcIVkEeqlnrZTj0aPoA" general="_w_eSoIVjEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_iaV_0IVkEeqlnrZTj0aPoA" name="nonlinearity">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_U0sIwJm4Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_kOLU8IVkEeqlnrZTj0aPoA" name="LSTM">
+      <generalization xmi:type="uml:Generalization" xmi:id="_p2PwsIVkEeqlnrZTj0aPoA" general="_w_eSoIVjEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_l8ROcIVkEeqlnrZTj0aPoA" name="GRU">
+      <generalization xmi:type="uml:Generalization" xmi:id="_qv_cIIVkEeqlnrZTj0aPoA" general="_w_eSoIVjEeqlnrZTj0aPoA"/>
+    </packagedElement>
+  </packagedElement>
+  <packagedElement xmi:type="uml:Profile" xmi:id="_T8DDAJT2Eeq5BK6mmo2rWg" name="Transformer_layers" URI="http://www.eclipse.org/papyrus/AIML/transformer/1">
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_zItakIVkEeqlnrZTj0aPoA" name="Transformer_layers" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_boLdkIVmEeqlnrZTj0aPoA" general="_2E9coH2KEeqSHNFOHg2_Jw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_gsKxUIVlEeqlnrZTj0aPoA" name="Transformer_layers_1" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_SF09kIVmEeqlnrZTj0aPoA" general="_zItakIVkEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_sbCMMIVlEeqlnrZTj0aPoA" name="d_model">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ji0xIJm4Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_tmddgIVlEeqlnrZTj0aPoA" name="nhead">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_kiISAJm4Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_uFbRcIVlEeqlnrZTj0aPoA" name="dim_feedforward">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_l1McYJm4Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_v6pGoIVlEeqlnrZTj0aPoA" name="dropout">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nHZEEJm4Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_wuIZEIVlEeqlnrZTj0aPoA" name="activation">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oOnK0Jm4Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_kfJ6wIVlEeqlnrZTj0aPoA" name="Transformer_layers_2" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_RehtAIVmEeqlnrZTj0aPoA" general="_zItakIVkEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_mZVvgIVlEeqlnrZTj0aPoA" name="num_layers">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_oByUAIVlEeqlnrZTj0aPoA" name="norm" type="_GstigIVhEeqlnrZTj0aPoA">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QmjgMJkPEeqONqmgJcdSKw"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_0gXUkIVlEeqlnrZTj0aPoA" name="Transformer">
+      <generalization xmi:type="uml:Generalization" xmi:id="_GMzhIIVmEeqlnrZTj0aPoA" general="_gsKxUIVlEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_2FyaQIVlEeqlnrZTj0aPoA" name="num_encoder_layers ">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_4EeUgIVlEeqlnrZTj0aPoA" name="num_decoder_layers ">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_606b0IVlEeqlnrZTj0aPoA" name="custom_encoder" type="_JjphIIVmEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_8LVcMIVlEeqlnrZTj0aPoA" name="custom_decoder" type="_Ku6aYIVmEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_-aqagIVlEeqlnrZTj0aPoA" name="TransformerDecoderLayer">
+      <generalization xmi:type="uml:Generalization" xmi:id="_GrExgIVmEeqlnrZTj0aPoA" general="_gsKxUIVlEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_AIIo8IVmEeqlnrZTj0aPoA" name="TransformerEncoderLayer">
+      <generalization xmi:type="uml:Generalization" xmi:id="_HJqyAIVmEeqlnrZTj0aPoA" general="_gsKxUIVlEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_JjphIIVmEeqlnrZTj0aPoA" name="TransformerEncoder">
+      <generalization xmi:type="uml:Generalization" xmi:id="_P0nv8IVmEeqlnrZTj0aPoA" general="_kfJ6wIVlEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_Nai6MIVmEeqlnrZTj0aPoA" name="encoder_layer" type="_AIIo8IVmEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_Ku6aYIVmEeqlnrZTj0aPoA" name="TransformerDecoder">
+      <generalization xmi:type="uml:Generalization" xmi:id="_QhQMcIVmEeqlnrZTj0aPoA" general="_kfJ6wIVlEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_MA0HIIVmEeqlnrZTj0aPoA" name="decoder_layer" type="_-aqagIVlEeqlnrZTj0aPoA"/>
+    </packagedElement>
+  </packagedElement>
+  <packagedElement xmi:type="uml:Profile" xmi:id="_WwqfsJT2Eeq5BK6mmo2rWg" name="Linear_layers" URI="http://www.eclipse.org/papyrus/AIML/linear/1">
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_ThvuQIhhEeqlnrZTj0aPoA" name="Linear_layers" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_-em2MIhhEeqlnrZTj0aPoA" general="_2E9coH2KEeqSHNFOHg2_Jw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_c_eM8IhhEeqlnrZTj0aPoA" name="Identity">
+      <generalization xmi:type="uml:Generalization" xmi:id="_5QYd0IhhEeqlnrZTj0aPoA" general="_ThvuQIhhEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_hGyAkIhhEeqlnrZTj0aPoA" name="Linear_layers_1" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_58n4wIhhEeqlnrZTj0aPoA" general="_ThvuQIhhEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_lYOnoIhhEeqlnrZTj0aPoA" name="out_features">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_m2y3YIhhEeqlnrZTj0aPoA" name="bias">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_CJq-oJm5Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_ozz9sIhhEeqlnrZTj0aPoA" name="Linear">
+      <generalization xmi:type="uml:Generalization" xmi:id="_4MFvQIhhEeqlnrZTj0aPoA" general="_hGyAkIhhEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_snPzEIhhEeqlnrZTj0aPoA" name="in_features">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_p0kxsKZeEeqIr7xwFiWQGQ"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_1w4LoKZeEeqIr7xwFiWQGQ" name="activation">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4qNwQKZeEeqIr7xwFiWQGQ"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_eJ6SoKZkEeqIr7xwFiWQGQ" name="kernel_initializer">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_kdiM0KZkEeqIr7xwFiWQGQ"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_f9qvQKZkEeqIr7xwFiWQGQ" name="bias_initializer">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lFPGAKZkEeqIr7xwFiWQGQ"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_pJFqIIhhEeqlnrZTj0aPoA" name="Bilinear">
+      <generalization xmi:type="uml:Generalization" xmi:id="_4ugf0IhhEeqlnrZTj0aPoA" general="_hGyAkIhhEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_u5YNwIhhEeqlnrZTj0aPoA" name="in1_features">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_wboqsIhhEeqlnrZTj0aPoA" name="in2_features">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+      </ownedAttribute>
+    </packagedElement>
+  </packagedElement>
+  <packagedElement xmi:type="uml:Profile" xmi:id="_ZUMzcJT2Eeq5BK6mmo2rWg" name="Dropout_layers" URI="http://www.eclipse.org/papyrus/AIML/dropout/1">
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_JJr40IhiEeqlnrZTj0aPoA" name="Dropout_layers" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_yLebMIhiEeqlnrZTj0aPoA" general="_2E9coH2KEeqSHNFOHg2_Jw"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_L5uXgIhiEeqlnrZTj0aPoA" name="p">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_HnWvUJm5Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_Mxr6QIhiEeqlnrZTj0aPoA" name="inplace">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IwBAgJm5Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_k7wEsKcmEeqkzM30xo7jnw" name="noise_shape">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pP1wEKcmEeqkzM30xo7jnw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tivIoKcmEeqkzM30xo7jnw" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_m_lksKcmEeqkzM30xo7jnw" name="seed">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oaD-oKcmEeqkzM30xo7jnw"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_O7XjkIhiEeqlnrZTj0aPoA" name="Dropout">
+      <generalization xmi:type="uml:Generalization" xmi:id="_rp92AIhiEeqlnrZTj0aPoA" general="_JJr40IhiEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_PMP4MIhiEeqlnrZTj0aPoA" name="Dropout2d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_sKSU0IhiEeqlnrZTj0aPoA" general="_JJr40IhiEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_Proi4IhiEeqlnrZTj0aPoA" name="Dropout3d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_srztgIhiEeqlnrZTj0aPoA" general="_JJr40IhiEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_QF418IhiEeqlnrZTj0aPoA" name="AlphaDropout">
+      <generalization xmi:type="uml:Generalization" xmi:id="_t3zmkIhiEeqlnrZTj0aPoA" general="_JJr40IhiEeqlnrZTj0aPoA"/>
+    </packagedElement>
+  </packagedElement>
+  <packagedElement xmi:type="uml:Profile" xmi:id="_cKwJ0JT2Eeq5BK6mmo2rWg" name="Sparse_layers" URI="http://www.eclipse.org/papyrus/AIML/sparse/1">
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_AdGtwIhjEeqlnrZTj0aPoA" name="Sparse_layers" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_LRL6YIhuEeqlnrZTj0aPoA" general="_2E9coH2KEeqSHNFOHg2_Jw"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_nWwe8IhjEeqlnrZTj0aPoA" name="num_embeddings">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_p2G2QIhjEeqlnrZTj0aPoA" name="embedding_dim">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_sIOC0IhjEeqlnrZTj0aPoA" name="max_norm">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bTBBoJm5Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_tKafoIhjEeqlnrZTj0aPoA" name="norm_type ">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Z3v9gJm5Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_vicuAIhjEeqlnrZTj0aPoA" name="sparse">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_cMUoMJm5Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_UjbkMJm5Eeq0jfmjFzaebA" name="scale_grad_by_freq">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Yh-dYJm5Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_HDvqkIhjEeqlnrZTj0aPoA" name="Embedding">
+      <generalization xmi:type="uml:Generalization" xmi:id="_7zj6UIhjEeqlnrZTj0aPoA" general="_AdGtwIhjEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_w7GjAIhjEeqlnrZTj0aPoA" name="padding_idx">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OQu3EJm5Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_kIoWEIhjEeqlnrZTj0aPoA" name="EmbeddingBag">
+      <generalization xmi:type="uml:Generalization" xmi:id="_8S-aMIhjEeqlnrZTj0aPoA" general="_AdGtwIhjEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_ytrT4IhjEeqlnrZTj0aPoA" name="mode">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fOtbIJm5Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_z2sxcIhjEeqlnrZTj0aPoA" name="include_last_offset">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_eRKNwJm5Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+  </packagedElement>
+  <packagedElement xmi:type="uml:Profile" xmi:id="_fjUoIJT2Eeq5BK6mmo2rWg" name="Distance_functions" URI="http://www.eclipse.org/papyrus/AIML/distance/1">
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_9-4iYIhjEeqlnrZTj0aPoA" name="Distance_functions" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_MC8HcIhuEeqlnrZTj0aPoA" general="_2E9coH2KEeqSHNFOHg2_Jw"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_D1Gu4IhkEeqlnrZTj0aPoA" name="eps">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ibLXIJm5Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_Ff9uMIhkEeqlnrZTj0aPoA" name="CosineSimilarity">
+      <generalization xmi:type="uml:Generalization" xmi:id="_QjaNgIhkEeqlnrZTj0aPoA" general="_9-4iYIhjEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_JmnagIhkEeqlnrZTj0aPoA" name="dim">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_j5bd0Jm5Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_F-SB4IhkEeqlnrZTj0aPoA" name="PairwiseDistance">
+      <generalization xmi:type="uml:Generalization" xmi:id="_RFcjkIhkEeqlnrZTj0aPoA" general="_9-4iYIhjEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_Km4ksIhkEeqlnrZTj0aPoA" name="p">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lHLDUJm5Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_LieqQIhkEeqlnrZTj0aPoA" name="keepdim">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_m257kJm5Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+  </packagedElement>
+  <packagedElement xmi:type="uml:Profile" xmi:id="_nZcP0JT2Eeq5BK6mmo2rWg" name="Loss_functions" URI="http://www.eclipse.org/papyrus/AIML/loss/1">
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_oNze4IhnEeqlnrZTj0aPoA" name="Loss_functions" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_N1r3cIhuEeqlnrZTj0aPoA" general="_2E9coH2KEeqSHNFOHg2_Jw"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_qCV-oIhnEeqlnrZTj0aPoA" name="reduction">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uln6wJm5Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_F2VqAIhoEeqlnrZTj0aPoA" name="Loss_functions_1" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_YyIeQIhrEeqlnrZTj0aPoA" general="_oNze4IhnEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_Hr6rkIhoEeqlnrZTj0aPoA" name="size_average">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rdnoAJm5Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_KRcjYIhoEeqlnrZTj0aPoA" name="reduce">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5DoKsJm5Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_UW5JYIhoEeqlnrZTj0aPoA" name="L1Loss">
+      <generalization xmi:type="uml:Generalization" xmi:id="_PzV-UIhrEeqlnrZTj0aPoA" general="_F2VqAIhoEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_XkZnMIhoEeqlnrZTj0aPoA" name="MSELoss">
+      <generalization xmi:type="uml:Generalization" xmi:id="_PLRRsIhrEeqlnrZTj0aPoA" general="_F2VqAIhoEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_dgekEIhoEeqlnrZTj0aPoA" name="CTCLoss">
+      <generalization xmi:type="uml:Generalization" xmi:id="_YDZI8IhrEeqlnrZTj0aPoA" general="_oNze4IhnEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_fsyDkIhoEeqlnrZTj0aPoA" name="blank">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9WJIwJm5Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_g54v4IhoEeqlnrZTj0aPoA" name="zero_infinity">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-SKFEJm5Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_sYrucIhoEeqlnrZTj0aPoA" name="KLDivLoss">
+      <generalization xmi:type="uml:Generalization" xmi:id="_Ojop8IhrEeqlnrZTj0aPoA" general="_F2VqAIhoEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_yCiS4IhoEeqlnrZTj0aPoA" name="MultiLabelMarginLoss">
+      <generalization xmi:type="uml:Generalization" xmi:id="_OBMEMIhrEeqlnrZTj0aPoA" general="_F2VqAIhoEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_TXEOoIhpEeqlnrZTj0aPoA" name="Loss_functions_1_1">
+      <generalization xmi:type="uml:Generalization" xmi:id="_KmOZMIhrEeqlnrZTj0aPoA" general="_F2VqAIhoEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_dvGZcIhpEeqlnrZTj0aPoA" name="margin">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WdeZkJm6Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_cSDMoIhpEeqlnrZTj0aPoA" name="Loss_functions_1_2">
+      <generalization xmi:type="uml:Generalization" xmi:id="_L6mLIIhrEeqlnrZTj0aPoA" general="_F2VqAIhoEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_e4iGsIhpEeqlnrZTj0aPoA" name="weight" type="_kkWnwIhuEeqlnrZTj0aPoA">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2lla8Jm5Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_o24mMIhpEeqlnrZTj0aPoA" name="CosineEmbeddingLoss">
+      <generalization xmi:type="uml:Generalization" xmi:id="_sErX4IhpEeqlnrZTj0aPoA" general="_TXEOoIhpEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_uaWOwIhpEeqlnrZTj0aPoA" name="MarginRankingLoss">
+      <generalization xmi:type="uml:Generalization" xmi:id="_zEGoIIhpEeqlnrZTj0aPoA" general="_TXEOoIhpEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_v673wIhpEeqlnrZTj0aPoA" name="HingeEmbeddingLoss">
+      <generalization xmi:type="uml:Generalization" xmi:id="_0GpqQIhpEeqlnrZTj0aPoA" general="_TXEOoIhpEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_6OX2cIhpEeqlnrZTj0aPoA" name="BCELoss">
+      <generalization xmi:type="uml:Generalization" xmi:id="_7bTjoIhpEeqlnrZTj0aPoA" general="_cSDMoIhpEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_DrSc0IhqEeqlnrZTj0aPoA" name="Loss_functions_1_1_1" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_UcGuoIhqEeqlnrZTj0aPoA" general="_TXEOoIhpEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_HB3XEIhqEeqlnrZTj0aPoA" name="p">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_kKr7AJm7Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_JaQx0IhqEeqlnrZTj0aPoA" name="MultiMarginLoss">
+      <generalization xmi:type="uml:Generalization" xmi:id="_THXJQIhqEeqlnrZTj0aPoA" general="_DrSc0IhqEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_NFUHQIhqEeqlnrZTj0aPoA" name="weight" type="_kkWnwIhuEeqlnrZTj0aPoA">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_l5gNQJm7Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_J1LMMIhqEeqlnrZTj0aPoA" name="TripletMarginLoss">
+      <generalization xmi:type="uml:Generalization" xmi:id="_ToeSQIhqEeqlnrZTj0aPoA" general="_DrSc0IhqEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_LlDOYIhqEeqlnrZTj0aPoA" name="swap">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oP2ZkJm7Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_hqxIUIhqEeqlnrZTj0aPoA" name="Loss_functions_1_2_1" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_uCkygIhqEeqlnrZTj0aPoA" general="_cSDMoIhpEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_kXdYEIhqEeqlnrZTj0aPoA" name="ignore_index">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1CvIIJm5Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_oavnUIhqEeqlnrZTj0aPoA" name="CrossEntropyLoss">
+      <generalization xmi:type="uml:Generalization" xmi:id="_rT8pEIhqEeqlnrZTj0aPoA" general="_hqxIUIhqEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_pWuucIhqEeqlnrZTj0aPoA" name="NLLLoss">
+      <generalization xmi:type="uml:Generalization" xmi:id="_qQK34IhqEeqlnrZTj0aPoA" general="_hqxIUIhqEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_0iSA4IhqEeqlnrZTj0aPoA" name="PoissonNLLLoss">
+      <generalization xmi:type="uml:Generalization" xmi:id="_H58ZIIhrEeqlnrZTj0aPoA" general="_cSDMoIhpEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_4J95QIhqEeqlnrZTj0aPoA" name="log_input">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GinfYJm6Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_5TNZQIhqEeqlnrZTj0aPoA" name="full">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Hc-14Jm6Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_6KGlAIhqEeqlnrZTj0aPoA" name="eps">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_1ml9kIhqEeqlnrZTj0aPoA" name="BCEWithLogitsLoss">
+      <generalization xmi:type="uml:Generalization" xmi:id="_HRZLYIhrEeqlnrZTj0aPoA" general="_cSDMoIhpEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_2xgRgIhqEeqlnrZTj0aPoA" name="pos_weight" type="_kkWnwIhuEeqlnrZTj0aPoA">
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ScaX4Jm6Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+  </packagedElement>
+  <packagedElement xmi:type="uml:Profile" xmi:id="_q6FsEJT2Eeq5BK6mmo2rWg" name="Vision_layers" URI="http://www.eclipse.org/papyrus/AIML/vision/1">
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_iLwgEIhrEeqlnrZTj0aPoA" name="Vision_layers" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_SZKCoIhuEeqlnrZTj0aPoA" general="_2E9coH2KEeqSHNFOHg2_Jw"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_t32TwIhrEeqlnrZTj0aPoA" name="Vision_layers_1" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_MhVlkIhsEeqlnrZTj0aPoA" general="_iLwgEIhrEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_xJ4sQIhrEeqlnrZTj0aPoA" name="size" visibility="public">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fHduoJbPEeq1-Ze45jZMTg"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fHtmQJbPEeq1-Ze45jZMTg" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_yEO0oIhrEeqlnrZTj0aPoA" name="scale_factor">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gjTagJbPEeq1-Ze45jZMTg"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gjhc8JbPEeq1-Ze45jZMTg" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_2p5YMIhrEeqlnrZTj0aPoA" name="PixelShuffle">
+      <generalization xmi:type="uml:Generalization" xmi:id="_L7Zm8IhsEeqlnrZTj0aPoA" general="_iLwgEIhrEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_507w0IhrEeqlnrZTj0aPoA" name="upscale_factor">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_9D3yAIhrEeqlnrZTj0aPoA" name="Upsample">
+      <generalization xmi:type="uml:Generalization" xmi:id="_KFjfoIhsEeqlnrZTj0aPoA" general="_t32TwIhrEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_-r78AIhrEeqlnrZTj0aPoA" name="mode">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yqxgUJm7Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="___G0EIhrEeqlnrZTj0aPoA" name="align_corners">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ziJNMJm7Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_ExzHAIhsEeqlnrZTj0aPoA" name="UpsamplingNearest2d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_KqD64IhsEeqlnrZTj0aPoA" general="_t32TwIhrEeqlnrZTj0aPoA"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_FiUlAIhsEeqlnrZTj0aPoA" name="UpsamplingBilinear2d">
+      <generalization xmi:type="uml:Generalization" xmi:id="_LUKn0IhsEeqlnrZTj0aPoA" general="_t32TwIhrEeqlnrZTj0aPoA"/>
+    </packagedElement>
+  </packagedElement>
+  <packagedElement xmi:type="uml:Profile" xmi:id="_wBUroJT2Eeq5BK6mmo2rWg" name="DataParallel_layers" URI="http://www.eclipse.org/papyrus/AIML/dataparallel/1">
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_jq9XEIhtEeqlnrZTj0aPoA" name="DataParallel_layers" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_VjFoAIhuEeqlnrZTj0aPoA" general="_2E9coH2KEeqSHNFOHg2_Jw"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_rBanQIhtEeqlnrZTj0aPoA" name="module" type="_2E9coH2KEeqSHNFOHg2_Jw"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_r6Q60IhtEeqlnrZTj0aPoA" name="device_ids">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PiyykJkOEeqONqmgJcdSKw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PjFGcJkOEeqONqmgJcdSKw" value="*"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_stpfkIhtEeqlnrZTj0aPoA" name="output_device">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_R3Z5gJkOEeqONqmgJcdSKw"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZVyWoJkOEeqONqmgJcdSKw" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_tsGr4IhtEeqlnrZTj0aPoA" name="DistributedDataParallel">
+      <generalization xmi:type="uml:Generalization" xmi:id="_5KbJUIhtEeqlnrZTj0aPoA" general="_jq9XEIhtEeqlnrZTj0aPoA"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_vpBrkIhtEeqlnrZTj0aPoA" name="broadcast_buffers">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_c0yPAJm8Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_xG4JoIhtEeqlnrZTj0aPoA" name="process_group">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_anoZAJkOEeqONqmgJcdSKw"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_yJonIIhtEeqlnrZTj0aPoA" name="bucket_cap_mb">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fOEakJm8Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_zcpuMIhtEeqlnrZTj0aPoA" name="find_unsused_parameters">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gQrHEJm8Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_1KdT0IhtEeqlnrZTj0aPoA" name="check_reduction">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hPrF8Jm8Eeq0jfmjFzaebA"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_2bnZsIhtEeqlnrZTj0aPoA" name="DataParallel">
+      <generalization xmi:type="uml:Generalization" xmi:id="_4pLdcIhtEeqlnrZTj0aPoA" general="_jq9XEIhtEeqlnrZTj0aPoA"/>
+    </packagedElement>
+  </packagedElement>
+  <packagedElement xmi:type="uml:Stereotype" xmi:id="_hxbaEJm6Eeq0jfmjFzaebA" name="SmoothL1Loss">
+    <generalization xmi:type="uml:Generalization" xmi:id="_mI2tUJm6Eeq0jfmjFzaebA" general="_F2VqAIhoEeqlnrZTj0aPoA"/>
+  </packagedElement>
+  <packagedElement xmi:type="uml:Stereotype" xmi:id="_w1CjMJm6Eeq0jfmjFzaebA" name="SoftMarginLoss">
+    <generalization xmi:type="uml:Generalization" xmi:id="_0seHwJm6Eeq0jfmjFzaebA" general="_F2VqAIhoEeqlnrZTj0aPoA"/>
+  </packagedElement>
+  <packagedElement xmi:type="uml:Stereotype" xmi:id="_DSn40Jm7Eeq0jfmjFzaebA" name="MultiLabelSoftMarginLoss">
+    <generalization xmi:type="uml:Generalization" xmi:id="_HyWzgJm7Eeq0jfmjFzaebA" general="_cSDMoIhpEeqlnrZTj0aPoA"/>
+  </packagedElement>
+  <packagedElement xmi:type="uml:Profile" xmi:id="_DtlO0KTlEeqmTOsCAzVBxg" name="Layer_weight_constraints">
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_Q5gaYKThEeqmTOsCAzVBxg" name="min_max_norm">
+      <generalization xmi:type="uml:Generalization" xmi:id="_vNIpkKTkEeqmTOsCAzVBxg" general="_cxXR0KTkEeqmTOsCAzVBxg"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_EO8W0KTiEeqmTOsCAzVBxg" name="min_value">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_H-FiEKTiEeqmTOsCAzVBxg" name="rate">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_SFqEcKThEeqmTOsCAzVBxg" name="max_norm">
+      <generalization xmi:type="uml:Generalization" xmi:id="_vvr9AKTkEeqmTOsCAzVBxg" general="_cxXR0KTkEeqmTOsCAzVBxg"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_oe1s8KThEeqmTOsCAzVBxg" name="non_neg">
+      <generalization xmi:type="uml:Generalization" xmi:id="_z11KgKZ6EeqIr7xwFiWQGQ" general="_sQtMMKZ6EeqIr7xwFiWQGQ"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_p5ftEKThEeqmTOsCAzVBxg" name="radial_constraint">
+      <generalization xmi:type="uml:Generalization" xmi:id="_zMJUUKZ6EeqIr7xwFiWQGQ" general="_sQtMMKZ6EeqIr7xwFiWQGQ"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_s288sKThEeqmTOsCAzVBxg" name="unit_norm">
+      <generalization xmi:type="uml:Generalization" xmi:id="_ZkPOgKTkEeqmTOsCAzVBxg" general="_T5LJIKTkEeqmTOsCAzVBxg"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_T5LJIKTkEeqmTOsCAzVBxg" name="norm" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_ymebcKZ6EeqIr7xwFiWQGQ" general="_sQtMMKZ6EeqIr7xwFiWQGQ"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_YMFv0KTkEeqmTOsCAzVBxg" name="axis">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ao6-oKTkEeqmTOsCAzVBxg" value="*"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_cxXR0KTkEeqmTOsCAzVBxg" name="NormWithMaxValue" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_1Qw_8KTkEeqmTOsCAzVBxg" general="_T5LJIKTkEeqmTOsCAzVBxg"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_hrd0UKTkEeqmTOsCAzVBxg" name="max_value">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_sQtMMKZ6EeqIr7xwFiWQGQ" name="constraints" isAbstract="true"/>
+  </packagedElement>
+  <packagedElement xmi:type="uml:Profile" xmi:id="_X5a5MKTpEeqmTOsCAzVBxg" name="Layer_weight_regularizers">
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_0kGm4KTnEeqmTOsCAzVBxg" name="l1">
+      <generalization xmi:type="uml:Generalization" xmi:id="_8VmX0KToEeqmTOsCAzVBxg" general="_smezkKToEeqmTOsCAzVBxg"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_PhQJ0KToEeqmTOsCAzVBxg" name="l2">
+      <generalization xmi:type="uml:Generalization" xmi:id="_8pjOkKToEeqmTOsCAzVBxg" general="_vbw-oKToEeqmTOsCAzVBxg"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_QuKB0KToEeqmTOsCAzVBxg" name="l1_l2">
+      <generalization xmi:type="uml:Generalization" xmi:id="_98EmYKToEeqmTOsCAzVBxg" general="_smezkKToEeqmTOsCAzVBxg"/>
+      <generalization xmi:type="uml:Generalization" xmi:id="_-XpvIKToEeqmTOsCAzVBxg" general="_vbw-oKToEeqmTOsCAzVBxg"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_smezkKToEeqmTOsCAzVBxg" name="ReguWithl1" isAbstract="true">
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_yJ2VgKToEeqmTOsCAzVBxg" name="l1">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_C21QMKTpEeqmTOsCAzVBxg"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_vbw-oKToEeqmTOsCAzVBxg" name="ReguWithl2" isAbstract="true">
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_zAXt0KToEeqmTOsCAzVBxg" name="l2">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IgwtIKTpEeqmTOsCAzVBxg"/>
+      </ownedAttribute>
+    </packagedElement>
+  </packagedElement>
+  <packagedElement xmi:type="uml:Profile" xmi:id="_ZgMWkKWVEeq2dLYfuMvqgg" name="Layer_weight_initializers">
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_-JzUkKWREeq2dLYfuMvqgg" name="random_normal">
+      <generalization xmi:type="uml:Generalization" xmi:id="_nuodIKWTEeq2dLYfuMvqgg" general="_iKWVMKWTEeq2dLYfuMvqgg"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_GwoAcKWSEeq2dLYfuMvqgg" name="random_uniform">
+      <generalization xmi:type="uml:Generalization" xmi:id="_aApDIKWTEeq2dLYfuMvqgg" general="_OISVEKWTEeq2dLYfuMvqgg"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_IiUAgKWSEeq2dLYfuMvqgg" name="minval">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_JNazAKWSEeq2dLYfuMvqgg" name="maxval">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_KermkKWSEeq2dLYfuMvqgg" name="truncated_normal">
+      <generalization xmi:type="uml:Generalization" xmi:id="_oMXiAKWTEeq2dLYfuMvqgg" general="_iKWVMKWTEeq2dLYfuMvqgg"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_OfDEsKWSEeq2dLYfuMvqgg" name="zeros"/>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_ZEzicKWSEeq2dLYfuMvqgg" name="ones"/>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_e6wCIKWSEeq2dLYfuMvqgg" name="glorot_normal">
+      <generalization xmi:type="uml:Generalization" xmi:id="_dM91MKWTEeq2dLYfuMvqgg" general="_OISVEKWTEeq2dLYfuMvqgg"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_hxQVMKWSEeq2dLYfuMvqgg" name="glorot_uniform">
+      <generalization xmi:type="uml:Generalization" xmi:id="_YbtssKWTEeq2dLYfuMvqgg" general="_OISVEKWTEeq2dLYfuMvqgg"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_lmeTQKWSEeq2dLYfuMvqgg" name="identity">
+      <generalization xmi:type="uml:Generalization" xmi:id="_DYQrkKWUEeq2dLYfuMvqgg" general="_IHtSsKWTEeq2dLYfuMvqgg"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_nCPGoKWSEeq2dLYfuMvqgg" name="orthogonal">
+      <generalization xmi:type="uml:Generalization" xmi:id="_Q3KgsKWUEeq2dLYfuMvqgg" general="_IHtSsKWTEeq2dLYfuMvqgg"/>
+      <generalization xmi:type="uml:Generalization" xmi:id="_WyCjsKWUEeq2dLYfuMvqgg" general="_OISVEKWTEeq2dLYfuMvqgg"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_oi19wKWSEeq2dLYfuMvqgg" name="constant">
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_xIu1gKWSEeq2dLYfuMvqgg" name="value">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_ytfM0KWSEeq2dLYfuMvqgg" name="variance_scaling">
+      <generalization xmi:type="uml:Generalization" xmi:id="_4dWdMKWTEeq2dLYfuMvqgg" general="_OISVEKWTEeq2dLYfuMvqgg"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_z0htYKWSEeq2dLYfuMvqgg" name="scale">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_0XpokKWSEeq2dLYfuMvqgg" name="mode">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_0qcowKWSEeq2dLYfuMvqgg" name="distribution">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_IHtSsKWTEeq2dLYfuMvqgg" name="initializer_with_gain" isAbstract="true">
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_L46TcKWTEeq2dLYfuMvqgg" name="gain">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_OISVEKWTEeq2dLYfuMvqgg" name="initializer_with_seed" isAbstract="true">
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_R4qPYKWTEeq2dLYfuMvqgg" name="seed">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_iKWVMKWTEeq2dLYfuMvqgg" name="initializer_with_mean_stddev" isAbstract="true">
+      <generalization xmi:type="uml:Generalization" xmi:id="_MGbVkKWUEeq2dLYfuMvqgg" general="_OISVEKWTEeq2dLYfuMvqgg"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_lHusUKWTEeq2dLYfuMvqgg" name="mean">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+      </ownedAttribute>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_lmazcKWTEeq2dLYfuMvqgg" name="stddev">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+      </ownedAttribute>
+    </packagedElement>
+  </packagedElement>
+  <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_shl-AH5QEeqSHNFOHg2_Jw">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_shqPcH5QEeqSHNFOHg2_Jw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+      <references xmi:type="ecore:EPackage" href="pathmap://PAPYRUS_ACTIONLANGUAGE_PROFILE/ActionLanguage-Profile.profile.uml#_Kv8EIKFXEeS_KNX0nfvIVQ"/>
+    </eAnnotations>
+    <appliedProfile xmi:type="uml:Profile" href="pathmap://PAPYRUS_ACTIONLANGUAGE_PROFILE/ActionLanguage-Profile.profile.uml#ActionLanguage"/>
+  </profileApplication>
+</uml:Profile>
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/AIMLFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/AIMLFactory.java
new file mode 100644
index 0000000..e4c8ea4
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/AIMLFactory.java
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.AIMLPackage
+ * @generated
+ */
+public interface AIMLFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	AIMLFactory eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.impl.AIMLFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Smooth L1 Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Smooth L1 Loss</em>'.
+	 * @generated
+	 */
+	SmoothL1Loss createSmoothL1Loss();
+
+	/**
+	 * Returns a new object of class '<em>Soft Margin Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Soft Margin Loss</em>'.
+	 * @generated
+	 */
+	SoftMarginLoss createSoftMarginLoss();
+
+	/**
+	 * Returns a new object of class '<em>Multi Label Soft Margin Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Multi Label Soft Margin Loss</em>'.
+	 * @generated
+	 */
+	MultiLabelSoftMarginLoss createMultiLabelSoftMarginLoss();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	AIMLPackage getAIMLPackage();
+
+} //AIMLFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/AIMLPackage.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/AIMLPackage.java
new file mode 100644
index 0000000..d833263
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/AIMLPackage.java
@@ -0,0 +1,517 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.AIMLFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface AIMLPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "AIML"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://www.eclipse.org/papyrus/AIML/1"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "AIML"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	AIMLPackage eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.impl.AIMLPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.impl.SmoothL1LossImpl <em>Smooth L1 Loss</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.impl.SmoothL1LossImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.impl.AIMLPackageImpl#getSmoothL1Loss()
+	 * @generated
+	 */
+	int SMOOTH_L1_LOSS = 0;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SMOOTH_L1_LOSS__BASE_CLASS = Loss_functionsPackage.LOSS_FUNCTIONS_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SMOOTH_L1_LOSS__NAME = Loss_functionsPackage.LOSS_FUNCTIONS_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SMOOTH_L1_LOSS__DATA = Loss_functionsPackage.LOSS_FUNCTIONS_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SMOOTH_L1_LOSS__REQUIRES_GRAD = Loss_functionsPackage.LOSS_FUNCTIONS_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SMOOTH_L1_LOSS__SUB_MODULE = Loss_functionsPackage.LOSS_FUNCTIONS_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SMOOTH_L1_LOSS__OPTIMIZER = Loss_functionsPackage.LOSS_FUNCTIONS_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SMOOTH_L1_LOSS__LOSS = Loss_functionsPackage.LOSS_FUNCTIONS_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Reduction</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SMOOTH_L1_LOSS__REDUCTION = Loss_functionsPackage.LOSS_FUNCTIONS_1__REDUCTION;
+
+	/**
+	 * The feature id for the '<em><b>Size average</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SMOOTH_L1_LOSS__SIZE_AVERAGE = Loss_functionsPackage.LOSS_FUNCTIONS_1__SIZE_AVERAGE;
+
+	/**
+	 * The feature id for the '<em><b>Reduce</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SMOOTH_L1_LOSS__REDUCE = Loss_functionsPackage.LOSS_FUNCTIONS_1__REDUCE;
+
+	/**
+	 * The number of structural features of the '<em>Smooth L1 Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SMOOTH_L1_LOSS_FEATURE_COUNT = Loss_functionsPackage.LOSS_FUNCTIONS_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Smooth L1 Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SMOOTH_L1_LOSS_OPERATION_COUNT = Loss_functionsPackage.LOSS_FUNCTIONS_1_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.impl.SoftMarginLossImpl <em>Soft Margin Loss</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.impl.SoftMarginLossImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.impl.AIMLPackageImpl#getSoftMarginLoss()
+	 * @generated
+	 */
+	int SOFT_MARGIN_LOSS = 1;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFT_MARGIN_LOSS__BASE_CLASS = Loss_functionsPackage.LOSS_FUNCTIONS_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFT_MARGIN_LOSS__NAME = Loss_functionsPackage.LOSS_FUNCTIONS_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFT_MARGIN_LOSS__DATA = Loss_functionsPackage.LOSS_FUNCTIONS_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFT_MARGIN_LOSS__REQUIRES_GRAD = Loss_functionsPackage.LOSS_FUNCTIONS_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFT_MARGIN_LOSS__SUB_MODULE = Loss_functionsPackage.LOSS_FUNCTIONS_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFT_MARGIN_LOSS__OPTIMIZER = Loss_functionsPackage.LOSS_FUNCTIONS_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFT_MARGIN_LOSS__LOSS = Loss_functionsPackage.LOSS_FUNCTIONS_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Reduction</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFT_MARGIN_LOSS__REDUCTION = Loss_functionsPackage.LOSS_FUNCTIONS_1__REDUCTION;
+
+	/**
+	 * The feature id for the '<em><b>Size average</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFT_MARGIN_LOSS__SIZE_AVERAGE = Loss_functionsPackage.LOSS_FUNCTIONS_1__SIZE_AVERAGE;
+
+	/**
+	 * The feature id for the '<em><b>Reduce</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFT_MARGIN_LOSS__REDUCE = Loss_functionsPackage.LOSS_FUNCTIONS_1__REDUCE;
+
+	/**
+	 * The number of structural features of the '<em>Soft Margin Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFT_MARGIN_LOSS_FEATURE_COUNT = Loss_functionsPackage.LOSS_FUNCTIONS_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Soft Margin Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFT_MARGIN_LOSS_OPERATION_COUNT = Loss_functionsPackage.LOSS_FUNCTIONS_1_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.impl.MultiLabelSoftMarginLossImpl <em>Multi Label Soft Margin Loss</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.impl.MultiLabelSoftMarginLossImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.impl.AIMLPackageImpl#getMultiLabelSoftMarginLoss()
+	 * @generated
+	 */
+	int MULTI_LABEL_SOFT_MARGIN_LOSS = 2;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_LABEL_SOFT_MARGIN_LOSS__BASE_CLASS = Loss_functionsPackage.LOSS_FUNCTIONS_12__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_LABEL_SOFT_MARGIN_LOSS__NAME = Loss_functionsPackage.LOSS_FUNCTIONS_12__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_LABEL_SOFT_MARGIN_LOSS__DATA = Loss_functionsPackage.LOSS_FUNCTIONS_12__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_LABEL_SOFT_MARGIN_LOSS__REQUIRES_GRAD = Loss_functionsPackage.LOSS_FUNCTIONS_12__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_LABEL_SOFT_MARGIN_LOSS__SUB_MODULE = Loss_functionsPackage.LOSS_FUNCTIONS_12__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_LABEL_SOFT_MARGIN_LOSS__OPTIMIZER = Loss_functionsPackage.LOSS_FUNCTIONS_12__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_LABEL_SOFT_MARGIN_LOSS__LOSS = Loss_functionsPackage.LOSS_FUNCTIONS_12__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Reduction</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_LABEL_SOFT_MARGIN_LOSS__REDUCTION = Loss_functionsPackage.LOSS_FUNCTIONS_12__REDUCTION;
+
+	/**
+	 * The feature id for the '<em><b>Size average</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_LABEL_SOFT_MARGIN_LOSS__SIZE_AVERAGE = Loss_functionsPackage.LOSS_FUNCTIONS_12__SIZE_AVERAGE;
+
+	/**
+	 * The feature id for the '<em><b>Reduce</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_LABEL_SOFT_MARGIN_LOSS__REDUCE = Loss_functionsPackage.LOSS_FUNCTIONS_12__REDUCE;
+
+	/**
+	 * The feature id for the '<em><b>Weight</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_LABEL_SOFT_MARGIN_LOSS__WEIGHT = Loss_functionsPackage.LOSS_FUNCTIONS_12__WEIGHT;
+
+	/**
+	 * The number of structural features of the '<em>Multi Label Soft Margin Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_LABEL_SOFT_MARGIN_LOSS_FEATURE_COUNT = Loss_functionsPackage.LOSS_FUNCTIONS_12_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Multi Label Soft Margin Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_LABEL_SOFT_MARGIN_LOSS_OPERATION_COUNT = Loss_functionsPackage.LOSS_FUNCTIONS_12_OPERATION_COUNT + 0;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.SmoothL1Loss <em>Smooth L1 Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Smooth L1 Loss</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SmoothL1Loss
+	 * @generated
+	 */
+	EClass getSmoothL1Loss();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMarginLoss <em>Soft Margin Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Soft Margin Loss</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMarginLoss
+	 * @generated
+	 */
+	EClass getSoftMarginLoss();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.MultiLabelSoftMarginLoss <em>Multi Label Soft Margin Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Multi Label Soft Margin Loss</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.MultiLabelSoftMarginLoss
+	 * @generated
+	 */
+	EClass getMultiLabelSoftMarginLoss();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	AIMLFactory getAIMLFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.impl.SmoothL1LossImpl <em>Smooth L1 Loss</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.impl.SmoothL1LossImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.impl.AIMLPackageImpl#getSmoothL1Loss()
+		 * @generated
+		 */
+		EClass SMOOTH_L1_LOSS = eINSTANCE.getSmoothL1Loss();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.impl.SoftMarginLossImpl <em>Soft Margin Loss</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.impl.SoftMarginLossImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.impl.AIMLPackageImpl#getSoftMarginLoss()
+		 * @generated
+		 */
+		EClass SOFT_MARGIN_LOSS = eINSTANCE.getSoftMarginLoss();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.impl.MultiLabelSoftMarginLossImpl <em>Multi Label Soft Margin Loss</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.impl.MultiLabelSoftMarginLossImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.impl.AIMLPackageImpl#getMultiLabelSoftMarginLoss()
+		 * @generated
+		 */
+		EClass MULTI_LABEL_SOFT_MARGIN_LOSS = eINSTANCE.getMultiLabelSoftMarginLoss();
+
+	}
+
+} //AIMLPackage
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/Conv1d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/Conv1d.java
new file mode 100644
index 0000000..6433c44
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/Conv1d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Conv1d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getConv1d()
+ * @model
+ * @generated
+ */
+public interface Conv1d extends basic {
+} // Conv1d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/Conv2d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/Conv2d.java
new file mode 100644
index 0000000..25e0c48
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/Conv2d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Conv2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getConv2d()
+ * @model
+ * @generated
+ */
+public interface Conv2d extends basic {
+} // Conv2d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/Conv3d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/Conv3d.java
new file mode 100644
index 0000000..7c0059d
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/Conv3d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Conv3d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getConv3d()
+ * @model
+ * @generated
+ */
+public interface Conv3d extends basic {
+} // Conv3d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/ConvTranspose1d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/ConvTranspose1d.java
new file mode 100644
index 0000000..ba82c9c
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/ConvTranspose1d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Conv Transpose1d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getConvTranspose1d()
+ * @model
+ * @generated
+ */
+public interface ConvTranspose1d extends LayerWithFilter {
+} // ConvTranspose1d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/ConvTranspose2d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/ConvTranspose2d.java
new file mode 100644
index 0000000..9533a06
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/ConvTranspose2d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Conv Transpose2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getConvTranspose2d()
+ * @model
+ * @generated
+ */
+public interface ConvTranspose2d extends transpose {
+} // ConvTranspose2d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/ConvTranspose3d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/ConvTranspose3d.java
new file mode 100644
index 0000000..5e72e67
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/ConvTranspose3d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Conv Transpose3d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getConvTranspose3d()
+ * @model
+ * @generated
+ */
+public interface ConvTranspose3d extends transpose {
+} // ConvTranspose3d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/Convolution.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/Convolution.java
new file mode 100644
index 0000000..40c8f10
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/Convolution.java
@@ -0,0 +1,319 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Convolution</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getIn_channels <em>In channels</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getGroups <em>Groups</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#isBiais <em>Biais</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getPadding_mode <em>Padding mode</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getData_format <em>Data format</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getDilation_rate <em>Dilation rate</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getActivation <em>Activation</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getBias_initializer <em>Bias initializer</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getActivity_regularizer <em>Activity regularizer</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getBias_constraint <em>Bias constraint</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getBias_regularizer <em>Bias regularizer</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getConvolution()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Convolution extends Convolution_layers {
+	/**
+	 * Returns the value of the '<em><b>In channels</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>In channels</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>In channels</em>' attribute.
+	 * @see #setIn_channels(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getConvolution_In_channels()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	int getIn_channels();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getIn_channels <em>In channels</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>In channels</em>' attribute.
+	 * @see #getIn_channels()
+	 * @generated
+	 */
+	void setIn_channels(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Groups</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Groups</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Groups</em>' attribute.
+	 * @see #setGroups(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getConvolution_Groups()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	int getGroups();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getGroups <em>Groups</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Groups</em>' attribute.
+	 * @see #getGroups()
+	 * @generated
+	 */
+	void setGroups(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Biais</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Biais</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Biais</em>' attribute.
+	 * @see #setBiais(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getConvolution_Biais()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isBiais();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#isBiais <em>Biais</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Biais</em>' attribute.
+	 * @see #isBiais()
+	 * @generated
+	 */
+	void setBiais(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Padding mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Padding mode</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Padding mode</em>' attribute.
+	 * @see #setPadding_mode(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getConvolution_Padding_mode()
+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+	 * @generated
+	 */
+	String getPadding_mode();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getPadding_mode <em>Padding mode</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Padding mode</em>' attribute.
+	 * @see #getPadding_mode()
+	 * @generated
+	 */
+	void setPadding_mode(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Data format</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Data format</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Data format</em>' attribute.
+	 * @see #setData_format(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getConvolution_Data_format()
+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+	 * @generated
+	 */
+	String getData_format();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getData_format <em>Data format</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Data format</em>' attribute.
+	 * @see #getData_format()
+	 * @generated
+	 */
+	void setData_format(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Dilation rate</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.Integer}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Dilation rate</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Dilation rate</em>' attribute list.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getConvolution_Dilation_rate()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	EList<Integer> getDilation_rate();
+
+	/**
+	 * Returns the value of the '<em><b>Activation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Activation</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Activation</em>' attribute.
+	 * @see #setActivation(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getConvolution_Activation()
+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+	 * @generated
+	 */
+	String getActivation();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getActivation <em>Activation</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Activation</em>' attribute.
+	 * @see #getActivation()
+	 * @generated
+	 */
+	void setActivation(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Bias initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Bias initializer</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Bias initializer</em>' attribute.
+	 * @see #setBias_initializer(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getConvolution_Bias_initializer()
+	 * @model dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getBias_initializer();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getBias_initializer <em>Bias initializer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Bias initializer</em>' attribute.
+	 * @see #getBias_initializer()
+	 * @generated
+	 */
+	void setBias_initializer(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Activity regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Activity regularizer</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Activity regularizer</em>' attribute.
+	 * @see #setActivity_regularizer(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getConvolution_Activity_regularizer()
+	 * @model dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getActivity_regularizer();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getActivity_regularizer <em>Activity regularizer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Activity regularizer</em>' attribute.
+	 * @see #getActivity_regularizer()
+	 * @generated
+	 */
+	void setActivity_regularizer(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Bias constraint</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Bias constraint</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Bias constraint</em>' attribute.
+	 * @see #setBias_constraint(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getConvolution_Bias_constraint()
+	 * @model dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getBias_constraint();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getBias_constraint <em>Bias constraint</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Bias constraint</em>' attribute.
+	 * @see #getBias_constraint()
+	 * @generated
+	 */
+	void setBias_constraint(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Bias regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Bias regularizer</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Bias regularizer</em>' attribute.
+	 * @see #setBias_regularizer(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getConvolution_Bias_regularizer()
+	 * @model dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getBias_regularizer();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getBias_regularizer <em>Bias regularizer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Bias regularizer</em>' attribute.
+	 * @see #getBias_regularizer()
+	 * @generated
+	 */
+	void setBias_regularizer(String value);
+
+} // Convolution
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/Convolution_layers.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/Convolution_layers.java
new file mode 100644
index 0000000..e94b5b9
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/Convolution_layers.java
@@ -0,0 +1,101 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Convolution layers</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layers#getKernel_size <em>Kernel size</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layers#getStride <em>Stride</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layers#getPadding <em>Padding</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layers#getDilation <em>Dilation</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getConvolution_layers()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Convolution_layers extends Model {
+	/**
+	 * Returns the value of the '<em><b>Kernel size</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.Integer}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Kernel size</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Kernel size</em>' attribute list.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getConvolution_layers_Kernel_size()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	EList<Integer> getKernel_size();
+
+	/**
+	 * Returns the value of the '<em><b>Stride</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.Integer}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Stride</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Stride</em>' attribute list.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getConvolution_layers_Stride()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	EList<Integer> getStride();
+
+	/**
+	 * Returns the value of the '<em><b>Padding</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.Integer}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Padding</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Padding</em>' attribute list.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getConvolution_layers_Padding()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	EList<Integer> getPadding();
+
+	/**
+	 * Returns the value of the '<em><b>Dilation</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.Integer}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Dilation</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Dilation</em>' attribute list.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getConvolution_layers_Dilation()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	EList<Integer> getDilation();
+
+} // Convolution_layers
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/Convolution_layersFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/Convolution_layersFactory.java
new file mode 100644
index 0000000..2376154
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/Convolution_layersFactory.java
@@ -0,0 +1,141 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage
+ * @generated
+ */
+public interface Convolution_layersFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	Convolution_layersFactory eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Unfold</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Unfold</em>'.
+	 * @generated
+	 */
+	Unfold createUnfold();
+
+	/**
+	 * Returns a new object of class '<em>Fold</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Fold</em>'.
+	 * @generated
+	 */
+	Fold createFold();
+
+	/**
+	 * Returns a new object of class '<em>Conv2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Conv2d</em>'.
+	 * @generated
+	 */
+	Conv2d createConv2d();
+
+	/**
+	 * Returns a new object of class '<em>Conv3d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Conv3d</em>'.
+	 * @generated
+	 */
+	Conv3d createConv3d();
+
+	/**
+	 * Returns a new object of class '<em>Conv Transpose1d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Conv Transpose1d</em>'.
+	 * @generated
+	 */
+	ConvTranspose1d createConvTranspose1d();
+
+	/**
+	 * Returns a new object of class '<em>Conv Transpose2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Conv Transpose2d</em>'.
+	 * @generated
+	 */
+	ConvTranspose2d createConvTranspose2d();
+
+	/**
+	 * Returns a new object of class '<em>Conv Transpose3d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Conv Transpose3d</em>'.
+	 * @generated
+	 */
+	ConvTranspose3d createConvTranspose3d();
+
+	/**
+	 * Returns a new object of class '<em>Conv1d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Conv1d</em>'.
+	 * @generated
+	 */
+	Conv1d createConv1d();
+
+	/**
+	 * Returns a new object of class '<em>Separable Conv2 D</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Separable Conv2 D</em>'.
+	 * @generated
+	 */
+	SeparableConv2D createSeparableConv2D();
+
+	/**
+	 * Returns a new object of class '<em>Separable Conv1 D</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Separable Conv1 D</em>'.
+	 * @generated
+	 */
+	SeparableConv1D createSeparableConv1D();
+
+	/**
+	 * Returns a new object of class '<em>Depthwise Conv2 D</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Depthwise Conv2 D</em>'.
+	 * @generated
+	 */
+	DepthwiseConv2D createDepthwiseConv2D();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	Convolution_layersPackage getConvolution_layersPackage();
+
+} //Convolution_layersFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/Convolution_layersPackage.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/Convolution_layersPackage.java
new file mode 100644
index 0000000..d6a1aaf
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/Convolution_layersPackage.java
@@ -0,0 +1,5147 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface Convolution_layersPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "Convolution_layers"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://www.eclipse.org/papyrus/AIML/convolution/1"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "AIML.Convolution_layers"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	Convolution_layersPackage eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersImpl <em>Convolution layers</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#getConvolution_layers()
+	 * @generated
+	 */
+	int CONVOLUTION_LAYERS = 1;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION_LAYERS__BASE_CLASS = ModulePackage.MODEL__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION_LAYERS__NAME = ModulePackage.MODEL__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION_LAYERS__DATA = ModulePackage.MODEL__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION_LAYERS__REQUIRES_GRAD = ModulePackage.MODEL__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION_LAYERS__SUB_MODULE = ModulePackage.MODEL__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION_LAYERS__OPTIMIZER = ModulePackage.MODEL__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION_LAYERS__LOSS = ModulePackage.MODEL__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION_LAYERS__KERNEL_SIZE = ModulePackage.MODEL_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION_LAYERS__STRIDE = ModulePackage.MODEL_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION_LAYERS__PADDING = ModulePackage.MODEL_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Dilation</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION_LAYERS__DILATION = ModulePackage.MODEL_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the '<em>Convolution layers</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION_LAYERS_FEATURE_COUNT = ModulePackage.MODEL_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of operations of the '<em>Convolution layers</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION_LAYERS_OPERATION_COUNT = ModulePackage.MODEL_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.ConvolutionImpl <em>Convolution</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.ConvolutionImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#getConvolution()
+	 * @generated
+	 */
+	int CONVOLUTION = 0;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION__BASE_CLASS = CONVOLUTION_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION__NAME = CONVOLUTION_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION__DATA = CONVOLUTION_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION__REQUIRES_GRAD = CONVOLUTION_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION__SUB_MODULE = CONVOLUTION_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION__OPTIMIZER = CONVOLUTION_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION__LOSS = CONVOLUTION_LAYERS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION__KERNEL_SIZE = CONVOLUTION_LAYERS__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION__STRIDE = CONVOLUTION_LAYERS__STRIDE;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION__PADDING = CONVOLUTION_LAYERS__PADDING;
+
+	/**
+	 * The feature id for the '<em><b>Dilation</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION__DILATION = CONVOLUTION_LAYERS__DILATION;
+
+	/**
+	 * The feature id for the '<em><b>In channels</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION__IN_CHANNELS = CONVOLUTION_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Groups</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION__GROUPS = CONVOLUTION_LAYERS_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Biais</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION__BIAIS = CONVOLUTION_LAYERS_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Padding mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION__PADDING_MODE = CONVOLUTION_LAYERS_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Data format</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION__DATA_FORMAT = CONVOLUTION_LAYERS_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Dilation rate</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION__DILATION_RATE = CONVOLUTION_LAYERS_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Activation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION__ACTIVATION = CONVOLUTION_LAYERS_FEATURE_COUNT + 6;
+
+	/**
+	 * The feature id for the '<em><b>Bias initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION__BIAS_INITIALIZER = CONVOLUTION_LAYERS_FEATURE_COUNT + 7;
+
+	/**
+	 * The feature id for the '<em><b>Activity regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION__ACTIVITY_REGULARIZER = CONVOLUTION_LAYERS_FEATURE_COUNT + 8;
+
+	/**
+	 * The feature id for the '<em><b>Bias constraint</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION__BIAS_CONSTRAINT = CONVOLUTION_LAYERS_FEATURE_COUNT + 9;
+
+	/**
+	 * The feature id for the '<em><b>Bias regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION__BIAS_REGULARIZER = CONVOLUTION_LAYERS_FEATURE_COUNT + 10;
+
+	/**
+	 * The number of structural features of the '<em>Convolution</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION_FEATURE_COUNT = CONVOLUTION_LAYERS_FEATURE_COUNT + 11;
+
+	/**
+	 * The number of operations of the '<em>Convolution</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONVOLUTION_OPERATION_COUNT = CONVOLUTION_LAYERS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.UnfoldImpl <em>Unfold</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.UnfoldImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#getUnfold()
+	 * @generated
+	 */
+	int UNFOLD = 2;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNFOLD__BASE_CLASS = CONVOLUTION_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNFOLD__NAME = CONVOLUTION_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNFOLD__DATA = CONVOLUTION_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNFOLD__REQUIRES_GRAD = CONVOLUTION_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNFOLD__SUB_MODULE = CONVOLUTION_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNFOLD__OPTIMIZER = CONVOLUTION_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNFOLD__LOSS = CONVOLUTION_LAYERS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNFOLD__KERNEL_SIZE = CONVOLUTION_LAYERS__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNFOLD__STRIDE = CONVOLUTION_LAYERS__STRIDE;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNFOLD__PADDING = CONVOLUTION_LAYERS__PADDING;
+
+	/**
+	 * The feature id for the '<em><b>Dilation</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNFOLD__DILATION = CONVOLUTION_LAYERS__DILATION;
+
+	/**
+	 * The number of structural features of the '<em>Unfold</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNFOLD_FEATURE_COUNT = CONVOLUTION_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Unfold</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNFOLD_OPERATION_COUNT = CONVOLUTION_LAYERS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.FoldImpl <em>Fold</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.FoldImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#getFold()
+	 * @generated
+	 */
+	int FOLD = 3;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FOLD__BASE_CLASS = CONVOLUTION_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FOLD__NAME = CONVOLUTION_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FOLD__DATA = CONVOLUTION_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FOLD__REQUIRES_GRAD = CONVOLUTION_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FOLD__SUB_MODULE = CONVOLUTION_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FOLD__OPTIMIZER = CONVOLUTION_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FOLD__LOSS = CONVOLUTION_LAYERS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FOLD__KERNEL_SIZE = CONVOLUTION_LAYERS__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FOLD__STRIDE = CONVOLUTION_LAYERS__STRIDE;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FOLD__PADDING = CONVOLUTION_LAYERS__PADDING;
+
+	/**
+	 * The feature id for the '<em><b>Dilation</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FOLD__DILATION = CONVOLUTION_LAYERS__DILATION;
+
+	/**
+	 * The feature id for the '<em><b>Output size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FOLD__OUTPUT_SIZE = CONVOLUTION_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Fold</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FOLD_FEATURE_COUNT = CONVOLUTION_LAYERS_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Fold</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FOLD_OPERATION_COUNT = CONVOLUTION_LAYERS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.LayerWithFilterImpl <em>Layer With Filter</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.LayerWithFilterImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#getLayerWithFilter()
+	 * @generated
+	 */
+	int LAYER_WITH_FILTER = 6;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_WITH_FILTER__BASE_CLASS = CONVOLUTION__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_WITH_FILTER__NAME = CONVOLUTION__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_WITH_FILTER__DATA = CONVOLUTION__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_WITH_FILTER__REQUIRES_GRAD = CONVOLUTION__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_WITH_FILTER__SUB_MODULE = CONVOLUTION__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_WITH_FILTER__OPTIMIZER = CONVOLUTION__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_WITH_FILTER__LOSS = CONVOLUTION__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_WITH_FILTER__KERNEL_SIZE = CONVOLUTION__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_WITH_FILTER__STRIDE = CONVOLUTION__STRIDE;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_WITH_FILTER__PADDING = CONVOLUTION__PADDING;
+
+	/**
+	 * The feature id for the '<em><b>Dilation</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_WITH_FILTER__DILATION = CONVOLUTION__DILATION;
+
+	/**
+	 * The feature id for the '<em><b>In channels</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_WITH_FILTER__IN_CHANNELS = CONVOLUTION__IN_CHANNELS;
+
+	/**
+	 * The feature id for the '<em><b>Groups</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_WITH_FILTER__GROUPS = CONVOLUTION__GROUPS;
+
+	/**
+	 * The feature id for the '<em><b>Biais</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_WITH_FILTER__BIAIS = CONVOLUTION__BIAIS;
+
+	/**
+	 * The feature id for the '<em><b>Padding mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_WITH_FILTER__PADDING_MODE = CONVOLUTION__PADDING_MODE;
+
+	/**
+	 * The feature id for the '<em><b>Data format</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_WITH_FILTER__DATA_FORMAT = CONVOLUTION__DATA_FORMAT;
+
+	/**
+	 * The feature id for the '<em><b>Dilation rate</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_WITH_FILTER__DILATION_RATE = CONVOLUTION__DILATION_RATE;
+
+	/**
+	 * The feature id for the '<em><b>Activation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_WITH_FILTER__ACTIVATION = CONVOLUTION__ACTIVATION;
+
+	/**
+	 * The feature id for the '<em><b>Bias initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_WITH_FILTER__BIAS_INITIALIZER = CONVOLUTION__BIAS_INITIALIZER;
+
+	/**
+	 * The feature id for the '<em><b>Activity regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_WITH_FILTER__ACTIVITY_REGULARIZER = CONVOLUTION__ACTIVITY_REGULARIZER;
+
+	/**
+	 * The feature id for the '<em><b>Bias constraint</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_WITH_FILTER__BIAS_CONSTRAINT = CONVOLUTION__BIAS_CONSTRAINT;
+
+	/**
+	 * The feature id for the '<em><b>Bias regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_WITH_FILTER__BIAS_REGULARIZER = CONVOLUTION__BIAS_REGULARIZER;
+
+	/**
+	 * The feature id for the '<em><b>Out channels</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_WITH_FILTER__OUT_CHANNELS = CONVOLUTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Layer With Filter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_WITH_FILTER_FEATURE_COUNT = CONVOLUTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Layer With Filter</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_WITH_FILTER_OPERATION_COUNT = CONVOLUTION_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.basicImpl <em>basic</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.basicImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#getbasic()
+	 * @generated
+	 */
+	int BASIC = 5;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BASIC__BASE_CLASS = LAYER_WITH_FILTER__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BASIC__NAME = LAYER_WITH_FILTER__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BASIC__DATA = LAYER_WITH_FILTER__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BASIC__REQUIRES_GRAD = LAYER_WITH_FILTER__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BASIC__SUB_MODULE = LAYER_WITH_FILTER__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BASIC__OPTIMIZER = LAYER_WITH_FILTER__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BASIC__LOSS = LAYER_WITH_FILTER__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BASIC__KERNEL_SIZE = LAYER_WITH_FILTER__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BASIC__STRIDE = LAYER_WITH_FILTER__STRIDE;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BASIC__PADDING = LAYER_WITH_FILTER__PADDING;
+
+	/**
+	 * The feature id for the '<em><b>Dilation</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BASIC__DILATION = LAYER_WITH_FILTER__DILATION;
+
+	/**
+	 * The feature id for the '<em><b>In channels</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BASIC__IN_CHANNELS = LAYER_WITH_FILTER__IN_CHANNELS;
+
+	/**
+	 * The feature id for the '<em><b>Groups</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BASIC__GROUPS = LAYER_WITH_FILTER__GROUPS;
+
+	/**
+	 * The feature id for the '<em><b>Biais</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BASIC__BIAIS = LAYER_WITH_FILTER__BIAIS;
+
+	/**
+	 * The feature id for the '<em><b>Padding mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BASIC__PADDING_MODE = LAYER_WITH_FILTER__PADDING_MODE;
+
+	/**
+	 * The feature id for the '<em><b>Data format</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BASIC__DATA_FORMAT = LAYER_WITH_FILTER__DATA_FORMAT;
+
+	/**
+	 * The feature id for the '<em><b>Dilation rate</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BASIC__DILATION_RATE = LAYER_WITH_FILTER__DILATION_RATE;
+
+	/**
+	 * The feature id for the '<em><b>Activation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BASIC__ACTIVATION = LAYER_WITH_FILTER__ACTIVATION;
+
+	/**
+	 * The feature id for the '<em><b>Bias initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BASIC__BIAS_INITIALIZER = LAYER_WITH_FILTER__BIAS_INITIALIZER;
+
+	/**
+	 * The feature id for the '<em><b>Activity regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BASIC__ACTIVITY_REGULARIZER = LAYER_WITH_FILTER__ACTIVITY_REGULARIZER;
+
+	/**
+	 * The feature id for the '<em><b>Bias constraint</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BASIC__BIAS_CONSTRAINT = LAYER_WITH_FILTER__BIAS_CONSTRAINT;
+
+	/**
+	 * The feature id for the '<em><b>Bias regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BASIC__BIAS_REGULARIZER = LAYER_WITH_FILTER__BIAS_REGULARIZER;
+
+	/**
+	 * The feature id for the '<em><b>Out channels</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BASIC__OUT_CHANNELS = LAYER_WITH_FILTER__OUT_CHANNELS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BASIC__KERNEL_INITIALIZER = LAYER_WITH_FILTER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Kernel constraint</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BASIC__KERNEL_CONSTRAINT = LAYER_WITH_FILTER_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Kernel regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BASIC__KERNEL_REGULARIZER = LAYER_WITH_FILTER_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>basic</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BASIC_FEATURE_COUNT = LAYER_WITH_FILTER_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of operations of the '<em>basic</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BASIC_OPERATION_COUNT = LAYER_WITH_FILTER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Conv2dImpl <em>Conv2d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Conv2dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#getConv2d()
+	 * @generated
+	 */
+	int CONV2D = 4;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV2D__BASE_CLASS = BASIC__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV2D__NAME = BASIC__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV2D__DATA = BASIC__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV2D__REQUIRES_GRAD = BASIC__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV2D__SUB_MODULE = BASIC__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV2D__OPTIMIZER = BASIC__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV2D__LOSS = BASIC__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV2D__KERNEL_SIZE = BASIC__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV2D__STRIDE = BASIC__STRIDE;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV2D__PADDING = BASIC__PADDING;
+
+	/**
+	 * The feature id for the '<em><b>Dilation</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV2D__DILATION = BASIC__DILATION;
+
+	/**
+	 * The feature id for the '<em><b>In channels</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV2D__IN_CHANNELS = BASIC__IN_CHANNELS;
+
+	/**
+	 * The feature id for the '<em><b>Groups</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV2D__GROUPS = BASIC__GROUPS;
+
+	/**
+	 * The feature id for the '<em><b>Biais</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV2D__BIAIS = BASIC__BIAIS;
+
+	/**
+	 * The feature id for the '<em><b>Padding mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV2D__PADDING_MODE = BASIC__PADDING_MODE;
+
+	/**
+	 * The feature id for the '<em><b>Data format</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV2D__DATA_FORMAT = BASIC__DATA_FORMAT;
+
+	/**
+	 * The feature id for the '<em><b>Dilation rate</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV2D__DILATION_RATE = BASIC__DILATION_RATE;
+
+	/**
+	 * The feature id for the '<em><b>Activation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV2D__ACTIVATION = BASIC__ACTIVATION;
+
+	/**
+	 * The feature id for the '<em><b>Bias initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV2D__BIAS_INITIALIZER = BASIC__BIAS_INITIALIZER;
+
+	/**
+	 * The feature id for the '<em><b>Activity regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV2D__ACTIVITY_REGULARIZER = BASIC__ACTIVITY_REGULARIZER;
+
+	/**
+	 * The feature id for the '<em><b>Bias constraint</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV2D__BIAS_CONSTRAINT = BASIC__BIAS_CONSTRAINT;
+
+	/**
+	 * The feature id for the '<em><b>Bias regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV2D__BIAS_REGULARIZER = BASIC__BIAS_REGULARIZER;
+
+	/**
+	 * The feature id for the '<em><b>Out channels</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV2D__OUT_CHANNELS = BASIC__OUT_CHANNELS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV2D__KERNEL_INITIALIZER = BASIC__KERNEL_INITIALIZER;
+
+	/**
+	 * The feature id for the '<em><b>Kernel constraint</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV2D__KERNEL_CONSTRAINT = BASIC__KERNEL_CONSTRAINT;
+
+	/**
+	 * The feature id for the '<em><b>Kernel regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV2D__KERNEL_REGULARIZER = BASIC__KERNEL_REGULARIZER;
+
+	/**
+	 * The number of structural features of the '<em>Conv2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV2D_FEATURE_COUNT = BASIC_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Conv2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV2D_OPERATION_COUNT = BASIC_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Conv3dImpl <em>Conv3d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Conv3dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#getConv3d()
+	 * @generated
+	 */
+	int CONV3D = 7;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV3D__BASE_CLASS = BASIC__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV3D__NAME = BASIC__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV3D__DATA = BASIC__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV3D__REQUIRES_GRAD = BASIC__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV3D__SUB_MODULE = BASIC__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV3D__OPTIMIZER = BASIC__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV3D__LOSS = BASIC__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV3D__KERNEL_SIZE = BASIC__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV3D__STRIDE = BASIC__STRIDE;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV3D__PADDING = BASIC__PADDING;
+
+	/**
+	 * The feature id for the '<em><b>Dilation</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV3D__DILATION = BASIC__DILATION;
+
+	/**
+	 * The feature id for the '<em><b>In channels</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV3D__IN_CHANNELS = BASIC__IN_CHANNELS;
+
+	/**
+	 * The feature id for the '<em><b>Groups</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV3D__GROUPS = BASIC__GROUPS;
+
+	/**
+	 * The feature id for the '<em><b>Biais</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV3D__BIAIS = BASIC__BIAIS;
+
+	/**
+	 * The feature id for the '<em><b>Padding mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV3D__PADDING_MODE = BASIC__PADDING_MODE;
+
+	/**
+	 * The feature id for the '<em><b>Data format</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV3D__DATA_FORMAT = BASIC__DATA_FORMAT;
+
+	/**
+	 * The feature id for the '<em><b>Dilation rate</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV3D__DILATION_RATE = BASIC__DILATION_RATE;
+
+	/**
+	 * The feature id for the '<em><b>Activation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV3D__ACTIVATION = BASIC__ACTIVATION;
+
+	/**
+	 * The feature id for the '<em><b>Bias initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV3D__BIAS_INITIALIZER = BASIC__BIAS_INITIALIZER;
+
+	/**
+	 * The feature id for the '<em><b>Activity regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV3D__ACTIVITY_REGULARIZER = BASIC__ACTIVITY_REGULARIZER;
+
+	/**
+	 * The feature id for the '<em><b>Bias constraint</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV3D__BIAS_CONSTRAINT = BASIC__BIAS_CONSTRAINT;
+
+	/**
+	 * The feature id for the '<em><b>Bias regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV3D__BIAS_REGULARIZER = BASIC__BIAS_REGULARIZER;
+
+	/**
+	 * The feature id for the '<em><b>Out channels</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV3D__OUT_CHANNELS = BASIC__OUT_CHANNELS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV3D__KERNEL_INITIALIZER = BASIC__KERNEL_INITIALIZER;
+
+	/**
+	 * The feature id for the '<em><b>Kernel constraint</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV3D__KERNEL_CONSTRAINT = BASIC__KERNEL_CONSTRAINT;
+
+	/**
+	 * The feature id for the '<em><b>Kernel regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV3D__KERNEL_REGULARIZER = BASIC__KERNEL_REGULARIZER;
+
+	/**
+	 * The number of structural features of the '<em>Conv3d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV3D_FEATURE_COUNT = BASIC_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Conv3d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV3D_OPERATION_COUNT = BASIC_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.ConvTranspose1dImpl <em>Conv Transpose1d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.ConvTranspose1dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#getConvTranspose1d()
+	 * @generated
+	 */
+	int CONV_TRANSPOSE1D = 8;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE1D__BASE_CLASS = LAYER_WITH_FILTER__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE1D__NAME = LAYER_WITH_FILTER__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE1D__DATA = LAYER_WITH_FILTER__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE1D__REQUIRES_GRAD = LAYER_WITH_FILTER__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE1D__SUB_MODULE = LAYER_WITH_FILTER__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE1D__OPTIMIZER = LAYER_WITH_FILTER__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE1D__LOSS = LAYER_WITH_FILTER__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE1D__KERNEL_SIZE = LAYER_WITH_FILTER__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE1D__STRIDE = LAYER_WITH_FILTER__STRIDE;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE1D__PADDING = LAYER_WITH_FILTER__PADDING;
+
+	/**
+	 * The feature id for the '<em><b>Dilation</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE1D__DILATION = LAYER_WITH_FILTER__DILATION;
+
+	/**
+	 * The feature id for the '<em><b>In channels</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE1D__IN_CHANNELS = LAYER_WITH_FILTER__IN_CHANNELS;
+
+	/**
+	 * The feature id for the '<em><b>Groups</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE1D__GROUPS = LAYER_WITH_FILTER__GROUPS;
+
+	/**
+	 * The feature id for the '<em><b>Biais</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE1D__BIAIS = LAYER_WITH_FILTER__BIAIS;
+
+	/**
+	 * The feature id for the '<em><b>Padding mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE1D__PADDING_MODE = LAYER_WITH_FILTER__PADDING_MODE;
+
+	/**
+	 * The feature id for the '<em><b>Data format</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE1D__DATA_FORMAT = LAYER_WITH_FILTER__DATA_FORMAT;
+
+	/**
+	 * The feature id for the '<em><b>Dilation rate</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE1D__DILATION_RATE = LAYER_WITH_FILTER__DILATION_RATE;
+
+	/**
+	 * The feature id for the '<em><b>Activation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE1D__ACTIVATION = LAYER_WITH_FILTER__ACTIVATION;
+
+	/**
+	 * The feature id for the '<em><b>Bias initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE1D__BIAS_INITIALIZER = LAYER_WITH_FILTER__BIAS_INITIALIZER;
+
+	/**
+	 * The feature id for the '<em><b>Activity regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE1D__ACTIVITY_REGULARIZER = LAYER_WITH_FILTER__ACTIVITY_REGULARIZER;
+
+	/**
+	 * The feature id for the '<em><b>Bias constraint</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE1D__BIAS_CONSTRAINT = LAYER_WITH_FILTER__BIAS_CONSTRAINT;
+
+	/**
+	 * The feature id for the '<em><b>Bias regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE1D__BIAS_REGULARIZER = LAYER_WITH_FILTER__BIAS_REGULARIZER;
+
+	/**
+	 * The feature id for the '<em><b>Out channels</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE1D__OUT_CHANNELS = LAYER_WITH_FILTER__OUT_CHANNELS;
+
+	/**
+	 * The number of structural features of the '<em>Conv Transpose1d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE1D_FEATURE_COUNT = LAYER_WITH_FILTER_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Conv Transpose1d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE1D_OPERATION_COUNT = LAYER_WITH_FILTER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.transposeImpl <em>transpose</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.transposeImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#gettranspose()
+	 * @generated
+	 */
+	int TRANSPOSE = 10;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSPOSE__BASE_CLASS = BASIC__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSPOSE__NAME = BASIC__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSPOSE__DATA = BASIC__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSPOSE__REQUIRES_GRAD = BASIC__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSPOSE__SUB_MODULE = BASIC__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSPOSE__OPTIMIZER = BASIC__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSPOSE__LOSS = BASIC__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSPOSE__KERNEL_SIZE = BASIC__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSPOSE__STRIDE = BASIC__STRIDE;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSPOSE__PADDING = BASIC__PADDING;
+
+	/**
+	 * The feature id for the '<em><b>Dilation</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSPOSE__DILATION = BASIC__DILATION;
+
+	/**
+	 * The feature id for the '<em><b>In channels</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSPOSE__IN_CHANNELS = BASIC__IN_CHANNELS;
+
+	/**
+	 * The feature id for the '<em><b>Groups</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSPOSE__GROUPS = BASIC__GROUPS;
+
+	/**
+	 * The feature id for the '<em><b>Biais</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSPOSE__BIAIS = BASIC__BIAIS;
+
+	/**
+	 * The feature id for the '<em><b>Padding mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSPOSE__PADDING_MODE = BASIC__PADDING_MODE;
+
+	/**
+	 * The feature id for the '<em><b>Data format</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSPOSE__DATA_FORMAT = BASIC__DATA_FORMAT;
+
+	/**
+	 * The feature id for the '<em><b>Dilation rate</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSPOSE__DILATION_RATE = BASIC__DILATION_RATE;
+
+	/**
+	 * The feature id for the '<em><b>Activation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSPOSE__ACTIVATION = BASIC__ACTIVATION;
+
+	/**
+	 * The feature id for the '<em><b>Bias initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSPOSE__BIAS_INITIALIZER = BASIC__BIAS_INITIALIZER;
+
+	/**
+	 * The feature id for the '<em><b>Activity regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSPOSE__ACTIVITY_REGULARIZER = BASIC__ACTIVITY_REGULARIZER;
+
+	/**
+	 * The feature id for the '<em><b>Bias constraint</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSPOSE__BIAS_CONSTRAINT = BASIC__BIAS_CONSTRAINT;
+
+	/**
+	 * The feature id for the '<em><b>Bias regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSPOSE__BIAS_REGULARIZER = BASIC__BIAS_REGULARIZER;
+
+	/**
+	 * The feature id for the '<em><b>Out channels</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSPOSE__OUT_CHANNELS = BASIC__OUT_CHANNELS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSPOSE__KERNEL_INITIALIZER = BASIC__KERNEL_INITIALIZER;
+
+	/**
+	 * The feature id for the '<em><b>Kernel constraint</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSPOSE__KERNEL_CONSTRAINT = BASIC__KERNEL_CONSTRAINT;
+
+	/**
+	 * The feature id for the '<em><b>Kernel regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSPOSE__KERNEL_REGULARIZER = BASIC__KERNEL_REGULARIZER;
+
+	/**
+	 * The feature id for the '<em><b>Output padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSPOSE__OUTPUT_PADDING = BASIC_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>transpose</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSPOSE_FEATURE_COUNT = BASIC_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>transpose</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSPOSE_OPERATION_COUNT = BASIC_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.ConvTranspose2dImpl <em>Conv Transpose2d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.ConvTranspose2dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#getConvTranspose2d()
+	 * @generated
+	 */
+	int CONV_TRANSPOSE2D = 9;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE2D__BASE_CLASS = TRANSPOSE__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE2D__NAME = TRANSPOSE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE2D__DATA = TRANSPOSE__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE2D__REQUIRES_GRAD = TRANSPOSE__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE2D__SUB_MODULE = TRANSPOSE__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE2D__OPTIMIZER = TRANSPOSE__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE2D__LOSS = TRANSPOSE__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE2D__KERNEL_SIZE = TRANSPOSE__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE2D__STRIDE = TRANSPOSE__STRIDE;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE2D__PADDING = TRANSPOSE__PADDING;
+
+	/**
+	 * The feature id for the '<em><b>Dilation</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE2D__DILATION = TRANSPOSE__DILATION;
+
+	/**
+	 * The feature id for the '<em><b>In channels</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE2D__IN_CHANNELS = TRANSPOSE__IN_CHANNELS;
+
+	/**
+	 * The feature id for the '<em><b>Groups</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE2D__GROUPS = TRANSPOSE__GROUPS;
+
+	/**
+	 * The feature id for the '<em><b>Biais</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE2D__BIAIS = TRANSPOSE__BIAIS;
+
+	/**
+	 * The feature id for the '<em><b>Padding mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE2D__PADDING_MODE = TRANSPOSE__PADDING_MODE;
+
+	/**
+	 * The feature id for the '<em><b>Data format</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE2D__DATA_FORMAT = TRANSPOSE__DATA_FORMAT;
+
+	/**
+	 * The feature id for the '<em><b>Dilation rate</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE2D__DILATION_RATE = TRANSPOSE__DILATION_RATE;
+
+	/**
+	 * The feature id for the '<em><b>Activation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE2D__ACTIVATION = TRANSPOSE__ACTIVATION;
+
+	/**
+	 * The feature id for the '<em><b>Bias initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE2D__BIAS_INITIALIZER = TRANSPOSE__BIAS_INITIALIZER;
+
+	/**
+	 * The feature id for the '<em><b>Activity regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE2D__ACTIVITY_REGULARIZER = TRANSPOSE__ACTIVITY_REGULARIZER;
+
+	/**
+	 * The feature id for the '<em><b>Bias constraint</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE2D__BIAS_CONSTRAINT = TRANSPOSE__BIAS_CONSTRAINT;
+
+	/**
+	 * The feature id for the '<em><b>Bias regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE2D__BIAS_REGULARIZER = TRANSPOSE__BIAS_REGULARIZER;
+
+	/**
+	 * The feature id for the '<em><b>Out channels</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE2D__OUT_CHANNELS = TRANSPOSE__OUT_CHANNELS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE2D__KERNEL_INITIALIZER = TRANSPOSE__KERNEL_INITIALIZER;
+
+	/**
+	 * The feature id for the '<em><b>Kernel constraint</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE2D__KERNEL_CONSTRAINT = TRANSPOSE__KERNEL_CONSTRAINT;
+
+	/**
+	 * The feature id for the '<em><b>Kernel regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE2D__KERNEL_REGULARIZER = TRANSPOSE__KERNEL_REGULARIZER;
+
+	/**
+	 * The feature id for the '<em><b>Output padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE2D__OUTPUT_PADDING = TRANSPOSE__OUTPUT_PADDING;
+
+	/**
+	 * The number of structural features of the '<em>Conv Transpose2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE2D_FEATURE_COUNT = TRANSPOSE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Conv Transpose2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE2D_OPERATION_COUNT = TRANSPOSE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.ConvTranspose3dImpl <em>Conv Transpose3d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.ConvTranspose3dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#getConvTranspose3d()
+	 * @generated
+	 */
+	int CONV_TRANSPOSE3D = 11;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE3D__BASE_CLASS = TRANSPOSE__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE3D__NAME = TRANSPOSE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE3D__DATA = TRANSPOSE__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE3D__REQUIRES_GRAD = TRANSPOSE__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE3D__SUB_MODULE = TRANSPOSE__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE3D__OPTIMIZER = TRANSPOSE__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE3D__LOSS = TRANSPOSE__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE3D__KERNEL_SIZE = TRANSPOSE__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE3D__STRIDE = TRANSPOSE__STRIDE;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE3D__PADDING = TRANSPOSE__PADDING;
+
+	/**
+	 * The feature id for the '<em><b>Dilation</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE3D__DILATION = TRANSPOSE__DILATION;
+
+	/**
+	 * The feature id for the '<em><b>In channels</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE3D__IN_CHANNELS = TRANSPOSE__IN_CHANNELS;
+
+	/**
+	 * The feature id for the '<em><b>Groups</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE3D__GROUPS = TRANSPOSE__GROUPS;
+
+	/**
+	 * The feature id for the '<em><b>Biais</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE3D__BIAIS = TRANSPOSE__BIAIS;
+
+	/**
+	 * The feature id for the '<em><b>Padding mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE3D__PADDING_MODE = TRANSPOSE__PADDING_MODE;
+
+	/**
+	 * The feature id for the '<em><b>Data format</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE3D__DATA_FORMAT = TRANSPOSE__DATA_FORMAT;
+
+	/**
+	 * The feature id for the '<em><b>Dilation rate</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE3D__DILATION_RATE = TRANSPOSE__DILATION_RATE;
+
+	/**
+	 * The feature id for the '<em><b>Activation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE3D__ACTIVATION = TRANSPOSE__ACTIVATION;
+
+	/**
+	 * The feature id for the '<em><b>Bias initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE3D__BIAS_INITIALIZER = TRANSPOSE__BIAS_INITIALIZER;
+
+	/**
+	 * The feature id for the '<em><b>Activity regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE3D__ACTIVITY_REGULARIZER = TRANSPOSE__ACTIVITY_REGULARIZER;
+
+	/**
+	 * The feature id for the '<em><b>Bias constraint</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE3D__BIAS_CONSTRAINT = TRANSPOSE__BIAS_CONSTRAINT;
+
+	/**
+	 * The feature id for the '<em><b>Bias regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE3D__BIAS_REGULARIZER = TRANSPOSE__BIAS_REGULARIZER;
+
+	/**
+	 * The feature id for the '<em><b>Out channels</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE3D__OUT_CHANNELS = TRANSPOSE__OUT_CHANNELS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE3D__KERNEL_INITIALIZER = TRANSPOSE__KERNEL_INITIALIZER;
+
+	/**
+	 * The feature id for the '<em><b>Kernel constraint</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE3D__KERNEL_CONSTRAINT = TRANSPOSE__KERNEL_CONSTRAINT;
+
+	/**
+	 * The feature id for the '<em><b>Kernel regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE3D__KERNEL_REGULARIZER = TRANSPOSE__KERNEL_REGULARIZER;
+
+	/**
+	 * The feature id for the '<em><b>Output padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE3D__OUTPUT_PADDING = TRANSPOSE__OUTPUT_PADDING;
+
+	/**
+	 * The number of structural features of the '<em>Conv Transpose3d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE3D_FEATURE_COUNT = TRANSPOSE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Conv Transpose3d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV_TRANSPOSE3D_OPERATION_COUNT = TRANSPOSE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Conv1dImpl <em>Conv1d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Conv1dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#getConv1d()
+	 * @generated
+	 */
+	int CONV1D = 12;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV1D__BASE_CLASS = BASIC__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV1D__NAME = BASIC__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV1D__DATA = BASIC__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV1D__REQUIRES_GRAD = BASIC__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV1D__SUB_MODULE = BASIC__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV1D__OPTIMIZER = BASIC__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV1D__LOSS = BASIC__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV1D__KERNEL_SIZE = BASIC__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV1D__STRIDE = BASIC__STRIDE;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV1D__PADDING = BASIC__PADDING;
+
+	/**
+	 * The feature id for the '<em><b>Dilation</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV1D__DILATION = BASIC__DILATION;
+
+	/**
+	 * The feature id for the '<em><b>In channels</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV1D__IN_CHANNELS = BASIC__IN_CHANNELS;
+
+	/**
+	 * The feature id for the '<em><b>Groups</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV1D__GROUPS = BASIC__GROUPS;
+
+	/**
+	 * The feature id for the '<em><b>Biais</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV1D__BIAIS = BASIC__BIAIS;
+
+	/**
+	 * The feature id for the '<em><b>Padding mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV1D__PADDING_MODE = BASIC__PADDING_MODE;
+
+	/**
+	 * The feature id for the '<em><b>Data format</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV1D__DATA_FORMAT = BASIC__DATA_FORMAT;
+
+	/**
+	 * The feature id for the '<em><b>Dilation rate</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV1D__DILATION_RATE = BASIC__DILATION_RATE;
+
+	/**
+	 * The feature id for the '<em><b>Activation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV1D__ACTIVATION = BASIC__ACTIVATION;
+
+	/**
+	 * The feature id for the '<em><b>Bias initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV1D__BIAS_INITIALIZER = BASIC__BIAS_INITIALIZER;
+
+	/**
+	 * The feature id for the '<em><b>Activity regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV1D__ACTIVITY_REGULARIZER = BASIC__ACTIVITY_REGULARIZER;
+
+	/**
+	 * The feature id for the '<em><b>Bias constraint</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV1D__BIAS_CONSTRAINT = BASIC__BIAS_CONSTRAINT;
+
+	/**
+	 * The feature id for the '<em><b>Bias regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV1D__BIAS_REGULARIZER = BASIC__BIAS_REGULARIZER;
+
+	/**
+	 * The feature id for the '<em><b>Out channels</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV1D__OUT_CHANNELS = BASIC__OUT_CHANNELS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV1D__KERNEL_INITIALIZER = BASIC__KERNEL_INITIALIZER;
+
+	/**
+	 * The feature id for the '<em><b>Kernel constraint</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV1D__KERNEL_CONSTRAINT = BASIC__KERNEL_CONSTRAINT;
+
+	/**
+	 * The feature id for the '<em><b>Kernel regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV1D__KERNEL_REGULARIZER = BASIC__KERNEL_REGULARIZER;
+
+	/**
+	 * The number of structural features of the '<em>Conv1d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV1D_FEATURE_COUNT = BASIC_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Conv1d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONV1D_OPERATION_COUNT = BASIC_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.SeparableImpl <em>Separable</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.SeparableImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#getSeparable()
+	 * @generated
+	 */
+	int SEPARABLE = 13;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE__BASE_CLASS = LAYER_WITH_FILTER__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE__NAME = LAYER_WITH_FILTER__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE__DATA = LAYER_WITH_FILTER__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE__REQUIRES_GRAD = LAYER_WITH_FILTER__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE__SUB_MODULE = LAYER_WITH_FILTER__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE__OPTIMIZER = LAYER_WITH_FILTER__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE__LOSS = LAYER_WITH_FILTER__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE__KERNEL_SIZE = LAYER_WITH_FILTER__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE__STRIDE = LAYER_WITH_FILTER__STRIDE;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE__PADDING = LAYER_WITH_FILTER__PADDING;
+
+	/**
+	 * The feature id for the '<em><b>Dilation</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE__DILATION = LAYER_WITH_FILTER__DILATION;
+
+	/**
+	 * The feature id for the '<em><b>In channels</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE__IN_CHANNELS = LAYER_WITH_FILTER__IN_CHANNELS;
+
+	/**
+	 * The feature id for the '<em><b>Groups</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE__GROUPS = LAYER_WITH_FILTER__GROUPS;
+
+	/**
+	 * The feature id for the '<em><b>Biais</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE__BIAIS = LAYER_WITH_FILTER__BIAIS;
+
+	/**
+	 * The feature id for the '<em><b>Padding mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE__PADDING_MODE = LAYER_WITH_FILTER__PADDING_MODE;
+
+	/**
+	 * The feature id for the '<em><b>Data format</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE__DATA_FORMAT = LAYER_WITH_FILTER__DATA_FORMAT;
+
+	/**
+	 * The feature id for the '<em><b>Dilation rate</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE__DILATION_RATE = LAYER_WITH_FILTER__DILATION_RATE;
+
+	/**
+	 * The feature id for the '<em><b>Activation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE__ACTIVATION = LAYER_WITH_FILTER__ACTIVATION;
+
+	/**
+	 * The feature id for the '<em><b>Bias initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE__BIAS_INITIALIZER = LAYER_WITH_FILTER__BIAS_INITIALIZER;
+
+	/**
+	 * The feature id for the '<em><b>Activity regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE__ACTIVITY_REGULARIZER = LAYER_WITH_FILTER__ACTIVITY_REGULARIZER;
+
+	/**
+	 * The feature id for the '<em><b>Bias constraint</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE__BIAS_CONSTRAINT = LAYER_WITH_FILTER__BIAS_CONSTRAINT;
+
+	/**
+	 * The feature id for the '<em><b>Bias regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE__BIAS_REGULARIZER = LAYER_WITH_FILTER__BIAS_REGULARIZER;
+
+	/**
+	 * The feature id for the '<em><b>Out channels</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE__OUT_CHANNELS = LAYER_WITH_FILTER__OUT_CHANNELS;
+
+	/**
+	 * The feature id for the '<em><b>Depth multiplier</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE__DEPTH_MULTIPLIER = LAYER_WITH_FILTER_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Depthwise initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE__DEPTHWISE_INITIALIZER = LAYER_WITH_FILTER_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Pointwise initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE__POINTWISE_INITIALIZER = LAYER_WITH_FILTER_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Depthwise regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE__DEPTHWISE_REGULARIZER = LAYER_WITH_FILTER_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Poitnwise regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE__POITNWISE_REGULARIZER = LAYER_WITH_FILTER_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Depthwise constraint</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE__DEPTHWISE_CONSTRAINT = LAYER_WITH_FILTER_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Pointwise constraint</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE__POINTWISE_CONSTRAINT = LAYER_WITH_FILTER_FEATURE_COUNT + 6;
+
+	/**
+	 * The number of structural features of the '<em>Separable</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_FEATURE_COUNT = LAYER_WITH_FILTER_FEATURE_COUNT + 7;
+
+	/**
+	 * The number of operations of the '<em>Separable</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_OPERATION_COUNT = LAYER_WITH_FILTER_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.SeparableConv2DImpl <em>Separable Conv2 D</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.SeparableConv2DImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#getSeparableConv2D()
+	 * @generated
+	 */
+	int SEPARABLE_CONV2_D = 14;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV2_D__BASE_CLASS = SEPARABLE__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV2_D__NAME = SEPARABLE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV2_D__DATA = SEPARABLE__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV2_D__REQUIRES_GRAD = SEPARABLE__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV2_D__SUB_MODULE = SEPARABLE__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV2_D__OPTIMIZER = SEPARABLE__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV2_D__LOSS = SEPARABLE__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV2_D__KERNEL_SIZE = SEPARABLE__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV2_D__STRIDE = SEPARABLE__STRIDE;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV2_D__PADDING = SEPARABLE__PADDING;
+
+	/**
+	 * The feature id for the '<em><b>Dilation</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV2_D__DILATION = SEPARABLE__DILATION;
+
+	/**
+	 * The feature id for the '<em><b>In channels</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV2_D__IN_CHANNELS = SEPARABLE__IN_CHANNELS;
+
+	/**
+	 * The feature id for the '<em><b>Groups</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV2_D__GROUPS = SEPARABLE__GROUPS;
+
+	/**
+	 * The feature id for the '<em><b>Biais</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV2_D__BIAIS = SEPARABLE__BIAIS;
+
+	/**
+	 * The feature id for the '<em><b>Padding mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV2_D__PADDING_MODE = SEPARABLE__PADDING_MODE;
+
+	/**
+	 * The feature id for the '<em><b>Data format</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV2_D__DATA_FORMAT = SEPARABLE__DATA_FORMAT;
+
+	/**
+	 * The feature id for the '<em><b>Dilation rate</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV2_D__DILATION_RATE = SEPARABLE__DILATION_RATE;
+
+	/**
+	 * The feature id for the '<em><b>Activation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV2_D__ACTIVATION = SEPARABLE__ACTIVATION;
+
+	/**
+	 * The feature id for the '<em><b>Bias initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV2_D__BIAS_INITIALIZER = SEPARABLE__BIAS_INITIALIZER;
+
+	/**
+	 * The feature id for the '<em><b>Activity regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV2_D__ACTIVITY_REGULARIZER = SEPARABLE__ACTIVITY_REGULARIZER;
+
+	/**
+	 * The feature id for the '<em><b>Bias constraint</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV2_D__BIAS_CONSTRAINT = SEPARABLE__BIAS_CONSTRAINT;
+
+	/**
+	 * The feature id for the '<em><b>Bias regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV2_D__BIAS_REGULARIZER = SEPARABLE__BIAS_REGULARIZER;
+
+	/**
+	 * The feature id for the '<em><b>Out channels</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV2_D__OUT_CHANNELS = SEPARABLE__OUT_CHANNELS;
+
+	/**
+	 * The feature id for the '<em><b>Depth multiplier</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV2_D__DEPTH_MULTIPLIER = SEPARABLE__DEPTH_MULTIPLIER;
+
+	/**
+	 * The feature id for the '<em><b>Depthwise initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV2_D__DEPTHWISE_INITIALIZER = SEPARABLE__DEPTHWISE_INITIALIZER;
+
+	/**
+	 * The feature id for the '<em><b>Pointwise initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV2_D__POINTWISE_INITIALIZER = SEPARABLE__POINTWISE_INITIALIZER;
+
+	/**
+	 * The feature id for the '<em><b>Depthwise regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV2_D__DEPTHWISE_REGULARIZER = SEPARABLE__DEPTHWISE_REGULARIZER;
+
+	/**
+	 * The feature id for the '<em><b>Poitnwise regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV2_D__POITNWISE_REGULARIZER = SEPARABLE__POITNWISE_REGULARIZER;
+
+	/**
+	 * The feature id for the '<em><b>Depthwise constraint</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV2_D__DEPTHWISE_CONSTRAINT = SEPARABLE__DEPTHWISE_CONSTRAINT;
+
+	/**
+	 * The feature id for the '<em><b>Pointwise constraint</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV2_D__POINTWISE_CONSTRAINT = SEPARABLE__POINTWISE_CONSTRAINT;
+
+	/**
+	 * The number of structural features of the '<em>Separable Conv2 D</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV2_D_FEATURE_COUNT = SEPARABLE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Separable Conv2 D</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV2_D_OPERATION_COUNT = SEPARABLE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.SeparableConv1DImpl <em>Separable Conv1 D</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.SeparableConv1DImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#getSeparableConv1D()
+	 * @generated
+	 */
+	int SEPARABLE_CONV1_D = 15;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV1_D__BASE_CLASS = SEPARABLE__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV1_D__NAME = SEPARABLE__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV1_D__DATA = SEPARABLE__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV1_D__REQUIRES_GRAD = SEPARABLE__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV1_D__SUB_MODULE = SEPARABLE__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV1_D__OPTIMIZER = SEPARABLE__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV1_D__LOSS = SEPARABLE__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV1_D__KERNEL_SIZE = SEPARABLE__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV1_D__STRIDE = SEPARABLE__STRIDE;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV1_D__PADDING = SEPARABLE__PADDING;
+
+	/**
+	 * The feature id for the '<em><b>Dilation</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV1_D__DILATION = SEPARABLE__DILATION;
+
+	/**
+	 * The feature id for the '<em><b>In channels</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV1_D__IN_CHANNELS = SEPARABLE__IN_CHANNELS;
+
+	/**
+	 * The feature id for the '<em><b>Groups</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV1_D__GROUPS = SEPARABLE__GROUPS;
+
+	/**
+	 * The feature id for the '<em><b>Biais</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV1_D__BIAIS = SEPARABLE__BIAIS;
+
+	/**
+	 * The feature id for the '<em><b>Padding mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV1_D__PADDING_MODE = SEPARABLE__PADDING_MODE;
+
+	/**
+	 * The feature id for the '<em><b>Data format</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV1_D__DATA_FORMAT = SEPARABLE__DATA_FORMAT;
+
+	/**
+	 * The feature id for the '<em><b>Dilation rate</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV1_D__DILATION_RATE = SEPARABLE__DILATION_RATE;
+
+	/**
+	 * The feature id for the '<em><b>Activation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV1_D__ACTIVATION = SEPARABLE__ACTIVATION;
+
+	/**
+	 * The feature id for the '<em><b>Bias initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV1_D__BIAS_INITIALIZER = SEPARABLE__BIAS_INITIALIZER;
+
+	/**
+	 * The feature id for the '<em><b>Activity regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV1_D__ACTIVITY_REGULARIZER = SEPARABLE__ACTIVITY_REGULARIZER;
+
+	/**
+	 * The feature id for the '<em><b>Bias constraint</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV1_D__BIAS_CONSTRAINT = SEPARABLE__BIAS_CONSTRAINT;
+
+	/**
+	 * The feature id for the '<em><b>Bias regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV1_D__BIAS_REGULARIZER = SEPARABLE__BIAS_REGULARIZER;
+
+	/**
+	 * The feature id for the '<em><b>Out channels</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV1_D__OUT_CHANNELS = SEPARABLE__OUT_CHANNELS;
+
+	/**
+	 * The feature id for the '<em><b>Depth multiplier</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV1_D__DEPTH_MULTIPLIER = SEPARABLE__DEPTH_MULTIPLIER;
+
+	/**
+	 * The feature id for the '<em><b>Depthwise initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV1_D__DEPTHWISE_INITIALIZER = SEPARABLE__DEPTHWISE_INITIALIZER;
+
+	/**
+	 * The feature id for the '<em><b>Pointwise initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV1_D__POINTWISE_INITIALIZER = SEPARABLE__POINTWISE_INITIALIZER;
+
+	/**
+	 * The feature id for the '<em><b>Depthwise regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV1_D__DEPTHWISE_REGULARIZER = SEPARABLE__DEPTHWISE_REGULARIZER;
+
+	/**
+	 * The feature id for the '<em><b>Poitnwise regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV1_D__POITNWISE_REGULARIZER = SEPARABLE__POITNWISE_REGULARIZER;
+
+	/**
+	 * The feature id for the '<em><b>Depthwise constraint</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV1_D__DEPTHWISE_CONSTRAINT = SEPARABLE__DEPTHWISE_CONSTRAINT;
+
+	/**
+	 * The feature id for the '<em><b>Pointwise constraint</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV1_D__POINTWISE_CONSTRAINT = SEPARABLE__POINTWISE_CONSTRAINT;
+
+	/**
+	 * The number of structural features of the '<em>Separable Conv1 D</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV1_D_FEATURE_COUNT = SEPARABLE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Separable Conv1 D</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SEPARABLE_CONV1_D_OPERATION_COUNT = SEPARABLE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.DepthwiseConv2DImpl <em>Depthwise Conv2 D</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.DepthwiseConv2DImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#getDepthwiseConv2D()
+	 * @generated
+	 */
+	int DEPTHWISE_CONV2_D = 16;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPTHWISE_CONV2_D__BASE_CLASS = CONVOLUTION__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPTHWISE_CONV2_D__NAME = CONVOLUTION__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPTHWISE_CONV2_D__DATA = CONVOLUTION__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPTHWISE_CONV2_D__REQUIRES_GRAD = CONVOLUTION__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPTHWISE_CONV2_D__SUB_MODULE = CONVOLUTION__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPTHWISE_CONV2_D__OPTIMIZER = CONVOLUTION__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPTHWISE_CONV2_D__LOSS = CONVOLUTION__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPTHWISE_CONV2_D__KERNEL_SIZE = CONVOLUTION__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPTHWISE_CONV2_D__STRIDE = CONVOLUTION__STRIDE;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPTHWISE_CONV2_D__PADDING = CONVOLUTION__PADDING;
+
+	/**
+	 * The feature id for the '<em><b>Dilation</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPTHWISE_CONV2_D__DILATION = CONVOLUTION__DILATION;
+
+	/**
+	 * The feature id for the '<em><b>In channels</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPTHWISE_CONV2_D__IN_CHANNELS = CONVOLUTION__IN_CHANNELS;
+
+	/**
+	 * The feature id for the '<em><b>Groups</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPTHWISE_CONV2_D__GROUPS = CONVOLUTION__GROUPS;
+
+	/**
+	 * The feature id for the '<em><b>Biais</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPTHWISE_CONV2_D__BIAIS = CONVOLUTION__BIAIS;
+
+	/**
+	 * The feature id for the '<em><b>Padding mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPTHWISE_CONV2_D__PADDING_MODE = CONVOLUTION__PADDING_MODE;
+
+	/**
+	 * The feature id for the '<em><b>Data format</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPTHWISE_CONV2_D__DATA_FORMAT = CONVOLUTION__DATA_FORMAT;
+
+	/**
+	 * The feature id for the '<em><b>Dilation rate</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPTHWISE_CONV2_D__DILATION_RATE = CONVOLUTION__DILATION_RATE;
+
+	/**
+	 * The feature id for the '<em><b>Activation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPTHWISE_CONV2_D__ACTIVATION = CONVOLUTION__ACTIVATION;
+
+	/**
+	 * The feature id for the '<em><b>Bias initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPTHWISE_CONV2_D__BIAS_INITIALIZER = CONVOLUTION__BIAS_INITIALIZER;
+
+	/**
+	 * The feature id for the '<em><b>Activity regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPTHWISE_CONV2_D__ACTIVITY_REGULARIZER = CONVOLUTION__ACTIVITY_REGULARIZER;
+
+	/**
+	 * The feature id for the '<em><b>Bias constraint</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPTHWISE_CONV2_D__BIAS_CONSTRAINT = CONVOLUTION__BIAS_CONSTRAINT;
+
+	/**
+	 * The feature id for the '<em><b>Bias regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPTHWISE_CONV2_D__BIAS_REGULARIZER = CONVOLUTION__BIAS_REGULARIZER;
+
+	/**
+	 * The feature id for the '<em><b>Depth multiplier</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPTHWISE_CONV2_D__DEPTH_MULTIPLIER = CONVOLUTION_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Depthwise initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPTHWISE_CONV2_D__DEPTHWISE_INITIALIZER = CONVOLUTION_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Depthwise regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPTHWISE_CONV2_D__DEPTHWISE_REGULARIZER = CONVOLUTION_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Depthwise constraint</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPTHWISE_CONV2_D__DEPTHWISE_CONSTRAINT = CONVOLUTION_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the '<em>Depthwise Conv2 D</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPTHWISE_CONV2_D_FEATURE_COUNT = CONVOLUTION_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of operations of the '<em>Depthwise Conv2 D</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEPTHWISE_CONV2_D_OPERATION_COUNT = CONVOLUTION_OPERATION_COUNT + 0;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution <em>Convolution</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Convolution</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution
+	 * @generated
+	 */
+	EClass getConvolution();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getIn_channels <em>In channels</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>In channels</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getIn_channels()
+	 * @see #getConvolution()
+	 * @generated
+	 */
+	EAttribute getConvolution_In_channels();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getGroups <em>Groups</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Groups</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getGroups()
+	 * @see #getConvolution()
+	 * @generated
+	 */
+	EAttribute getConvolution_Groups();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#isBiais <em>Biais</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Biais</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#isBiais()
+	 * @see #getConvolution()
+	 * @generated
+	 */
+	EAttribute getConvolution_Biais();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getPadding_mode <em>Padding mode</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Padding mode</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getPadding_mode()
+	 * @see #getConvolution()
+	 * @generated
+	 */
+	EAttribute getConvolution_Padding_mode();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getData_format <em>Data format</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Data format</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getData_format()
+	 * @see #getConvolution()
+	 * @generated
+	 */
+	EAttribute getConvolution_Data_format();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getDilation_rate <em>Dilation rate</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Dilation rate</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getDilation_rate()
+	 * @see #getConvolution()
+	 * @generated
+	 */
+	EAttribute getConvolution_Dilation_rate();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getActivation <em>Activation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Activation</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getActivation()
+	 * @see #getConvolution()
+	 * @generated
+	 */
+	EAttribute getConvolution_Activation();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getBias_initializer <em>Bias initializer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Bias initializer</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getBias_initializer()
+	 * @see #getConvolution()
+	 * @generated
+	 */
+	EAttribute getConvolution_Bias_initializer();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getActivity_regularizer <em>Activity regularizer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Activity regularizer</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getActivity_regularizer()
+	 * @see #getConvolution()
+	 * @generated
+	 */
+	EAttribute getConvolution_Activity_regularizer();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getBias_constraint <em>Bias constraint</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Bias constraint</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getBias_constraint()
+	 * @see #getConvolution()
+	 * @generated
+	 */
+	EAttribute getConvolution_Bias_constraint();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getBias_regularizer <em>Bias regularizer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Bias regularizer</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution#getBias_regularizer()
+	 * @see #getConvolution()
+	 * @generated
+	 */
+	EAttribute getConvolution_Bias_regularizer();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layers <em>Convolution layers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Convolution layers</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layers
+	 * @generated
+	 */
+	EClass getConvolution_layers();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layers#getKernel_size <em>Kernel size</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Kernel size</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layers#getKernel_size()
+	 * @see #getConvolution_layers()
+	 * @generated
+	 */
+	EAttribute getConvolution_layers_Kernel_size();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layers#getStride <em>Stride</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Stride</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layers#getStride()
+	 * @see #getConvolution_layers()
+	 * @generated
+	 */
+	EAttribute getConvolution_layers_Stride();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layers#getPadding <em>Padding</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Padding</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layers#getPadding()
+	 * @see #getConvolution_layers()
+	 * @generated
+	 */
+	EAttribute getConvolution_layers_Padding();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layers#getDilation <em>Dilation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Dilation</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layers#getDilation()
+	 * @see #getConvolution_layers()
+	 * @generated
+	 */
+	EAttribute getConvolution_layers_Dilation();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Unfold <em>Unfold</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Unfold</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Unfold
+	 * @generated
+	 */
+	EClass getUnfold();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Fold <em>Fold</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Fold</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Fold
+	 * @generated
+	 */
+	EClass getFold();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Fold#getOutput_size <em>Output size</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Output size</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Fold#getOutput_size()
+	 * @see #getFold()
+	 * @generated
+	 */
+	EAttribute getFold_Output_size();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Conv2d <em>Conv2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Conv2d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Conv2d
+	 * @generated
+	 */
+	EClass getConv2d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.basic <em>basic</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>basic</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.basic
+	 * @generated
+	 */
+	EClass getbasic();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.basic#getKernel_initializer <em>Kernel initializer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Kernel initializer</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.basic#getKernel_initializer()
+	 * @see #getbasic()
+	 * @generated
+	 */
+	EAttribute getbasic_Kernel_initializer();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.basic#getKernel_constraint <em>Kernel constraint</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Kernel constraint</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.basic#getKernel_constraint()
+	 * @see #getbasic()
+	 * @generated
+	 */
+	EReference getbasic_Kernel_constraint();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.basic#getKernel_regularizer <em>Kernel regularizer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Kernel regularizer</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.basic#getKernel_regularizer()
+	 * @see #getbasic()
+	 * @generated
+	 */
+	EAttribute getbasic_Kernel_regularizer();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.LayerWithFilter <em>Layer With Filter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Layer With Filter</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.LayerWithFilter
+	 * @generated
+	 */
+	EClass getLayerWithFilter();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.LayerWithFilter#getOut_channels <em>Out channels</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Out channels</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.LayerWithFilter#getOut_channels()
+	 * @see #getLayerWithFilter()
+	 * @generated
+	 */
+	EAttribute getLayerWithFilter_Out_channels();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Conv3d <em>Conv3d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Conv3d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Conv3d
+	 * @generated
+	 */
+	EClass getConv3d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.ConvTranspose1d <em>Conv Transpose1d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Conv Transpose1d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.ConvTranspose1d
+	 * @generated
+	 */
+	EClass getConvTranspose1d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.ConvTranspose2d <em>Conv Transpose2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Conv Transpose2d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.ConvTranspose2d
+	 * @generated
+	 */
+	EClass getConvTranspose2d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.transpose <em>transpose</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>transpose</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.transpose
+	 * @generated
+	 */
+	EClass gettranspose();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.transpose#getOutput_padding <em>Output padding</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Output padding</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.transpose#getOutput_padding()
+	 * @see #gettranspose()
+	 * @generated
+	 */
+	EAttribute gettranspose_Output_padding();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.ConvTranspose3d <em>Conv Transpose3d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Conv Transpose3d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.ConvTranspose3d
+	 * @generated
+	 */
+	EClass getConvTranspose3d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Conv1d <em>Conv1d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Conv1d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Conv1d
+	 * @generated
+	 */
+	EClass getConv1d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Separable <em>Separable</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Separable</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Separable
+	 * @generated
+	 */
+	EClass getSeparable();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Separable#getDepth_multiplier <em>Depth multiplier</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Depth multiplier</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Separable#getDepth_multiplier()
+	 * @see #getSeparable()
+	 * @generated
+	 */
+	EAttribute getSeparable_Depth_multiplier();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Separable#getDepthwise_initializer <em>Depthwise initializer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Depthwise initializer</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Separable#getDepthwise_initializer()
+	 * @see #getSeparable()
+	 * @generated
+	 */
+	EAttribute getSeparable_Depthwise_initializer();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Separable#getPointwise_initializer <em>Pointwise initializer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Pointwise initializer</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Separable#getPointwise_initializer()
+	 * @see #getSeparable()
+	 * @generated
+	 */
+	EAttribute getSeparable_Pointwise_initializer();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Separable#getDepthwise_regularizer <em>Depthwise regularizer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Depthwise regularizer</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Separable#getDepthwise_regularizer()
+	 * @see #getSeparable()
+	 * @generated
+	 */
+	EAttribute getSeparable_Depthwise_regularizer();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Separable#getPoitnwise_regularizer <em>Poitnwise regularizer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Poitnwise regularizer</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Separable#getPoitnwise_regularizer()
+	 * @see #getSeparable()
+	 * @generated
+	 */
+	EAttribute getSeparable_Poitnwise_regularizer();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Separable#getDepthwise_constraint <em>Depthwise constraint</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Depthwise constraint</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Separable#getDepthwise_constraint()
+	 * @see #getSeparable()
+	 * @generated
+	 */
+	EAttribute getSeparable_Depthwise_constraint();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Separable#getPointwise_constraint <em>Pointwise constraint</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Pointwise constraint</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Separable#getPointwise_constraint()
+	 * @see #getSeparable()
+	 * @generated
+	 */
+	EAttribute getSeparable_Pointwise_constraint();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.SeparableConv2D <em>Separable Conv2 D</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Separable Conv2 D</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.SeparableConv2D
+	 * @generated
+	 */
+	EClass getSeparableConv2D();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.SeparableConv1D <em>Separable Conv1 D</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Separable Conv1 D</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.SeparableConv1D
+	 * @generated
+	 */
+	EClass getSeparableConv1D();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.DepthwiseConv2D <em>Depthwise Conv2 D</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Depthwise Conv2 D</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.DepthwiseConv2D
+	 * @generated
+	 */
+	EClass getDepthwiseConv2D();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.DepthwiseConv2D#getDepth_multiplier <em>Depth multiplier</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Depth multiplier</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.DepthwiseConv2D#getDepth_multiplier()
+	 * @see #getDepthwiseConv2D()
+	 * @generated
+	 */
+	EAttribute getDepthwiseConv2D_Depth_multiplier();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.DepthwiseConv2D#getDepthwise_initializer <em>Depthwise initializer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Depthwise initializer</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.DepthwiseConv2D#getDepthwise_initializer()
+	 * @see #getDepthwiseConv2D()
+	 * @generated
+	 */
+	EAttribute getDepthwiseConv2D_Depthwise_initializer();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.DepthwiseConv2D#getDepthwise_regularizer <em>Depthwise regularizer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Depthwise regularizer</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.DepthwiseConv2D#getDepthwise_regularizer()
+	 * @see #getDepthwiseConv2D()
+	 * @generated
+	 */
+	EAttribute getDepthwiseConv2D_Depthwise_regularizer();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.DepthwiseConv2D#getDepthwise_constraint <em>Depthwise constraint</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Depthwise constraint</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.DepthwiseConv2D#getDepthwise_constraint()
+	 * @see #getDepthwiseConv2D()
+	 * @generated
+	 */
+	EAttribute getDepthwiseConv2D_Depthwise_constraint();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	Convolution_layersFactory getConvolution_layersFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.ConvolutionImpl <em>Convolution</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.ConvolutionImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#getConvolution()
+		 * @generated
+		 */
+		EClass CONVOLUTION = eINSTANCE.getConvolution();
+
+		/**
+		 * The meta object literal for the '<em><b>In channels</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CONVOLUTION__IN_CHANNELS = eINSTANCE.getConvolution_In_channels();
+
+		/**
+		 * The meta object literal for the '<em><b>Groups</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CONVOLUTION__GROUPS = eINSTANCE.getConvolution_Groups();
+
+		/**
+		 * The meta object literal for the '<em><b>Biais</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CONVOLUTION__BIAIS = eINSTANCE.getConvolution_Biais();
+
+		/**
+		 * The meta object literal for the '<em><b>Padding mode</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CONVOLUTION__PADDING_MODE = eINSTANCE.getConvolution_Padding_mode();
+
+		/**
+		 * The meta object literal for the '<em><b>Data format</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CONVOLUTION__DATA_FORMAT = eINSTANCE.getConvolution_Data_format();
+
+		/**
+		 * The meta object literal for the '<em><b>Dilation rate</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CONVOLUTION__DILATION_RATE = eINSTANCE.getConvolution_Dilation_rate();
+
+		/**
+		 * The meta object literal for the '<em><b>Activation</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CONVOLUTION__ACTIVATION = eINSTANCE.getConvolution_Activation();
+
+		/**
+		 * The meta object literal for the '<em><b>Bias initializer</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CONVOLUTION__BIAS_INITIALIZER = eINSTANCE.getConvolution_Bias_initializer();
+
+		/**
+		 * The meta object literal for the '<em><b>Activity regularizer</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CONVOLUTION__ACTIVITY_REGULARIZER = eINSTANCE.getConvolution_Activity_regularizer();
+
+		/**
+		 * The meta object literal for the '<em><b>Bias constraint</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CONVOLUTION__BIAS_CONSTRAINT = eINSTANCE.getConvolution_Bias_constraint();
+
+		/**
+		 * The meta object literal for the '<em><b>Bias regularizer</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CONVOLUTION__BIAS_REGULARIZER = eINSTANCE.getConvolution_Bias_regularizer();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersImpl <em>Convolution layers</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#getConvolution_layers()
+		 * @generated
+		 */
+		EClass CONVOLUTION_LAYERS = eINSTANCE.getConvolution_layers();
+
+		/**
+		 * The meta object literal for the '<em><b>Kernel size</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CONVOLUTION_LAYERS__KERNEL_SIZE = eINSTANCE.getConvolution_layers_Kernel_size();
+
+		/**
+		 * The meta object literal for the '<em><b>Stride</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CONVOLUTION_LAYERS__STRIDE = eINSTANCE.getConvolution_layers_Stride();
+
+		/**
+		 * The meta object literal for the '<em><b>Padding</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CONVOLUTION_LAYERS__PADDING = eINSTANCE.getConvolution_layers_Padding();
+
+		/**
+		 * The meta object literal for the '<em><b>Dilation</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CONVOLUTION_LAYERS__DILATION = eINSTANCE.getConvolution_layers_Dilation();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.UnfoldImpl <em>Unfold</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.UnfoldImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#getUnfold()
+		 * @generated
+		 */
+		EClass UNFOLD = eINSTANCE.getUnfold();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.FoldImpl <em>Fold</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.FoldImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#getFold()
+		 * @generated
+		 */
+		EClass FOLD = eINSTANCE.getFold();
+
+		/**
+		 * The meta object literal for the '<em><b>Output size</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute FOLD__OUTPUT_SIZE = eINSTANCE.getFold_Output_size();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Conv2dImpl <em>Conv2d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Conv2dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#getConv2d()
+		 * @generated
+		 */
+		EClass CONV2D = eINSTANCE.getConv2d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.basicImpl <em>basic</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.basicImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#getbasic()
+		 * @generated
+		 */
+		EClass BASIC = eINSTANCE.getbasic();
+
+		/**
+		 * The meta object literal for the '<em><b>Kernel initializer</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute BASIC__KERNEL_INITIALIZER = eINSTANCE.getbasic_Kernel_initializer();
+
+		/**
+		 * The meta object literal for the '<em><b>Kernel constraint</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference BASIC__KERNEL_CONSTRAINT = eINSTANCE.getbasic_Kernel_constraint();
+
+		/**
+		 * The meta object literal for the '<em><b>Kernel regularizer</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute BASIC__KERNEL_REGULARIZER = eINSTANCE.getbasic_Kernel_regularizer();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.LayerWithFilterImpl <em>Layer With Filter</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.LayerWithFilterImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#getLayerWithFilter()
+		 * @generated
+		 */
+		EClass LAYER_WITH_FILTER = eINSTANCE.getLayerWithFilter();
+
+		/**
+		 * The meta object literal for the '<em><b>Out channels</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LAYER_WITH_FILTER__OUT_CHANNELS = eINSTANCE.getLayerWithFilter_Out_channels();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Conv3dImpl <em>Conv3d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Conv3dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#getConv3d()
+		 * @generated
+		 */
+		EClass CONV3D = eINSTANCE.getConv3d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.ConvTranspose1dImpl <em>Conv Transpose1d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.ConvTranspose1dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#getConvTranspose1d()
+		 * @generated
+		 */
+		EClass CONV_TRANSPOSE1D = eINSTANCE.getConvTranspose1d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.ConvTranspose2dImpl <em>Conv Transpose2d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.ConvTranspose2dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#getConvTranspose2d()
+		 * @generated
+		 */
+		EClass CONV_TRANSPOSE2D = eINSTANCE.getConvTranspose2d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.transposeImpl <em>transpose</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.transposeImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#gettranspose()
+		 * @generated
+		 */
+		EClass TRANSPOSE = eINSTANCE.gettranspose();
+
+		/**
+		 * The meta object literal for the '<em><b>Output padding</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute TRANSPOSE__OUTPUT_PADDING = eINSTANCE.gettranspose_Output_padding();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.ConvTranspose3dImpl <em>Conv Transpose3d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.ConvTranspose3dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#getConvTranspose3d()
+		 * @generated
+		 */
+		EClass CONV_TRANSPOSE3D = eINSTANCE.getConvTranspose3d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Conv1dImpl <em>Conv1d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Conv1dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#getConv1d()
+		 * @generated
+		 */
+		EClass CONV1D = eINSTANCE.getConv1d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.SeparableImpl <em>Separable</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.SeparableImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#getSeparable()
+		 * @generated
+		 */
+		EClass SEPARABLE = eINSTANCE.getSeparable();
+
+		/**
+		 * The meta object literal for the '<em><b>Depth multiplier</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SEPARABLE__DEPTH_MULTIPLIER = eINSTANCE.getSeparable_Depth_multiplier();
+
+		/**
+		 * The meta object literal for the '<em><b>Depthwise initializer</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SEPARABLE__DEPTHWISE_INITIALIZER = eINSTANCE.getSeparable_Depthwise_initializer();
+
+		/**
+		 * The meta object literal for the '<em><b>Pointwise initializer</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SEPARABLE__POINTWISE_INITIALIZER = eINSTANCE.getSeparable_Pointwise_initializer();
+
+		/**
+		 * The meta object literal for the '<em><b>Depthwise regularizer</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SEPARABLE__DEPTHWISE_REGULARIZER = eINSTANCE.getSeparable_Depthwise_regularizer();
+
+		/**
+		 * The meta object literal for the '<em><b>Poitnwise regularizer</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SEPARABLE__POITNWISE_REGULARIZER = eINSTANCE.getSeparable_Poitnwise_regularizer();
+
+		/**
+		 * The meta object literal for the '<em><b>Depthwise constraint</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SEPARABLE__DEPTHWISE_CONSTRAINT = eINSTANCE.getSeparable_Depthwise_constraint();
+
+		/**
+		 * The meta object literal for the '<em><b>Pointwise constraint</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SEPARABLE__POINTWISE_CONSTRAINT = eINSTANCE.getSeparable_Pointwise_constraint();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.SeparableConv2DImpl <em>Separable Conv2 D</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.SeparableConv2DImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#getSeparableConv2D()
+		 * @generated
+		 */
+		EClass SEPARABLE_CONV2_D = eINSTANCE.getSeparableConv2D();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.SeparableConv1DImpl <em>Separable Conv1 D</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.SeparableConv1DImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#getSeparableConv1D()
+		 * @generated
+		 */
+		EClass SEPARABLE_CONV1_D = eINSTANCE.getSeparableConv1D();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.DepthwiseConv2DImpl <em>Depthwise Conv2 D</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.DepthwiseConv2DImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl#getDepthwiseConv2D()
+		 * @generated
+		 */
+		EClass DEPTHWISE_CONV2_D = eINSTANCE.getDepthwiseConv2D();
+
+		/**
+		 * The meta object literal for the '<em><b>Depth multiplier</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DEPTHWISE_CONV2_D__DEPTH_MULTIPLIER = eINSTANCE.getDepthwiseConv2D_Depth_multiplier();
+
+		/**
+		 * The meta object literal for the '<em><b>Depthwise initializer</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DEPTHWISE_CONV2_D__DEPTHWISE_INITIALIZER = eINSTANCE.getDepthwiseConv2D_Depthwise_initializer();
+
+		/**
+		 * The meta object literal for the '<em><b>Depthwise regularizer</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DEPTHWISE_CONV2_D__DEPTHWISE_REGULARIZER = eINSTANCE.getDepthwiseConv2D_Depthwise_regularizer();
+
+		/**
+		 * The meta object literal for the '<em><b>Depthwise constraint</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DEPTHWISE_CONV2_D__DEPTHWISE_CONSTRAINT = eINSTANCE.getDepthwiseConv2D_Depthwise_constraint();
+
+	}
+
+} //Convolution_layersPackage
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/DepthwiseConv2D.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/DepthwiseConv2D.java
new file mode 100644
index 0000000..40f9dc4
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/DepthwiseConv2D.java
@@ -0,0 +1,130 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Depthwise Conv2 D</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.DepthwiseConv2D#getDepth_multiplier <em>Depth multiplier</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.DepthwiseConv2D#getDepthwise_initializer <em>Depthwise initializer</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.DepthwiseConv2D#getDepthwise_regularizer <em>Depthwise regularizer</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.DepthwiseConv2D#getDepthwise_constraint <em>Depthwise constraint</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getDepthwiseConv2D()
+ * @model
+ * @generated
+ */
+public interface DepthwiseConv2D extends Convolution {
+	/**
+	 * Returns the value of the '<em><b>Depth multiplier</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.Integer}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Depth multiplier</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Depth multiplier</em>' attribute list.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getDepthwiseConv2D_Depth_multiplier()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	EList<Integer> getDepth_multiplier();
+
+	/**
+	 * Returns the value of the '<em><b>Depthwise initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Depthwise initializer</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Depthwise initializer</em>' attribute.
+	 * @see #setDepthwise_initializer(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getDepthwiseConv2D_Depthwise_initializer()
+	 * @model dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getDepthwise_initializer();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.DepthwiseConv2D#getDepthwise_initializer <em>Depthwise initializer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Depthwise initializer</em>' attribute.
+	 * @see #getDepthwise_initializer()
+	 * @generated
+	 */
+	void setDepthwise_initializer(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Depthwise regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Depthwise regularizer</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Depthwise regularizer</em>' attribute.
+	 * @see #setDepthwise_regularizer(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getDepthwiseConv2D_Depthwise_regularizer()
+	 * @model dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getDepthwise_regularizer();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.DepthwiseConv2D#getDepthwise_regularizer <em>Depthwise regularizer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Depthwise regularizer</em>' attribute.
+	 * @see #getDepthwise_regularizer()
+	 * @generated
+	 */
+	void setDepthwise_regularizer(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Depthwise constraint</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Depthwise constraint</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Depthwise constraint</em>' attribute.
+	 * @see #setDepthwise_constraint(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getDepthwiseConv2D_Depthwise_constraint()
+	 * @model dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getDepthwise_constraint();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.DepthwiseConv2D#getDepthwise_constraint <em>Depthwise constraint</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Depthwise constraint</em>' attribute.
+	 * @see #getDepthwise_constraint()
+	 * @generated
+	 */
+	void setDepthwise_constraint(String value);
+
+} // DepthwiseConv2D
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/Fold.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/Fold.java
new file mode 100644
index 0000000..3347752
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/Fold.java
@@ -0,0 +1,49 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Fold</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Fold#getOutput_size <em>Output size</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getFold()
+ * @model
+ * @generated
+ */
+public interface Fold extends Convolution_layers {
+	/**
+	 * Returns the value of the '<em><b>Output size</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.Integer}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Output size</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Output size</em>' attribute list.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getFold_Output_size()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	EList<Integer> getOutput_size();
+
+} // Fold
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/LayerWithFilter.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/LayerWithFilter.java
new file mode 100644
index 0000000..0816f57
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/LayerWithFilter.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Layer With Filter</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.LayerWithFilter#getOut_channels <em>Out channels</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getLayerWithFilter()
+ * @model abstract="true"
+ * @generated
+ */
+public interface LayerWithFilter extends Convolution {
+	/**
+	 * Returns the value of the '<em><b>Out channels</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Out channels</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Out channels</em>' attribute.
+	 * @see #setOut_channels(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getLayerWithFilter_Out_channels()
+	 * @model dataType="org.eclipse.uml2.types.Integer" required="true" ordered="false"
+	 * @generated
+	 */
+	int getOut_channels();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.LayerWithFilter#getOut_channels <em>Out channels</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Out channels</em>' attribute.
+	 * @see #getOut_channels()
+	 * @generated
+	 */
+	void setOut_channels(int value);
+
+} // LayerWithFilter
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/Separable.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/Separable.java
new file mode 100644
index 0000000..352c464
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/Separable.java
@@ -0,0 +1,211 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Separable</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Separable#getDepth_multiplier <em>Depth multiplier</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Separable#getDepthwise_initializer <em>Depthwise initializer</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Separable#getPointwise_initializer <em>Pointwise initializer</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Separable#getDepthwise_regularizer <em>Depthwise regularizer</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Separable#getPoitnwise_regularizer <em>Poitnwise regularizer</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Separable#getDepthwise_constraint <em>Depthwise constraint</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Separable#getPointwise_constraint <em>Pointwise constraint</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getSeparable()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Separable extends LayerWithFilter {
+	/**
+	 * Returns the value of the '<em><b>Depth multiplier</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.Integer}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Depth multiplier</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Depth multiplier</em>' attribute list.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getSeparable_Depth_multiplier()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	EList<Integer> getDepth_multiplier();
+
+	/**
+	 * Returns the value of the '<em><b>Depthwise initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Depthwise initializer</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Depthwise initializer</em>' attribute.
+	 * @see #setDepthwise_initializer(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getSeparable_Depthwise_initializer()
+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+	 * @generated
+	 */
+	String getDepthwise_initializer();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Separable#getDepthwise_initializer <em>Depthwise initializer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Depthwise initializer</em>' attribute.
+	 * @see #getDepthwise_initializer()
+	 * @generated
+	 */
+	void setDepthwise_initializer(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Pointwise initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Pointwise initializer</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Pointwise initializer</em>' attribute.
+	 * @see #setPointwise_initializer(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getSeparable_Pointwise_initializer()
+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+	 * @generated
+	 */
+	String getPointwise_initializer();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Separable#getPointwise_initializer <em>Pointwise initializer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Pointwise initializer</em>' attribute.
+	 * @see #getPointwise_initializer()
+	 * @generated
+	 */
+	void setPointwise_initializer(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Depthwise regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Depthwise regularizer</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Depthwise regularizer</em>' attribute.
+	 * @see #setDepthwise_regularizer(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getSeparable_Depthwise_regularizer()
+	 * @model dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getDepthwise_regularizer();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Separable#getDepthwise_regularizer <em>Depthwise regularizer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Depthwise regularizer</em>' attribute.
+	 * @see #getDepthwise_regularizer()
+	 * @generated
+	 */
+	void setDepthwise_regularizer(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Poitnwise regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Poitnwise regularizer</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Poitnwise regularizer</em>' attribute.
+	 * @see #setPoitnwise_regularizer(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getSeparable_Poitnwise_regularizer()
+	 * @model dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getPoitnwise_regularizer();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Separable#getPoitnwise_regularizer <em>Poitnwise regularizer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Poitnwise regularizer</em>' attribute.
+	 * @see #getPoitnwise_regularizer()
+	 * @generated
+	 */
+	void setPoitnwise_regularizer(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Depthwise constraint</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Depthwise constraint</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Depthwise constraint</em>' attribute.
+	 * @see #setDepthwise_constraint(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getSeparable_Depthwise_constraint()
+	 * @model dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getDepthwise_constraint();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Separable#getDepthwise_constraint <em>Depthwise constraint</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Depthwise constraint</em>' attribute.
+	 * @see #getDepthwise_constraint()
+	 * @generated
+	 */
+	void setDepthwise_constraint(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Pointwise constraint</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Pointwise constraint</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Pointwise constraint</em>' attribute.
+	 * @see #setPointwise_constraint(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getSeparable_Pointwise_constraint()
+	 * @model dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getPointwise_constraint();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Separable#getPointwise_constraint <em>Pointwise constraint</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Pointwise constraint</em>' attribute.
+	 * @see #getPointwise_constraint()
+	 * @generated
+	 */
+	void setPointwise_constraint(String value);
+
+} // Separable
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/SeparableConv1D.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/SeparableConv1D.java
new file mode 100644
index 0000000..adf445b
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/SeparableConv1D.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Separable Conv1 D</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getSeparableConv1D()
+ * @model
+ * @generated
+ */
+public interface SeparableConv1D extends Separable {
+} // SeparableConv1D
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/SeparableConv2D.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/SeparableConv2D.java
new file mode 100644
index 0000000..7058fd2
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/SeparableConv2D.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Separable Conv2 D</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getSeparableConv2D()
+ * @model
+ * @generated
+ */
+public interface SeparableConv2D extends Separable {
+} // SeparableConv2D
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/Unfold.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/Unfold.java
new file mode 100644
index 0000000..c9cef55
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/Unfold.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Unfold</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getUnfold()
+ * @model
+ * @generated
+ */
+public interface Unfold extends Convolution_layers {
+} // Unfold
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/basic.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/basic.java
new file mode 100644
index 0000000..daee835
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/basic.java
@@ -0,0 +1,113 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.constraints;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>basic</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.basic#getKernel_initializer <em>Kernel initializer</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.basic#getKernel_constraint <em>Kernel constraint</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.basic#getKernel_regularizer <em>Kernel regularizer</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getbasic()
+ * @model abstract="true"
+ * @generated
+ */
+public interface basic extends LayerWithFilter {
+	/**
+	 * Returns the value of the '<em><b>Kernel initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Kernel initializer</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Kernel initializer</em>' attribute.
+	 * @see #setKernel_initializer(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getbasic_Kernel_initializer()
+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+	 * @generated
+	 */
+	String getKernel_initializer();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.basic#getKernel_initializer <em>Kernel initializer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Kernel initializer</em>' attribute.
+	 * @see #getKernel_initializer()
+	 * @generated
+	 */
+	void setKernel_initializer(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Kernel constraint</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Kernel constraint</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Kernel constraint</em>' reference.
+	 * @see #setKernel_constraint(constraints)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getbasic_Kernel_constraint()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	constraints getKernel_constraint();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.basic#getKernel_constraint <em>Kernel constraint</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Kernel constraint</em>' reference.
+	 * @see #getKernel_constraint()
+	 * @generated
+	 */
+	void setKernel_constraint(constraints value);
+
+	/**
+	 * Returns the value of the '<em><b>Kernel regularizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Kernel regularizer</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Kernel regularizer</em>' attribute.
+	 * @see #setKernel_regularizer(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#getbasic_Kernel_regularizer()
+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+	 * @generated
+	 */
+	String getKernel_regularizer();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.basic#getKernel_regularizer <em>Kernel regularizer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Kernel regularizer</em>' attribute.
+	 * @see #getKernel_regularizer()
+	 * @generated
+	 */
+	void setKernel_regularizer(String value);
+
+} // basic
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/Conv1dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/Conv1dImpl.java
new file mode 100644
index 0000000..75ee6b7
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/Conv1dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Conv1d;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Conv1d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class Conv1dImpl extends basicImpl implements Conv1d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Conv1dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Convolution_layersPackage.Literals.CONV1D;
+	}
+
+} //Conv1dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/Conv2dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/Conv2dImpl.java
new file mode 100644
index 0000000..04eb2f1
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/Conv2dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Conv2d;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Conv2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class Conv2dImpl extends basicImpl implements Conv2d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Conv2dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Convolution_layersPackage.Literals.CONV2D;
+	}
+
+} //Conv2dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/Conv3dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/Conv3dImpl.java
new file mode 100644
index 0000000..f6a0e99
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/Conv3dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Conv3d;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Conv3d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class Conv3dImpl extends basicImpl implements Conv3d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Conv3dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Convolution_layersPackage.Literals.CONV3D;
+	}
+
+} //Conv3dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/ConvTranspose1dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/ConvTranspose1dImpl.java
new file mode 100644
index 0000000..e6b0a29
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/ConvTranspose1dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.ConvTranspose1d;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Conv Transpose1d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ConvTranspose1dImpl extends LayerWithFilterImpl implements ConvTranspose1d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ConvTranspose1dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Convolution_layersPackage.Literals.CONV_TRANSPOSE1D;
+	}
+
+} //ConvTranspose1dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/ConvTranspose2dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/ConvTranspose2dImpl.java
new file mode 100644
index 0000000..5e7aabc
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/ConvTranspose2dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.ConvTranspose2d;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Conv Transpose2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ConvTranspose2dImpl extends transposeImpl implements ConvTranspose2d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ConvTranspose2dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Convolution_layersPackage.Literals.CONV_TRANSPOSE2D;
+	}
+
+} //ConvTranspose2dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/ConvTranspose3dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/ConvTranspose3dImpl.java
new file mode 100644
index 0000000..310635d
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/ConvTranspose3dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.ConvTranspose3d;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Conv Transpose3d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ConvTranspose3dImpl extends transposeImpl implements ConvTranspose3d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ConvTranspose3dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Convolution_layersPackage.Literals.CONV_TRANSPOSE3D;
+	}
+
+} //ConvTranspose3dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/ConvolutionImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/ConvolutionImpl.java
new file mode 100644
index 0000000..b369c96
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/ConvolutionImpl.java
@@ -0,0 +1,721 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Convolution</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.ConvolutionImpl#getIn_channels <em>In channels</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.ConvolutionImpl#getGroups <em>Groups</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.ConvolutionImpl#isBiais <em>Biais</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.ConvolutionImpl#getPadding_mode <em>Padding mode</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.ConvolutionImpl#getData_format <em>Data format</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.ConvolutionImpl#getDilation_rate <em>Dilation rate</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.ConvolutionImpl#getActivation <em>Activation</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.ConvolutionImpl#getBias_initializer <em>Bias initializer</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.ConvolutionImpl#getActivity_regularizer <em>Activity regularizer</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.ConvolutionImpl#getBias_constraint <em>Bias constraint</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.ConvolutionImpl#getBias_regularizer <em>Bias regularizer</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class ConvolutionImpl extends Convolution_layersImpl implements Convolution {
+	/**
+	 * The default value of the '{@link #getIn_channels() <em>In channels</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIn_channels()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int IN_CHANNELS_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getIn_channels() <em>In channels</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIn_channels()
+	 * @generated
+	 * @ordered
+	 */
+	protected int in_channels = IN_CHANNELS_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getGroups() <em>Groups</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGroups()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int GROUPS_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getGroups() <em>Groups</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGroups()
+	 * @generated
+	 * @ordered
+	 */
+	protected int groups = GROUPS_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isBiais() <em>Biais</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isBiais()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean BIAIS_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isBiais() <em>Biais</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isBiais()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean biais = BIAIS_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getPadding_mode() <em>Padding mode</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPadding_mode()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String PADDING_MODE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getPadding_mode() <em>Padding mode</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPadding_mode()
+	 * @generated
+	 * @ordered
+	 */
+	protected String padding_mode = PADDING_MODE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getData_format() <em>Data format</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getData_format()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DATA_FORMAT_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getData_format() <em>Data format</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getData_format()
+	 * @generated
+	 * @ordered
+	 */
+	protected String data_format = DATA_FORMAT_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getDilation_rate() <em>Dilation rate</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDilation_rate()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Integer> dilation_rate;
+
+	/**
+	 * The default value of the '{@link #getActivation() <em>Activation</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getActivation()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ACTIVATION_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getActivation() <em>Activation</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getActivation()
+	 * @generated
+	 * @ordered
+	 */
+	protected String activation = ACTIVATION_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getBias_initializer() <em>Bias initializer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBias_initializer()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String BIAS_INITIALIZER_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getBias_initializer() <em>Bias initializer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBias_initializer()
+	 * @generated
+	 * @ordered
+	 */
+	protected String bias_initializer = BIAS_INITIALIZER_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getActivity_regularizer() <em>Activity regularizer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getActivity_regularizer()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ACTIVITY_REGULARIZER_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getActivity_regularizer() <em>Activity regularizer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getActivity_regularizer()
+	 * @generated
+	 * @ordered
+	 */
+	protected String activity_regularizer = ACTIVITY_REGULARIZER_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getBias_constraint() <em>Bias constraint</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBias_constraint()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String BIAS_CONSTRAINT_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getBias_constraint() <em>Bias constraint</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBias_constraint()
+	 * @generated
+	 * @ordered
+	 */
+	protected String bias_constraint = BIAS_CONSTRAINT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getBias_regularizer() <em>Bias regularizer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBias_regularizer()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String BIAS_REGULARIZER_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getBias_regularizer() <em>Bias regularizer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBias_regularizer()
+	 * @generated
+	 * @ordered
+	 */
+	protected String bias_regularizer = BIAS_REGULARIZER_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ConvolutionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Convolution_layersPackage.Literals.CONVOLUTION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getIn_channels() {
+		return in_channels;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setIn_channels(int newIn_channels) {
+		int oldIn_channels = in_channels;
+		in_channels = newIn_channels;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Convolution_layersPackage.CONVOLUTION__IN_CHANNELS, oldIn_channels, in_channels));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getGroups() {
+		return groups;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setGroups(int newGroups) {
+		int oldGroups = groups;
+		groups = newGroups;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Convolution_layersPackage.CONVOLUTION__GROUPS, oldGroups, groups));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isBiais() {
+		return biais;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBiais(boolean newBiais) {
+		boolean oldBiais = biais;
+		biais = newBiais;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Convolution_layersPackage.CONVOLUTION__BIAIS, oldBiais, biais));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getPadding_mode() {
+		return padding_mode;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setPadding_mode(String newPadding_mode) {
+		String oldPadding_mode = padding_mode;
+		padding_mode = newPadding_mode;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Convolution_layersPackage.CONVOLUTION__PADDING_MODE, oldPadding_mode, padding_mode));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getData_format() {
+		return data_format;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setData_format(String newData_format) {
+		String oldData_format = data_format;
+		data_format = newData_format;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Convolution_layersPackage.CONVOLUTION__DATA_FORMAT, oldData_format, data_format));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Integer> getDilation_rate() {
+		if (dilation_rate == null) {
+			dilation_rate = new EDataTypeUniqueEList<Integer>(Integer.class, this, Convolution_layersPackage.CONVOLUTION__DILATION_RATE);
+		}
+		return dilation_rate;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getActivation() {
+		return activation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setActivation(String newActivation) {
+		String oldActivation = activation;
+		activation = newActivation;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Convolution_layersPackage.CONVOLUTION__ACTIVATION, oldActivation, activation));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getBias_initializer() {
+		return bias_initializer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBias_initializer(String newBias_initializer) {
+		String oldBias_initializer = bias_initializer;
+		bias_initializer = newBias_initializer;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Convolution_layersPackage.CONVOLUTION__BIAS_INITIALIZER, oldBias_initializer, bias_initializer));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getActivity_regularizer() {
+		return activity_regularizer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setActivity_regularizer(String newActivity_regularizer) {
+		String oldActivity_regularizer = activity_regularizer;
+		activity_regularizer = newActivity_regularizer;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Convolution_layersPackage.CONVOLUTION__ACTIVITY_REGULARIZER, oldActivity_regularizer, activity_regularizer));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getBias_constraint() {
+		return bias_constraint;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBias_constraint(String newBias_constraint) {
+		String oldBias_constraint = bias_constraint;
+		bias_constraint = newBias_constraint;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Convolution_layersPackage.CONVOLUTION__BIAS_CONSTRAINT, oldBias_constraint, bias_constraint));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getBias_regularizer() {
+		return bias_regularizer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBias_regularizer(String newBias_regularizer) {
+		String oldBias_regularizer = bias_regularizer;
+		bias_regularizer = newBias_regularizer;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Convolution_layersPackage.CONVOLUTION__BIAS_REGULARIZER, oldBias_regularizer, bias_regularizer));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Convolution_layersPackage.CONVOLUTION__IN_CHANNELS:
+				return getIn_channels();
+			case Convolution_layersPackage.CONVOLUTION__GROUPS:
+				return getGroups();
+			case Convolution_layersPackage.CONVOLUTION__BIAIS:
+				return isBiais();
+			case Convolution_layersPackage.CONVOLUTION__PADDING_MODE:
+				return getPadding_mode();
+			case Convolution_layersPackage.CONVOLUTION__DATA_FORMAT:
+				return getData_format();
+			case Convolution_layersPackage.CONVOLUTION__DILATION_RATE:
+				return getDilation_rate();
+			case Convolution_layersPackage.CONVOLUTION__ACTIVATION:
+				return getActivation();
+			case Convolution_layersPackage.CONVOLUTION__BIAS_INITIALIZER:
+				return getBias_initializer();
+			case Convolution_layersPackage.CONVOLUTION__ACTIVITY_REGULARIZER:
+				return getActivity_regularizer();
+			case Convolution_layersPackage.CONVOLUTION__BIAS_CONSTRAINT:
+				return getBias_constraint();
+			case Convolution_layersPackage.CONVOLUTION__BIAS_REGULARIZER:
+				return getBias_regularizer();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Convolution_layersPackage.CONVOLUTION__IN_CHANNELS:
+				setIn_channels((Integer)newValue);
+				return;
+			case Convolution_layersPackage.CONVOLUTION__GROUPS:
+				setGroups((Integer)newValue);
+				return;
+			case Convolution_layersPackage.CONVOLUTION__BIAIS:
+				setBiais((Boolean)newValue);
+				return;
+			case Convolution_layersPackage.CONVOLUTION__PADDING_MODE:
+				setPadding_mode((String)newValue);
+				return;
+			case Convolution_layersPackage.CONVOLUTION__DATA_FORMAT:
+				setData_format((String)newValue);
+				return;
+			case Convolution_layersPackage.CONVOLUTION__DILATION_RATE:
+				getDilation_rate().clear();
+				getDilation_rate().addAll((Collection<? extends Integer>)newValue);
+				return;
+			case Convolution_layersPackage.CONVOLUTION__ACTIVATION:
+				setActivation((String)newValue);
+				return;
+			case Convolution_layersPackage.CONVOLUTION__BIAS_INITIALIZER:
+				setBias_initializer((String)newValue);
+				return;
+			case Convolution_layersPackage.CONVOLUTION__ACTIVITY_REGULARIZER:
+				setActivity_regularizer((String)newValue);
+				return;
+			case Convolution_layersPackage.CONVOLUTION__BIAS_CONSTRAINT:
+				setBias_constraint((String)newValue);
+				return;
+			case Convolution_layersPackage.CONVOLUTION__BIAS_REGULARIZER:
+				setBias_regularizer((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Convolution_layersPackage.CONVOLUTION__IN_CHANNELS:
+				setIn_channels(IN_CHANNELS_EDEFAULT);
+				return;
+			case Convolution_layersPackage.CONVOLUTION__GROUPS:
+				setGroups(GROUPS_EDEFAULT);
+				return;
+			case Convolution_layersPackage.CONVOLUTION__BIAIS:
+				setBiais(BIAIS_EDEFAULT);
+				return;
+			case Convolution_layersPackage.CONVOLUTION__PADDING_MODE:
+				setPadding_mode(PADDING_MODE_EDEFAULT);
+				return;
+			case Convolution_layersPackage.CONVOLUTION__DATA_FORMAT:
+				setData_format(DATA_FORMAT_EDEFAULT);
+				return;
+			case Convolution_layersPackage.CONVOLUTION__DILATION_RATE:
+				getDilation_rate().clear();
+				return;
+			case Convolution_layersPackage.CONVOLUTION__ACTIVATION:
+				setActivation(ACTIVATION_EDEFAULT);
+				return;
+			case Convolution_layersPackage.CONVOLUTION__BIAS_INITIALIZER:
+				setBias_initializer(BIAS_INITIALIZER_EDEFAULT);
+				return;
+			case Convolution_layersPackage.CONVOLUTION__ACTIVITY_REGULARIZER:
+				setActivity_regularizer(ACTIVITY_REGULARIZER_EDEFAULT);
+				return;
+			case Convolution_layersPackage.CONVOLUTION__BIAS_CONSTRAINT:
+				setBias_constraint(BIAS_CONSTRAINT_EDEFAULT);
+				return;
+			case Convolution_layersPackage.CONVOLUTION__BIAS_REGULARIZER:
+				setBias_regularizer(BIAS_REGULARIZER_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Convolution_layersPackage.CONVOLUTION__IN_CHANNELS:
+				return in_channels != IN_CHANNELS_EDEFAULT;
+			case Convolution_layersPackage.CONVOLUTION__GROUPS:
+				return groups != GROUPS_EDEFAULT;
+			case Convolution_layersPackage.CONVOLUTION__BIAIS:
+				return biais != BIAIS_EDEFAULT;
+			case Convolution_layersPackage.CONVOLUTION__PADDING_MODE:
+				return PADDING_MODE_EDEFAULT == null ? padding_mode != null : !PADDING_MODE_EDEFAULT.equals(padding_mode);
+			case Convolution_layersPackage.CONVOLUTION__DATA_FORMAT:
+				return DATA_FORMAT_EDEFAULT == null ? data_format != null : !DATA_FORMAT_EDEFAULT.equals(data_format);
+			case Convolution_layersPackage.CONVOLUTION__DILATION_RATE:
+				return dilation_rate != null && !dilation_rate.isEmpty();
+			case Convolution_layersPackage.CONVOLUTION__ACTIVATION:
+				return ACTIVATION_EDEFAULT == null ? activation != null : !ACTIVATION_EDEFAULT.equals(activation);
+			case Convolution_layersPackage.CONVOLUTION__BIAS_INITIALIZER:
+				return BIAS_INITIALIZER_EDEFAULT == null ? bias_initializer != null : !BIAS_INITIALIZER_EDEFAULT.equals(bias_initializer);
+			case Convolution_layersPackage.CONVOLUTION__ACTIVITY_REGULARIZER:
+				return ACTIVITY_REGULARIZER_EDEFAULT == null ? activity_regularizer != null : !ACTIVITY_REGULARIZER_EDEFAULT.equals(activity_regularizer);
+			case Convolution_layersPackage.CONVOLUTION__BIAS_CONSTRAINT:
+				return BIAS_CONSTRAINT_EDEFAULT == null ? bias_constraint != null : !BIAS_CONSTRAINT_EDEFAULT.equals(bias_constraint);
+			case Convolution_layersPackage.CONVOLUTION__BIAS_REGULARIZER:
+				return BIAS_REGULARIZER_EDEFAULT == null ? bias_regularizer != null : !BIAS_REGULARIZER_EDEFAULT.equals(bias_regularizer);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (in_channels: "); //$NON-NLS-1$
+		result.append(in_channels);
+		result.append(", groups: "); //$NON-NLS-1$
+		result.append(groups);
+		result.append(", biais: "); //$NON-NLS-1$
+		result.append(biais);
+		result.append(", padding_mode: "); //$NON-NLS-1$
+		result.append(padding_mode);
+		result.append(", data_format: "); //$NON-NLS-1$
+		result.append(data_format);
+		result.append(", dilation_rate: "); //$NON-NLS-1$
+		result.append(dilation_rate);
+		result.append(", activation: "); //$NON-NLS-1$
+		result.append(activation);
+		result.append(", bias_initializer: "); //$NON-NLS-1$
+		result.append(bias_initializer);
+		result.append(", activity_regularizer: "); //$NON-NLS-1$
+		result.append(activity_regularizer);
+		result.append(", bias_constraint: "); //$NON-NLS-1$
+		result.append(bias_constraint);
+		result.append(", bias_regularizer: "); //$NON-NLS-1$
+		result.append(bias_regularizer);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ConvolutionImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/Convolution_layersFactoryImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/Convolution_layersFactoryImpl.java
new file mode 100644
index 0000000..2ca89fe
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/Convolution_layersFactoryImpl.java
@@ -0,0 +1,226 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class Convolution_layersFactoryImpl extends EFactoryImpl implements Convolution_layersFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static Convolution_layersFactory init() {
+		try {
+			Convolution_layersFactory theConvolution_layersFactory = (Convolution_layersFactory)EPackage.Registry.INSTANCE.getEFactory(Convolution_layersPackage.eNS_URI);
+			if (theConvolution_layersFactory != null) {
+				return theConvolution_layersFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new Convolution_layersFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Convolution_layersFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case Convolution_layersPackage.UNFOLD: return createUnfold();
+			case Convolution_layersPackage.FOLD: return createFold();
+			case Convolution_layersPackage.CONV2D: return createConv2d();
+			case Convolution_layersPackage.CONV3D: return createConv3d();
+			case Convolution_layersPackage.CONV_TRANSPOSE1D: return createConvTranspose1d();
+			case Convolution_layersPackage.CONV_TRANSPOSE2D: return createConvTranspose2d();
+			case Convolution_layersPackage.CONV_TRANSPOSE3D: return createConvTranspose3d();
+			case Convolution_layersPackage.CONV1D: return createConv1d();
+			case Convolution_layersPackage.SEPARABLE_CONV2_D: return createSeparableConv2D();
+			case Convolution_layersPackage.SEPARABLE_CONV1_D: return createSeparableConv1D();
+			case Convolution_layersPackage.DEPTHWISE_CONV2_D: return createDepthwiseConv2D();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Unfold createUnfold() {
+		UnfoldImpl unfold = new UnfoldImpl();
+		return unfold;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Fold createFold() {
+		FoldImpl fold = new FoldImpl();
+		return fold;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Conv2d createConv2d() {
+		Conv2dImpl conv2d = new Conv2dImpl();
+		return conv2d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Conv3d createConv3d() {
+		Conv3dImpl conv3d = new Conv3dImpl();
+		return conv3d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ConvTranspose1d createConvTranspose1d() {
+		ConvTranspose1dImpl convTranspose1d = new ConvTranspose1dImpl();
+		return convTranspose1d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ConvTranspose2d createConvTranspose2d() {
+		ConvTranspose2dImpl convTranspose2d = new ConvTranspose2dImpl();
+		return convTranspose2d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ConvTranspose3d createConvTranspose3d() {
+		ConvTranspose3dImpl convTranspose3d = new ConvTranspose3dImpl();
+		return convTranspose3d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Conv1d createConv1d() {
+		Conv1dImpl conv1d = new Conv1dImpl();
+		return conv1d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public SeparableConv2D createSeparableConv2D() {
+		SeparableConv2DImpl separableConv2D = new SeparableConv2DImpl();
+		return separableConv2D;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public SeparableConv1D createSeparableConv1D() {
+		SeparableConv1DImpl separableConv1D = new SeparableConv1DImpl();
+		return separableConv1D;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public DepthwiseConv2D createDepthwiseConv2D() {
+		DepthwiseConv2DImpl depthwiseConv2D = new DepthwiseConv2DImpl();
+		return depthwiseConv2D;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Convolution_layersPackage getConvolution_layersPackage() {
+		return (Convolution_layersPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static Convolution_layersPackage getPackage() {
+		return Convolution_layersPackage.eINSTANCE;
+	}
+
+} //Convolution_layersFactoryImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/Convolution_layersImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/Convolution_layersImpl.java
new file mode 100644
index 0000000..f0a0269
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/Convolution_layersImpl.java
@@ -0,0 +1,269 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layers;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModelImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Convolution layers</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersImpl#getKernel_size <em>Kernel size</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersImpl#getStride <em>Stride</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersImpl#getPadding <em>Padding</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersImpl#getDilation <em>Dilation</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class Convolution_layersImpl extends ModelImpl implements Convolution_layers {
+	/**
+	 * The cached value of the '{@link #getKernel_size() <em>Kernel size</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKernel_size()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Integer> kernel_size;
+
+	/**
+	 * The cached value of the '{@link #getStride() <em>Stride</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getStride()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Integer> stride;
+
+	/**
+	 * The cached value of the '{@link #getPadding() <em>Padding</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPadding()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Integer> padding;
+
+	/**
+	 * The cached value of the '{@link #getDilation() <em>Dilation</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDilation()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Integer> dilation;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Convolution_layersImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Convolution_layersPackage.Literals.CONVOLUTION_LAYERS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Integer> getKernel_size() {
+		if (kernel_size == null) {
+			kernel_size = new EDataTypeUniqueEList<Integer>(Integer.class, this, Convolution_layersPackage.CONVOLUTION_LAYERS__KERNEL_SIZE);
+		}
+		return kernel_size;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Integer> getStride() {
+		if (stride == null) {
+			stride = new EDataTypeUniqueEList<Integer>(Integer.class, this, Convolution_layersPackage.CONVOLUTION_LAYERS__STRIDE);
+		}
+		return stride;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Integer> getPadding() {
+		if (padding == null) {
+			padding = new EDataTypeUniqueEList<Integer>(Integer.class, this, Convolution_layersPackage.CONVOLUTION_LAYERS__PADDING);
+		}
+		return padding;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Integer> getDilation() {
+		if (dilation == null) {
+			dilation = new EDataTypeUniqueEList<Integer>(Integer.class, this, Convolution_layersPackage.CONVOLUTION_LAYERS__DILATION);
+		}
+		return dilation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Convolution_layersPackage.CONVOLUTION_LAYERS__KERNEL_SIZE:
+				return getKernel_size();
+			case Convolution_layersPackage.CONVOLUTION_LAYERS__STRIDE:
+				return getStride();
+			case Convolution_layersPackage.CONVOLUTION_LAYERS__PADDING:
+				return getPadding();
+			case Convolution_layersPackage.CONVOLUTION_LAYERS__DILATION:
+				return getDilation();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Convolution_layersPackage.CONVOLUTION_LAYERS__KERNEL_SIZE:
+				getKernel_size().clear();
+				getKernel_size().addAll((Collection<? extends Integer>)newValue);
+				return;
+			case Convolution_layersPackage.CONVOLUTION_LAYERS__STRIDE:
+				getStride().clear();
+				getStride().addAll((Collection<? extends Integer>)newValue);
+				return;
+			case Convolution_layersPackage.CONVOLUTION_LAYERS__PADDING:
+				getPadding().clear();
+				getPadding().addAll((Collection<? extends Integer>)newValue);
+				return;
+			case Convolution_layersPackage.CONVOLUTION_LAYERS__DILATION:
+				getDilation().clear();
+				getDilation().addAll((Collection<? extends Integer>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Convolution_layersPackage.CONVOLUTION_LAYERS__KERNEL_SIZE:
+				getKernel_size().clear();
+				return;
+			case Convolution_layersPackage.CONVOLUTION_LAYERS__STRIDE:
+				getStride().clear();
+				return;
+			case Convolution_layersPackage.CONVOLUTION_LAYERS__PADDING:
+				getPadding().clear();
+				return;
+			case Convolution_layersPackage.CONVOLUTION_LAYERS__DILATION:
+				getDilation().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Convolution_layersPackage.CONVOLUTION_LAYERS__KERNEL_SIZE:
+				return kernel_size != null && !kernel_size.isEmpty();
+			case Convolution_layersPackage.CONVOLUTION_LAYERS__STRIDE:
+				return stride != null && !stride.isEmpty();
+			case Convolution_layersPackage.CONVOLUTION_LAYERS__PADDING:
+				return padding != null && !padding.isEmpty();
+			case Convolution_layersPackage.CONVOLUTION_LAYERS__DILATION:
+				return dilation != null && !dilation.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (kernel_size: "); //$NON-NLS-1$
+		result.append(kernel_size);
+		result.append(", stride: "); //$NON-NLS-1$
+		result.append(stride);
+		result.append(", padding: "); //$NON-NLS-1$
+		result.append(padding);
+		result.append(", dilation: "); //$NON-NLS-1$
+		result.append(dilation);
+		result.append(')');
+		return result.toString();
+	}
+
+} //Convolution_layersImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/Convolution_layersPackageImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/Convolution_layersPackageImpl.java
new file mode 100644
index 0000000..6682399
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/Convolution_layersPackageImpl.java
@@ -0,0 +1,1113 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.AIMLPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Conv1d;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Conv2d;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Conv3d;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.ConvTranspose1d;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.ConvTranspose2d;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.ConvTranspose3d;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layers;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersFactory;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.DepthwiseConv2D;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Fold;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.LayerWithFilter;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Separable;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.SeparableConv1D;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.SeparableConv2D;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Unfold;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.basic;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.transpose;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.Layer_weight_regularizersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModulePackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.DatatypesPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl.DatatypesPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.impl.AIMLPackageImpl;
+
+import org.eclipse.uml2.types.TypesPackage;
+
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class Convolution_layersPackageImpl extends EPackageImpl implements Convolution_layersPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass convolutionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass convolution_layersEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass unfoldEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass foldEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass conv2dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass basicEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass layerWithFilterEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass conv3dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass convTranspose1dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass convTranspose2dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass transposeEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass convTranspose3dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass conv1dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass separableEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass separableConv2DEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass separableConv1DEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass depthwiseConv2DEClass = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private Convolution_layersPackageImpl() {
+		super(eNS_URI, Convolution_layersFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>This method is used to initialize {@link Convolution_layersPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static Convolution_layersPackage init() {
+		if (isInited) return (Convolution_layersPackage)EPackage.Registry.INSTANCE.getEPackage(Convolution_layersPackage.eNS_URI);
+
+		// Obtain or create and register package
+		Object registeredConvolution_layersPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		Convolution_layersPackageImpl theConvolution_layersPackage = registeredConvolution_layersPackage instanceof Convolution_layersPackageImpl ? (Convolution_layersPackageImpl)registeredConvolution_layersPackage : new Convolution_layersPackageImpl();
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		EcorePackage.eINSTANCE.eClass();
+		TypesPackage.eINSTANCE.eClass();
+		UMLPackage.eINSTANCE.eClass();
+
+		// Obtain or create and register interdependencies
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AIMLPackage.eNS_URI);
+		AIMLPackageImpl theAIMLPackage = (AIMLPackageImpl)(registeredPackage instanceof AIMLPackageImpl ? registeredPackage : AIMLPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		ModulePackageImpl theModulePackage = (ModulePackageImpl)(registeredPackage instanceof ModulePackageImpl ? registeredPackage : ModulePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(TensorPackage.eNS_URI);
+		TensorPackageImpl theTensorPackage = (TensorPackageImpl)(registeredPackage instanceof TensorPackageImpl ? registeredPackage : TensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DatatypesPackage.eNS_URI);
+		DatatypesPackageImpl theDatatypesPackage = (DatatypesPackageImpl)(registeredPackage instanceof DatatypesPackageImpl ? registeredPackage : DatatypesPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Pooling_layersPackage.eNS_URI);
+		Pooling_layersPackageImpl thePooling_layersPackage = (Pooling_layersPackageImpl)(registeredPackage instanceof Pooling_layersPackageImpl ? registeredPackage : Pooling_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_constraintsPackage.eNS_URI);
+		Layer_weight_constraintsPackageImpl theLayer_weight_constraintsPackage = (Layer_weight_constraintsPackageImpl)(registeredPackage instanceof Layer_weight_constraintsPackageImpl ? registeredPackage : Layer_weight_constraintsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Padding_layersPackage.eNS_URI);
+		Padding_layersPackageImpl thePadding_layersPackage = (Padding_layersPackageImpl)(registeredPackage instanceof Padding_layersPackageImpl ? registeredPackage : Padding_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NonLinearActivationsPackage.eNS_URI);
+		NonLinearActivationsPackageImpl theNonLinearActivationsPackage = (NonLinearActivationsPackageImpl)(registeredPackage instanceof NonLinearActivationsPackageImpl ? registeredPackage : NonLinearActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftMinMaxActivationsPackage.eNS_URI);
+		SoftMinMaxActivationsPackageImpl theSoftMinMaxActivationsPackage = (SoftMinMaxActivationsPackageImpl)(registeredPackage instanceof SoftMinMaxActivationsPackageImpl ? registeredPackage : SoftMinMaxActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Normalization_layersPackage.eNS_URI);
+		Normalization_layersPackageImpl theNormalization_layersPackage = (Normalization_layersPackageImpl)(registeredPackage instanceof Normalization_layersPackageImpl ? registeredPackage : Normalization_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Recurrent_layersPackage.eNS_URI);
+		Recurrent_layersPackageImpl theRecurrent_layersPackage = (Recurrent_layersPackageImpl)(registeredPackage instanceof Recurrent_layersPackageImpl ? registeredPackage : Recurrent_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Transformer_layersPackage.eNS_URI);
+		Transformer_layersPackageImpl theTransformer_layersPackage = (Transformer_layersPackageImpl)(registeredPackage instanceof Transformer_layersPackageImpl ? registeredPackage : Transformer_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Linear_layersPackage.eNS_URI);
+		Linear_layersPackageImpl theLinear_layersPackage = (Linear_layersPackageImpl)(registeredPackage instanceof Linear_layersPackageImpl ? registeredPackage : Linear_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Dropout_layersPackage.eNS_URI);
+		Dropout_layersPackageImpl theDropout_layersPackage = (Dropout_layersPackageImpl)(registeredPackage instanceof Dropout_layersPackageImpl ? registeredPackage : Dropout_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Sparse_layersPackage.eNS_URI);
+		Sparse_layersPackageImpl theSparse_layersPackage = (Sparse_layersPackageImpl)(registeredPackage instanceof Sparse_layersPackageImpl ? registeredPackage : Sparse_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Distance_functionsPackage.eNS_URI);
+		Distance_functionsPackageImpl theDistance_functionsPackage = (Distance_functionsPackageImpl)(registeredPackage instanceof Distance_functionsPackageImpl ? registeredPackage : Distance_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Loss_functionsPackage.eNS_URI);
+		Loss_functionsPackageImpl theLoss_functionsPackage = (Loss_functionsPackageImpl)(registeredPackage instanceof Loss_functionsPackageImpl ? registeredPackage : Loss_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Vision_layersPackage.eNS_URI);
+		Vision_layersPackageImpl theVision_layersPackage = (Vision_layersPackageImpl)(registeredPackage instanceof Vision_layersPackageImpl ? registeredPackage : Vision_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DataParallel_layersPackage.eNS_URI);
+		DataParallel_layersPackageImpl theDataParallel_layersPackage = (DataParallel_layersPackageImpl)(registeredPackage instanceof DataParallel_layersPackageImpl ? registeredPackage : DataParallel_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_regularizersPackage.eNS_URI);
+		Layer_weight_regularizersPackageImpl theLayer_weight_regularizersPackage = (Layer_weight_regularizersPackageImpl)(registeredPackage instanceof Layer_weight_regularizersPackageImpl ? registeredPackage : Layer_weight_regularizersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_initializersPackage.eNS_URI);
+		Layer_weight_initializersPackageImpl theLayer_weight_initializersPackage = (Layer_weight_initializersPackageImpl)(registeredPackage instanceof Layer_weight_initializersPackageImpl ? registeredPackage : Layer_weight_initializersPackage.eINSTANCE);
+
+		// Create package meta-data objects
+		theConvolution_layersPackage.createPackageContents();
+		theAIMLPackage.createPackageContents();
+		theModulePackage.createPackageContents();
+		theTensorPackage.createPackageContents();
+		theDatatypesPackage.createPackageContents();
+		thePooling_layersPackage.createPackageContents();
+		theLayer_weight_constraintsPackage.createPackageContents();
+		thePadding_layersPackage.createPackageContents();
+		theNonLinearActivationsPackage.createPackageContents();
+		theSoftMinMaxActivationsPackage.createPackageContents();
+		theNormalization_layersPackage.createPackageContents();
+		theRecurrent_layersPackage.createPackageContents();
+		theTransformer_layersPackage.createPackageContents();
+		theLinear_layersPackage.createPackageContents();
+		theDropout_layersPackage.createPackageContents();
+		theSparse_layersPackage.createPackageContents();
+		theDistance_functionsPackage.createPackageContents();
+		theLoss_functionsPackage.createPackageContents();
+		theVision_layersPackage.createPackageContents();
+		theDataParallel_layersPackage.createPackageContents();
+		theLayer_weight_regularizersPackage.createPackageContents();
+		theLayer_weight_initializersPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theConvolution_layersPackage.initializePackageContents();
+		theAIMLPackage.initializePackageContents();
+		theModulePackage.initializePackageContents();
+		theTensorPackage.initializePackageContents();
+		theDatatypesPackage.initializePackageContents();
+		thePooling_layersPackage.initializePackageContents();
+		theLayer_weight_constraintsPackage.initializePackageContents();
+		thePadding_layersPackage.initializePackageContents();
+		theNonLinearActivationsPackage.initializePackageContents();
+		theSoftMinMaxActivationsPackage.initializePackageContents();
+		theNormalization_layersPackage.initializePackageContents();
+		theRecurrent_layersPackage.initializePackageContents();
+		theTransformer_layersPackage.initializePackageContents();
+		theLinear_layersPackage.initializePackageContents();
+		theDropout_layersPackage.initializePackageContents();
+		theSparse_layersPackage.initializePackageContents();
+		theDistance_functionsPackage.initializePackageContents();
+		theLoss_functionsPackage.initializePackageContents();
+		theVision_layersPackage.initializePackageContents();
+		theDataParallel_layersPackage.initializePackageContents();
+		theLayer_weight_regularizersPackage.initializePackageContents();
+		theLayer_weight_initializersPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theConvolution_layersPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(Convolution_layersPackage.eNS_URI, theConvolution_layersPackage);
+		return theConvolution_layersPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getConvolution() {
+		return convolutionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getConvolution_In_channels() {
+		return (EAttribute)convolutionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getConvolution_Groups() {
+		return (EAttribute)convolutionEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getConvolution_Biais() {
+		return (EAttribute)convolutionEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getConvolution_Padding_mode() {
+		return (EAttribute)convolutionEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getConvolution_Data_format() {
+		return (EAttribute)convolutionEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getConvolution_Dilation_rate() {
+		return (EAttribute)convolutionEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getConvolution_Activation() {
+		return (EAttribute)convolutionEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getConvolution_Bias_initializer() {
+		return (EAttribute)convolutionEClass.getEStructuralFeatures().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getConvolution_Activity_regularizer() {
+		return (EAttribute)convolutionEClass.getEStructuralFeatures().get(8);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getConvolution_Bias_constraint() {
+		return (EAttribute)convolutionEClass.getEStructuralFeatures().get(9);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getConvolution_Bias_regularizer() {
+		return (EAttribute)convolutionEClass.getEStructuralFeatures().get(10);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getConvolution_layers() {
+		return convolution_layersEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getConvolution_layers_Kernel_size() {
+		return (EAttribute)convolution_layersEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getConvolution_layers_Stride() {
+		return (EAttribute)convolution_layersEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getConvolution_layers_Padding() {
+		return (EAttribute)convolution_layersEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getConvolution_layers_Dilation() {
+		return (EAttribute)convolution_layersEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getUnfold() {
+		return unfoldEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getFold() {
+		return foldEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getFold_Output_size() {
+		return (EAttribute)foldEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getConv2d() {
+		return conv2dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getbasic() {
+		return basicEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getbasic_Kernel_initializer() {
+		return (EAttribute)basicEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getbasic_Kernel_constraint() {
+		return (EReference)basicEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getbasic_Kernel_regularizer() {
+		return (EAttribute)basicEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getLayerWithFilter() {
+		return layerWithFilterEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLayerWithFilter_Out_channels() {
+		return (EAttribute)layerWithFilterEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getConv3d() {
+		return conv3dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getConvTranspose1d() {
+		return convTranspose1dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getConvTranspose2d() {
+		return convTranspose2dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass gettranspose() {
+		return transposeEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute gettranspose_Output_padding() {
+		return (EAttribute)transposeEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getConvTranspose3d() {
+		return convTranspose3dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getConv1d() {
+		return conv1dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getSeparable() {
+		return separableEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getSeparable_Depth_multiplier() {
+		return (EAttribute)separableEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getSeparable_Depthwise_initializer() {
+		return (EAttribute)separableEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getSeparable_Pointwise_initializer() {
+		return (EAttribute)separableEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getSeparable_Depthwise_regularizer() {
+		return (EAttribute)separableEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getSeparable_Poitnwise_regularizer() {
+		return (EAttribute)separableEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getSeparable_Depthwise_constraint() {
+		return (EAttribute)separableEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getSeparable_Pointwise_constraint() {
+		return (EAttribute)separableEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getSeparableConv2D() {
+		return separableConv2DEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getSeparableConv1D() {
+		return separableConv1DEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getDepthwiseConv2D() {
+		return depthwiseConv2DEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getDepthwiseConv2D_Depth_multiplier() {
+		return (EAttribute)depthwiseConv2DEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getDepthwiseConv2D_Depthwise_initializer() {
+		return (EAttribute)depthwiseConv2DEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getDepthwiseConv2D_Depthwise_regularizer() {
+		return (EAttribute)depthwiseConv2DEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getDepthwiseConv2D_Depthwise_constraint() {
+		return (EAttribute)depthwiseConv2DEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Convolution_layersFactory getConvolution_layersFactory() {
+		return (Convolution_layersFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		convolutionEClass = createEClass(CONVOLUTION);
+		createEAttribute(convolutionEClass, CONVOLUTION__IN_CHANNELS);
+		createEAttribute(convolutionEClass, CONVOLUTION__GROUPS);
+		createEAttribute(convolutionEClass, CONVOLUTION__BIAIS);
+		createEAttribute(convolutionEClass, CONVOLUTION__PADDING_MODE);
+		createEAttribute(convolutionEClass, CONVOLUTION__DATA_FORMAT);
+		createEAttribute(convolutionEClass, CONVOLUTION__DILATION_RATE);
+		createEAttribute(convolutionEClass, CONVOLUTION__ACTIVATION);
+		createEAttribute(convolutionEClass, CONVOLUTION__BIAS_INITIALIZER);
+		createEAttribute(convolutionEClass, CONVOLUTION__ACTIVITY_REGULARIZER);
+		createEAttribute(convolutionEClass, CONVOLUTION__BIAS_CONSTRAINT);
+		createEAttribute(convolutionEClass, CONVOLUTION__BIAS_REGULARIZER);
+
+		convolution_layersEClass = createEClass(CONVOLUTION_LAYERS);
+		createEAttribute(convolution_layersEClass, CONVOLUTION_LAYERS__KERNEL_SIZE);
+		createEAttribute(convolution_layersEClass, CONVOLUTION_LAYERS__STRIDE);
+		createEAttribute(convolution_layersEClass, CONVOLUTION_LAYERS__PADDING);
+		createEAttribute(convolution_layersEClass, CONVOLUTION_LAYERS__DILATION);
+
+		unfoldEClass = createEClass(UNFOLD);
+
+		foldEClass = createEClass(FOLD);
+		createEAttribute(foldEClass, FOLD__OUTPUT_SIZE);
+
+		conv2dEClass = createEClass(CONV2D);
+
+		basicEClass = createEClass(BASIC);
+		createEAttribute(basicEClass, BASIC__KERNEL_INITIALIZER);
+		createEReference(basicEClass, BASIC__KERNEL_CONSTRAINT);
+		createEAttribute(basicEClass, BASIC__KERNEL_REGULARIZER);
+
+		layerWithFilterEClass = createEClass(LAYER_WITH_FILTER);
+		createEAttribute(layerWithFilterEClass, LAYER_WITH_FILTER__OUT_CHANNELS);
+
+		conv3dEClass = createEClass(CONV3D);
+
+		convTranspose1dEClass = createEClass(CONV_TRANSPOSE1D);
+
+		convTranspose2dEClass = createEClass(CONV_TRANSPOSE2D);
+
+		transposeEClass = createEClass(TRANSPOSE);
+		createEAttribute(transposeEClass, TRANSPOSE__OUTPUT_PADDING);
+
+		convTranspose3dEClass = createEClass(CONV_TRANSPOSE3D);
+
+		conv1dEClass = createEClass(CONV1D);
+
+		separableEClass = createEClass(SEPARABLE);
+		createEAttribute(separableEClass, SEPARABLE__DEPTH_MULTIPLIER);
+		createEAttribute(separableEClass, SEPARABLE__DEPTHWISE_INITIALIZER);
+		createEAttribute(separableEClass, SEPARABLE__POINTWISE_INITIALIZER);
+		createEAttribute(separableEClass, SEPARABLE__DEPTHWISE_REGULARIZER);
+		createEAttribute(separableEClass, SEPARABLE__POITNWISE_REGULARIZER);
+		createEAttribute(separableEClass, SEPARABLE__DEPTHWISE_CONSTRAINT);
+		createEAttribute(separableEClass, SEPARABLE__POINTWISE_CONSTRAINT);
+
+		separableConv2DEClass = createEClass(SEPARABLE_CONV2_D);
+
+		separableConv1DEClass = createEClass(SEPARABLE_CONV1_D);
+
+		depthwiseConv2DEClass = createEClass(DEPTHWISE_CONV2_D);
+		createEAttribute(depthwiseConv2DEClass, DEPTHWISE_CONV2_D__DEPTH_MULTIPLIER);
+		createEAttribute(depthwiseConv2DEClass, DEPTHWISE_CONV2_D__DEPTHWISE_INITIALIZER);
+		createEAttribute(depthwiseConv2DEClass, DEPTHWISE_CONV2_D__DEPTHWISE_REGULARIZER);
+		createEAttribute(depthwiseConv2DEClass, DEPTHWISE_CONV2_D__DEPTHWISE_CONSTRAINT);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+		ModulePackage theModulePackage = (ModulePackage)EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		Layer_weight_constraintsPackage theLayer_weight_constraintsPackage = (Layer_weight_constraintsPackage)EPackage.Registry.INSTANCE.getEPackage(Layer_weight_constraintsPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		convolutionEClass.getESuperTypes().add(this.getConvolution_layers());
+		convolution_layersEClass.getESuperTypes().add(theModulePackage.getModel());
+		unfoldEClass.getESuperTypes().add(this.getConvolution_layers());
+		foldEClass.getESuperTypes().add(this.getConvolution_layers());
+		conv2dEClass.getESuperTypes().add(this.getbasic());
+		basicEClass.getESuperTypes().add(this.getLayerWithFilter());
+		layerWithFilterEClass.getESuperTypes().add(this.getConvolution());
+		conv3dEClass.getESuperTypes().add(this.getbasic());
+		convTranspose1dEClass.getESuperTypes().add(this.getLayerWithFilter());
+		convTranspose2dEClass.getESuperTypes().add(this.gettranspose());
+		transposeEClass.getESuperTypes().add(this.getbasic());
+		convTranspose3dEClass.getESuperTypes().add(this.gettranspose());
+		conv1dEClass.getESuperTypes().add(this.getbasic());
+		separableEClass.getESuperTypes().add(this.getLayerWithFilter());
+		separableConv2DEClass.getESuperTypes().add(this.getSeparable());
+		separableConv1DEClass.getESuperTypes().add(this.getSeparable());
+		depthwiseConv2DEClass.getESuperTypes().add(this.getConvolution());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(convolutionEClass, Convolution.class, "Convolution", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getConvolution_In_channels(), theTypesPackage.getInteger(), "in_channels", null, 0, 1, Convolution.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getConvolution_Groups(), theTypesPackage.getInteger(), "groups", null, 0, 1, Convolution.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getConvolution_Biais(), theTypesPackage.getBoolean(), "biais", null, 0, 1, Convolution.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getConvolution_Padding_mode(), theTypesPackage.getString(), "padding_mode", null, 0, 1, Convolution.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getConvolution_Data_format(), theTypesPackage.getString(), "data_format", null, 0, 1, Convolution.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getConvolution_Dilation_rate(), theTypesPackage.getInteger(), "dilation_rate", null, 0, -1, Convolution.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getConvolution_Activation(), theTypesPackage.getString(), "activation", null, 0, 1, Convolution.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getConvolution_Bias_initializer(), theTypesPackage.getString(), "bias_initializer", null, 1, 1, Convolution.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getConvolution_Activity_regularizer(), theTypesPackage.getString(), "activity_regularizer", null, 1, 1, Convolution.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getConvolution_Bias_constraint(), theTypesPackage.getString(), "bias_constraint", null, 1, 1, Convolution.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getConvolution_Bias_regularizer(), theTypesPackage.getString(), "bias_regularizer", null, 1, 1, Convolution.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(convolution_layersEClass, Convolution_layers.class, "Convolution_layers", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getConvolution_layers_Kernel_size(), theTypesPackage.getInteger(), "kernel_size", null, 0, -1, Convolution_layers.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getConvolution_layers_Stride(), theTypesPackage.getInteger(), "stride", null, 0, -1, Convolution_layers.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getConvolution_layers_Padding(), theTypesPackage.getInteger(), "padding", null, 0, -1, Convolution_layers.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getConvolution_layers_Dilation(), theTypesPackage.getInteger(), "dilation", null, 0, -1, Convolution_layers.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(unfoldEClass, Unfold.class, "Unfold", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(foldEClass, Fold.class, "Fold", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getFold_Output_size(), theTypesPackage.getInteger(), "output_size", null, 0, -1, Fold.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(conv2dEClass, Conv2d.class, "Conv2d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(basicEClass, basic.class, "basic", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getbasic_Kernel_initializer(), theTypesPackage.getString(), "kernel_initializer", null, 0, 1, basic.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEReference(getbasic_Kernel_constraint(), theLayer_weight_constraintsPackage.getconstraints(), null, "kernel_constraint", null, 1, 1, basic.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getbasic_Kernel_regularizer(), theTypesPackage.getString(), "kernel_regularizer", null, 0, 1, basic.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(layerWithFilterEClass, LayerWithFilter.class, "LayerWithFilter", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getLayerWithFilter_Out_channels(), theTypesPackage.getInteger(), "out_channels", null, 1, 1, LayerWithFilter.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(conv3dEClass, Conv3d.class, "Conv3d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(convTranspose1dEClass, ConvTranspose1d.class, "ConvTranspose1d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(convTranspose2dEClass, ConvTranspose2d.class, "ConvTranspose2d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(transposeEClass, transpose.class, "transpose", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(gettranspose_Output_padding(), theTypesPackage.getInteger(), "output_padding", null, 0, -1, transpose.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(convTranspose3dEClass, ConvTranspose3d.class, "ConvTranspose3d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(conv1dEClass, Conv1d.class, "Conv1d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(separableEClass, Separable.class, "Separable", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getSeparable_Depth_multiplier(), theTypesPackage.getInteger(), "depth_multiplier", null, 0, -1, Separable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getSeparable_Depthwise_initializer(), theTypesPackage.getString(), "depthwise_initializer", null, 0, 1, Separable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getSeparable_Pointwise_initializer(), theTypesPackage.getString(), "pointwise_initializer", null, 0, 1, Separable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getSeparable_Depthwise_regularizer(), theTypesPackage.getString(), "depthwise_regularizer", null, 1, 1, Separable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getSeparable_Poitnwise_regularizer(), theTypesPackage.getString(), "poitnwise_regularizer", null, 1, 1, Separable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getSeparable_Depthwise_constraint(), theTypesPackage.getString(), "depthwise_constraint", null, 1, 1, Separable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getSeparable_Pointwise_constraint(), theTypesPackage.getString(), "pointwise_constraint", null, 1, 1, Separable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(separableConv2DEClass, SeparableConv2D.class, "SeparableConv2D", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(separableConv1DEClass, SeparableConv1D.class, "SeparableConv1D", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(depthwiseConv2DEClass, DepthwiseConv2D.class, "DepthwiseConv2D", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getDepthwiseConv2D_Depth_multiplier(), theTypesPackage.getInteger(), "depth_multiplier", null, 0, -1, DepthwiseConv2D.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getDepthwiseConv2D_Depthwise_initializer(), theTypesPackage.getString(), "depthwise_initializer", null, 1, 1, DepthwiseConv2D.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getDepthwiseConv2D_Depthwise_regularizer(), theTypesPackage.getString(), "depthwise_regularizer", null, 1, 1, DepthwiseConv2D.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getDepthwiseConv2D_Depthwise_constraint(), theTypesPackage.getString(), "depthwise_constraint", null, 1, 1, DepthwiseConv2D.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+	}
+
+} //Convolution_layersPackageImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/DepthwiseConv2DImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/DepthwiseConv2DImpl.java
new file mode 100644
index 0000000..4c634fb
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/DepthwiseConv2DImpl.java
@@ -0,0 +1,329 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.DepthwiseConv2D;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Depthwise Conv2 D</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.DepthwiseConv2DImpl#getDepth_multiplier <em>Depth multiplier</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.DepthwiseConv2DImpl#getDepthwise_initializer <em>Depthwise initializer</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.DepthwiseConv2DImpl#getDepthwise_regularizer <em>Depthwise regularizer</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.DepthwiseConv2DImpl#getDepthwise_constraint <em>Depthwise constraint</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class DepthwiseConv2DImpl extends ConvolutionImpl implements DepthwiseConv2D {
+	/**
+	 * The cached value of the '{@link #getDepth_multiplier() <em>Depth multiplier</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDepth_multiplier()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Integer> depth_multiplier;
+
+	/**
+	 * The default value of the '{@link #getDepthwise_initializer() <em>Depthwise initializer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDepthwise_initializer()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DEPTHWISE_INITIALIZER_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getDepthwise_initializer() <em>Depthwise initializer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDepthwise_initializer()
+	 * @generated
+	 * @ordered
+	 */
+	protected String depthwise_initializer = DEPTHWISE_INITIALIZER_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getDepthwise_regularizer() <em>Depthwise regularizer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDepthwise_regularizer()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DEPTHWISE_REGULARIZER_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getDepthwise_regularizer() <em>Depthwise regularizer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDepthwise_regularizer()
+	 * @generated
+	 * @ordered
+	 */
+	protected String depthwise_regularizer = DEPTHWISE_REGULARIZER_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getDepthwise_constraint() <em>Depthwise constraint</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDepthwise_constraint()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DEPTHWISE_CONSTRAINT_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getDepthwise_constraint() <em>Depthwise constraint</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDepthwise_constraint()
+	 * @generated
+	 * @ordered
+	 */
+	protected String depthwise_constraint = DEPTHWISE_CONSTRAINT_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DepthwiseConv2DImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Convolution_layersPackage.Literals.DEPTHWISE_CONV2_D;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Integer> getDepth_multiplier() {
+		if (depth_multiplier == null) {
+			depth_multiplier = new EDataTypeUniqueEList<Integer>(Integer.class, this, Convolution_layersPackage.DEPTHWISE_CONV2_D__DEPTH_MULTIPLIER);
+		}
+		return depth_multiplier;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getDepthwise_initializer() {
+		return depthwise_initializer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDepthwise_initializer(String newDepthwise_initializer) {
+		String oldDepthwise_initializer = depthwise_initializer;
+		depthwise_initializer = newDepthwise_initializer;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Convolution_layersPackage.DEPTHWISE_CONV2_D__DEPTHWISE_INITIALIZER, oldDepthwise_initializer, depthwise_initializer));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getDepthwise_regularizer() {
+		return depthwise_regularizer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDepthwise_regularizer(String newDepthwise_regularizer) {
+		String oldDepthwise_regularizer = depthwise_regularizer;
+		depthwise_regularizer = newDepthwise_regularizer;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Convolution_layersPackage.DEPTHWISE_CONV2_D__DEPTHWISE_REGULARIZER, oldDepthwise_regularizer, depthwise_regularizer));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getDepthwise_constraint() {
+		return depthwise_constraint;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDepthwise_constraint(String newDepthwise_constraint) {
+		String oldDepthwise_constraint = depthwise_constraint;
+		depthwise_constraint = newDepthwise_constraint;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Convolution_layersPackage.DEPTHWISE_CONV2_D__DEPTHWISE_CONSTRAINT, oldDepthwise_constraint, depthwise_constraint));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Convolution_layersPackage.DEPTHWISE_CONV2_D__DEPTH_MULTIPLIER:
+				return getDepth_multiplier();
+			case Convolution_layersPackage.DEPTHWISE_CONV2_D__DEPTHWISE_INITIALIZER:
+				return getDepthwise_initializer();
+			case Convolution_layersPackage.DEPTHWISE_CONV2_D__DEPTHWISE_REGULARIZER:
+				return getDepthwise_regularizer();
+			case Convolution_layersPackage.DEPTHWISE_CONV2_D__DEPTHWISE_CONSTRAINT:
+				return getDepthwise_constraint();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Convolution_layersPackage.DEPTHWISE_CONV2_D__DEPTH_MULTIPLIER:
+				getDepth_multiplier().clear();
+				getDepth_multiplier().addAll((Collection<? extends Integer>)newValue);
+				return;
+			case Convolution_layersPackage.DEPTHWISE_CONV2_D__DEPTHWISE_INITIALIZER:
+				setDepthwise_initializer((String)newValue);
+				return;
+			case Convolution_layersPackage.DEPTHWISE_CONV2_D__DEPTHWISE_REGULARIZER:
+				setDepthwise_regularizer((String)newValue);
+				return;
+			case Convolution_layersPackage.DEPTHWISE_CONV2_D__DEPTHWISE_CONSTRAINT:
+				setDepthwise_constraint((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Convolution_layersPackage.DEPTHWISE_CONV2_D__DEPTH_MULTIPLIER:
+				getDepth_multiplier().clear();
+				return;
+			case Convolution_layersPackage.DEPTHWISE_CONV2_D__DEPTHWISE_INITIALIZER:
+				setDepthwise_initializer(DEPTHWISE_INITIALIZER_EDEFAULT);
+				return;
+			case Convolution_layersPackage.DEPTHWISE_CONV2_D__DEPTHWISE_REGULARIZER:
+				setDepthwise_regularizer(DEPTHWISE_REGULARIZER_EDEFAULT);
+				return;
+			case Convolution_layersPackage.DEPTHWISE_CONV2_D__DEPTHWISE_CONSTRAINT:
+				setDepthwise_constraint(DEPTHWISE_CONSTRAINT_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Convolution_layersPackage.DEPTHWISE_CONV2_D__DEPTH_MULTIPLIER:
+				return depth_multiplier != null && !depth_multiplier.isEmpty();
+			case Convolution_layersPackage.DEPTHWISE_CONV2_D__DEPTHWISE_INITIALIZER:
+				return DEPTHWISE_INITIALIZER_EDEFAULT == null ? depthwise_initializer != null : !DEPTHWISE_INITIALIZER_EDEFAULT.equals(depthwise_initializer);
+			case Convolution_layersPackage.DEPTHWISE_CONV2_D__DEPTHWISE_REGULARIZER:
+				return DEPTHWISE_REGULARIZER_EDEFAULT == null ? depthwise_regularizer != null : !DEPTHWISE_REGULARIZER_EDEFAULT.equals(depthwise_regularizer);
+			case Convolution_layersPackage.DEPTHWISE_CONV2_D__DEPTHWISE_CONSTRAINT:
+				return DEPTHWISE_CONSTRAINT_EDEFAULT == null ? depthwise_constraint != null : !DEPTHWISE_CONSTRAINT_EDEFAULT.equals(depthwise_constraint);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (depth_multiplier: "); //$NON-NLS-1$
+		result.append(depth_multiplier);
+		result.append(", depthwise_initializer: "); //$NON-NLS-1$
+		result.append(depthwise_initializer);
+		result.append(", depthwise_regularizer: "); //$NON-NLS-1$
+		result.append(depthwise_regularizer);
+		result.append(", depthwise_constraint: "); //$NON-NLS-1$
+		result.append(depthwise_constraint);
+		result.append(')');
+		return result.toString();
+	}
+
+} //DepthwiseConv2DImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/FoldImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/FoldImpl.java
new file mode 100644
index 0000000..23a81f2
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/FoldImpl.java
@@ -0,0 +1,157 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Fold;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Fold</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.FoldImpl#getOutput_size <em>Output size</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class FoldImpl extends Convolution_layersImpl implements Fold {
+	/**
+	 * The cached value of the '{@link #getOutput_size() <em>Output size</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOutput_size()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Integer> output_size;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FoldImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Convolution_layersPackage.Literals.FOLD;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Integer> getOutput_size() {
+		if (output_size == null) {
+			output_size = new EDataTypeUniqueEList<Integer>(Integer.class, this, Convolution_layersPackage.FOLD__OUTPUT_SIZE);
+		}
+		return output_size;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Convolution_layersPackage.FOLD__OUTPUT_SIZE:
+				return getOutput_size();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Convolution_layersPackage.FOLD__OUTPUT_SIZE:
+				getOutput_size().clear();
+				getOutput_size().addAll((Collection<? extends Integer>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Convolution_layersPackage.FOLD__OUTPUT_SIZE:
+				getOutput_size().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Convolution_layersPackage.FOLD__OUTPUT_SIZE:
+				return output_size != null && !output_size.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (output_size: "); //$NON-NLS-1$
+		result.append(output_size);
+		result.append(')');
+		return result.toString();
+	}
+
+} //FoldImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/LayerWithFilterImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/LayerWithFilterImpl.java
new file mode 100644
index 0000000..f7ee965
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/LayerWithFilterImpl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.LayerWithFilter;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Layer With Filter</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.LayerWithFilterImpl#getOut_channels <em>Out channels</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class LayerWithFilterImpl extends ConvolutionImpl implements LayerWithFilter {
+	/**
+	 * The default value of the '{@link #getOut_channels() <em>Out channels</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOut_channels()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int OUT_CHANNELS_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getOut_channels() <em>Out channels</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOut_channels()
+	 * @generated
+	 * @ordered
+	 */
+	protected int out_channels = OUT_CHANNELS_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LayerWithFilterImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Convolution_layersPackage.Literals.LAYER_WITH_FILTER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getOut_channels() {
+		return out_channels;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setOut_channels(int newOut_channels) {
+		int oldOut_channels = out_channels;
+		out_channels = newOut_channels;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Convolution_layersPackage.LAYER_WITH_FILTER__OUT_CHANNELS, oldOut_channels, out_channels));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Convolution_layersPackage.LAYER_WITH_FILTER__OUT_CHANNELS:
+				return getOut_channels();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Convolution_layersPackage.LAYER_WITH_FILTER__OUT_CHANNELS:
+				setOut_channels((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Convolution_layersPackage.LAYER_WITH_FILTER__OUT_CHANNELS:
+				setOut_channels(OUT_CHANNELS_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Convolution_layersPackage.LAYER_WITH_FILTER__OUT_CHANNELS:
+				return out_channels != OUT_CHANNELS_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (out_channels: "); //$NON-NLS-1$
+		result.append(out_channels);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LayerWithFilterImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/SeparableConv1DImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/SeparableConv1DImpl.java
new file mode 100644
index 0000000..0ac0d08
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/SeparableConv1DImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.SeparableConv1D;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Separable Conv1 D</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class SeparableConv1DImpl extends SeparableImpl implements SeparableConv1D {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SeparableConv1DImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Convolution_layersPackage.Literals.SEPARABLE_CONV1_D;
+	}
+
+} //SeparableConv1DImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/SeparableConv2DImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/SeparableConv2DImpl.java
new file mode 100644
index 0000000..a047ad8
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/SeparableConv2DImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.SeparableConv2D;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Separable Conv2 D</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class SeparableConv2DImpl extends SeparableImpl implements SeparableConv2D {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SeparableConv2DImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Convolution_layersPackage.Literals.SEPARABLE_CONV2_D;
+	}
+
+} //SeparableConv2DImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/SeparableImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/SeparableImpl.java
new file mode 100644
index 0000000..a1f92ff
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/SeparableImpl.java
@@ -0,0 +1,497 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Separable;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Separable</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.SeparableImpl#getDepth_multiplier <em>Depth multiplier</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.SeparableImpl#getDepthwise_initializer <em>Depthwise initializer</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.SeparableImpl#getPointwise_initializer <em>Pointwise initializer</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.SeparableImpl#getDepthwise_regularizer <em>Depthwise regularizer</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.SeparableImpl#getPoitnwise_regularizer <em>Poitnwise regularizer</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.SeparableImpl#getDepthwise_constraint <em>Depthwise constraint</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.SeparableImpl#getPointwise_constraint <em>Pointwise constraint</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class SeparableImpl extends LayerWithFilterImpl implements Separable {
+	/**
+	 * The cached value of the '{@link #getDepth_multiplier() <em>Depth multiplier</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDepth_multiplier()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Integer> depth_multiplier;
+
+	/**
+	 * The default value of the '{@link #getDepthwise_initializer() <em>Depthwise initializer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDepthwise_initializer()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DEPTHWISE_INITIALIZER_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getDepthwise_initializer() <em>Depthwise initializer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDepthwise_initializer()
+	 * @generated
+	 * @ordered
+	 */
+	protected String depthwise_initializer = DEPTHWISE_INITIALIZER_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getPointwise_initializer() <em>Pointwise initializer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPointwise_initializer()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String POINTWISE_INITIALIZER_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getPointwise_initializer() <em>Pointwise initializer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPointwise_initializer()
+	 * @generated
+	 * @ordered
+	 */
+	protected String pointwise_initializer = POINTWISE_INITIALIZER_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getDepthwise_regularizer() <em>Depthwise regularizer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDepthwise_regularizer()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DEPTHWISE_REGULARIZER_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getDepthwise_regularizer() <em>Depthwise regularizer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDepthwise_regularizer()
+	 * @generated
+	 * @ordered
+	 */
+	protected String depthwise_regularizer = DEPTHWISE_REGULARIZER_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getPoitnwise_regularizer() <em>Poitnwise regularizer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPoitnwise_regularizer()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String POITNWISE_REGULARIZER_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getPoitnwise_regularizer() <em>Poitnwise regularizer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPoitnwise_regularizer()
+	 * @generated
+	 * @ordered
+	 */
+	protected String poitnwise_regularizer = POITNWISE_REGULARIZER_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getDepthwise_constraint() <em>Depthwise constraint</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDepthwise_constraint()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DEPTHWISE_CONSTRAINT_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getDepthwise_constraint() <em>Depthwise constraint</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDepthwise_constraint()
+	 * @generated
+	 * @ordered
+	 */
+	protected String depthwise_constraint = DEPTHWISE_CONSTRAINT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getPointwise_constraint() <em>Pointwise constraint</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPointwise_constraint()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String POINTWISE_CONSTRAINT_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getPointwise_constraint() <em>Pointwise constraint</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPointwise_constraint()
+	 * @generated
+	 * @ordered
+	 */
+	protected String pointwise_constraint = POINTWISE_CONSTRAINT_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SeparableImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Convolution_layersPackage.Literals.SEPARABLE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Integer> getDepth_multiplier() {
+		if (depth_multiplier == null) {
+			depth_multiplier = new EDataTypeUniqueEList<Integer>(Integer.class, this, Convolution_layersPackage.SEPARABLE__DEPTH_MULTIPLIER);
+		}
+		return depth_multiplier;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getDepthwise_initializer() {
+		return depthwise_initializer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDepthwise_initializer(String newDepthwise_initializer) {
+		String oldDepthwise_initializer = depthwise_initializer;
+		depthwise_initializer = newDepthwise_initializer;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Convolution_layersPackage.SEPARABLE__DEPTHWISE_INITIALIZER, oldDepthwise_initializer, depthwise_initializer));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getPointwise_initializer() {
+		return pointwise_initializer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setPointwise_initializer(String newPointwise_initializer) {
+		String oldPointwise_initializer = pointwise_initializer;
+		pointwise_initializer = newPointwise_initializer;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Convolution_layersPackage.SEPARABLE__POINTWISE_INITIALIZER, oldPointwise_initializer, pointwise_initializer));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getDepthwise_regularizer() {
+		return depthwise_regularizer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDepthwise_regularizer(String newDepthwise_regularizer) {
+		String oldDepthwise_regularizer = depthwise_regularizer;
+		depthwise_regularizer = newDepthwise_regularizer;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Convolution_layersPackage.SEPARABLE__DEPTHWISE_REGULARIZER, oldDepthwise_regularizer, depthwise_regularizer));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getPoitnwise_regularizer() {
+		return poitnwise_regularizer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setPoitnwise_regularizer(String newPoitnwise_regularizer) {
+		String oldPoitnwise_regularizer = poitnwise_regularizer;
+		poitnwise_regularizer = newPoitnwise_regularizer;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Convolution_layersPackage.SEPARABLE__POITNWISE_REGULARIZER, oldPoitnwise_regularizer, poitnwise_regularizer));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getDepthwise_constraint() {
+		return depthwise_constraint;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDepthwise_constraint(String newDepthwise_constraint) {
+		String oldDepthwise_constraint = depthwise_constraint;
+		depthwise_constraint = newDepthwise_constraint;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Convolution_layersPackage.SEPARABLE__DEPTHWISE_CONSTRAINT, oldDepthwise_constraint, depthwise_constraint));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getPointwise_constraint() {
+		return pointwise_constraint;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setPointwise_constraint(String newPointwise_constraint) {
+		String oldPointwise_constraint = pointwise_constraint;
+		pointwise_constraint = newPointwise_constraint;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Convolution_layersPackage.SEPARABLE__POINTWISE_CONSTRAINT, oldPointwise_constraint, pointwise_constraint));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Convolution_layersPackage.SEPARABLE__DEPTH_MULTIPLIER:
+				return getDepth_multiplier();
+			case Convolution_layersPackage.SEPARABLE__DEPTHWISE_INITIALIZER:
+				return getDepthwise_initializer();
+			case Convolution_layersPackage.SEPARABLE__POINTWISE_INITIALIZER:
+				return getPointwise_initializer();
+			case Convolution_layersPackage.SEPARABLE__DEPTHWISE_REGULARIZER:
+				return getDepthwise_regularizer();
+			case Convolution_layersPackage.SEPARABLE__POITNWISE_REGULARIZER:
+				return getPoitnwise_regularizer();
+			case Convolution_layersPackage.SEPARABLE__DEPTHWISE_CONSTRAINT:
+				return getDepthwise_constraint();
+			case Convolution_layersPackage.SEPARABLE__POINTWISE_CONSTRAINT:
+				return getPointwise_constraint();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Convolution_layersPackage.SEPARABLE__DEPTH_MULTIPLIER:
+				getDepth_multiplier().clear();
+				getDepth_multiplier().addAll((Collection<? extends Integer>)newValue);
+				return;
+			case Convolution_layersPackage.SEPARABLE__DEPTHWISE_INITIALIZER:
+				setDepthwise_initializer((String)newValue);
+				return;
+			case Convolution_layersPackage.SEPARABLE__POINTWISE_INITIALIZER:
+				setPointwise_initializer((String)newValue);
+				return;
+			case Convolution_layersPackage.SEPARABLE__DEPTHWISE_REGULARIZER:
+				setDepthwise_regularizer((String)newValue);
+				return;
+			case Convolution_layersPackage.SEPARABLE__POITNWISE_REGULARIZER:
+				setPoitnwise_regularizer((String)newValue);
+				return;
+			case Convolution_layersPackage.SEPARABLE__DEPTHWISE_CONSTRAINT:
+				setDepthwise_constraint((String)newValue);
+				return;
+			case Convolution_layersPackage.SEPARABLE__POINTWISE_CONSTRAINT:
+				setPointwise_constraint((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Convolution_layersPackage.SEPARABLE__DEPTH_MULTIPLIER:
+				getDepth_multiplier().clear();
+				return;
+			case Convolution_layersPackage.SEPARABLE__DEPTHWISE_INITIALIZER:
+				setDepthwise_initializer(DEPTHWISE_INITIALIZER_EDEFAULT);
+				return;
+			case Convolution_layersPackage.SEPARABLE__POINTWISE_INITIALIZER:
+				setPointwise_initializer(POINTWISE_INITIALIZER_EDEFAULT);
+				return;
+			case Convolution_layersPackage.SEPARABLE__DEPTHWISE_REGULARIZER:
+				setDepthwise_regularizer(DEPTHWISE_REGULARIZER_EDEFAULT);
+				return;
+			case Convolution_layersPackage.SEPARABLE__POITNWISE_REGULARIZER:
+				setPoitnwise_regularizer(POITNWISE_REGULARIZER_EDEFAULT);
+				return;
+			case Convolution_layersPackage.SEPARABLE__DEPTHWISE_CONSTRAINT:
+				setDepthwise_constraint(DEPTHWISE_CONSTRAINT_EDEFAULT);
+				return;
+			case Convolution_layersPackage.SEPARABLE__POINTWISE_CONSTRAINT:
+				setPointwise_constraint(POINTWISE_CONSTRAINT_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Convolution_layersPackage.SEPARABLE__DEPTH_MULTIPLIER:
+				return depth_multiplier != null && !depth_multiplier.isEmpty();
+			case Convolution_layersPackage.SEPARABLE__DEPTHWISE_INITIALIZER:
+				return DEPTHWISE_INITIALIZER_EDEFAULT == null ? depthwise_initializer != null : !DEPTHWISE_INITIALIZER_EDEFAULT.equals(depthwise_initializer);
+			case Convolution_layersPackage.SEPARABLE__POINTWISE_INITIALIZER:
+				return POINTWISE_INITIALIZER_EDEFAULT == null ? pointwise_initializer != null : !POINTWISE_INITIALIZER_EDEFAULT.equals(pointwise_initializer);
+			case Convolution_layersPackage.SEPARABLE__DEPTHWISE_REGULARIZER:
+				return DEPTHWISE_REGULARIZER_EDEFAULT == null ? depthwise_regularizer != null : !DEPTHWISE_REGULARIZER_EDEFAULT.equals(depthwise_regularizer);
+			case Convolution_layersPackage.SEPARABLE__POITNWISE_REGULARIZER:
+				return POITNWISE_REGULARIZER_EDEFAULT == null ? poitnwise_regularizer != null : !POITNWISE_REGULARIZER_EDEFAULT.equals(poitnwise_regularizer);
+			case Convolution_layersPackage.SEPARABLE__DEPTHWISE_CONSTRAINT:
+				return DEPTHWISE_CONSTRAINT_EDEFAULT == null ? depthwise_constraint != null : !DEPTHWISE_CONSTRAINT_EDEFAULT.equals(depthwise_constraint);
+			case Convolution_layersPackage.SEPARABLE__POINTWISE_CONSTRAINT:
+				return POINTWISE_CONSTRAINT_EDEFAULT == null ? pointwise_constraint != null : !POINTWISE_CONSTRAINT_EDEFAULT.equals(pointwise_constraint);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (depth_multiplier: "); //$NON-NLS-1$
+		result.append(depth_multiplier);
+		result.append(", depthwise_initializer: "); //$NON-NLS-1$
+		result.append(depthwise_initializer);
+		result.append(", pointwise_initializer: "); //$NON-NLS-1$
+		result.append(pointwise_initializer);
+		result.append(", depthwise_regularizer: "); //$NON-NLS-1$
+		result.append(depthwise_regularizer);
+		result.append(", poitnwise_regularizer: "); //$NON-NLS-1$
+		result.append(poitnwise_regularizer);
+		result.append(", depthwise_constraint: "); //$NON-NLS-1$
+		result.append(depthwise_constraint);
+		result.append(", pointwise_constraint: "); //$NON-NLS-1$
+		result.append(pointwise_constraint);
+		result.append(')');
+		return result.toString();
+	}
+
+} //SeparableImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/UnfoldImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/UnfoldImpl.java
new file mode 100644
index 0000000..b53d99e
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/UnfoldImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Unfold;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Unfold</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class UnfoldImpl extends Convolution_layersImpl implements Unfold {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected UnfoldImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Convolution_layersPackage.Literals.UNFOLD;
+	}
+
+} //UnfoldImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/basicImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/basicImpl.java
new file mode 100644
index 0000000..2924efc
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/basicImpl.java
@@ -0,0 +1,294 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.basic;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.constraints;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>basic</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.basicImpl#getKernel_initializer <em>Kernel initializer</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.basicImpl#getKernel_constraint <em>Kernel constraint</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.basicImpl#getKernel_regularizer <em>Kernel regularizer</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class basicImpl extends LayerWithFilterImpl implements basic {
+	/**
+	 * The default value of the '{@link #getKernel_initializer() <em>Kernel initializer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKernel_initializer()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String KERNEL_INITIALIZER_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getKernel_initializer() <em>Kernel initializer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKernel_initializer()
+	 * @generated
+	 * @ordered
+	 */
+	protected String kernel_initializer = KERNEL_INITIALIZER_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getKernel_constraint() <em>Kernel constraint</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKernel_constraint()
+	 * @generated
+	 * @ordered
+	 */
+	protected constraints kernel_constraint;
+
+	/**
+	 * The default value of the '{@link #getKernel_regularizer() <em>Kernel regularizer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKernel_regularizer()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String KERNEL_REGULARIZER_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getKernel_regularizer() <em>Kernel regularizer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKernel_regularizer()
+	 * @generated
+	 * @ordered
+	 */
+	protected String kernel_regularizer = KERNEL_REGULARIZER_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected basicImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Convolution_layersPackage.Literals.BASIC;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getKernel_initializer() {
+		return kernel_initializer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setKernel_initializer(String newKernel_initializer) {
+		String oldKernel_initializer = kernel_initializer;
+		kernel_initializer = newKernel_initializer;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Convolution_layersPackage.BASIC__KERNEL_INITIALIZER, oldKernel_initializer, kernel_initializer));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public constraints getKernel_constraint() {
+		if (kernel_constraint != null && kernel_constraint.eIsProxy()) {
+			InternalEObject oldKernel_constraint = (InternalEObject)kernel_constraint;
+			kernel_constraint = (constraints)eResolveProxy(oldKernel_constraint);
+			if (kernel_constraint != oldKernel_constraint) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, Convolution_layersPackage.BASIC__KERNEL_CONSTRAINT, oldKernel_constraint, kernel_constraint));
+			}
+		}
+		return kernel_constraint;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public constraints basicGetKernel_constraint() {
+		return kernel_constraint;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setKernel_constraint(constraints newKernel_constraint) {
+		constraints oldKernel_constraint = kernel_constraint;
+		kernel_constraint = newKernel_constraint;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Convolution_layersPackage.BASIC__KERNEL_CONSTRAINT, oldKernel_constraint, kernel_constraint));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getKernel_regularizer() {
+		return kernel_regularizer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setKernel_regularizer(String newKernel_regularizer) {
+		String oldKernel_regularizer = kernel_regularizer;
+		kernel_regularizer = newKernel_regularizer;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Convolution_layersPackage.BASIC__KERNEL_REGULARIZER, oldKernel_regularizer, kernel_regularizer));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Convolution_layersPackage.BASIC__KERNEL_INITIALIZER:
+				return getKernel_initializer();
+			case Convolution_layersPackage.BASIC__KERNEL_CONSTRAINT:
+				if (resolve) return getKernel_constraint();
+				return basicGetKernel_constraint();
+			case Convolution_layersPackage.BASIC__KERNEL_REGULARIZER:
+				return getKernel_regularizer();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Convolution_layersPackage.BASIC__KERNEL_INITIALIZER:
+				setKernel_initializer((String)newValue);
+				return;
+			case Convolution_layersPackage.BASIC__KERNEL_CONSTRAINT:
+				setKernel_constraint((constraints)newValue);
+				return;
+			case Convolution_layersPackage.BASIC__KERNEL_REGULARIZER:
+				setKernel_regularizer((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Convolution_layersPackage.BASIC__KERNEL_INITIALIZER:
+				setKernel_initializer(KERNEL_INITIALIZER_EDEFAULT);
+				return;
+			case Convolution_layersPackage.BASIC__KERNEL_CONSTRAINT:
+				setKernel_constraint((constraints)null);
+				return;
+			case Convolution_layersPackage.BASIC__KERNEL_REGULARIZER:
+				setKernel_regularizer(KERNEL_REGULARIZER_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Convolution_layersPackage.BASIC__KERNEL_INITIALIZER:
+				return KERNEL_INITIALIZER_EDEFAULT == null ? kernel_initializer != null : !KERNEL_INITIALIZER_EDEFAULT.equals(kernel_initializer);
+			case Convolution_layersPackage.BASIC__KERNEL_CONSTRAINT:
+				return kernel_constraint != null;
+			case Convolution_layersPackage.BASIC__KERNEL_REGULARIZER:
+				return KERNEL_REGULARIZER_EDEFAULT == null ? kernel_regularizer != null : !KERNEL_REGULARIZER_EDEFAULT.equals(kernel_regularizer);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (kernel_initializer: "); //$NON-NLS-1$
+		result.append(kernel_initializer);
+		result.append(", kernel_regularizer: "); //$NON-NLS-1$
+		result.append(kernel_regularizer);
+		result.append(')');
+		return result.toString();
+	}
+
+} //basicImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/transposeImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/transposeImpl.java
new file mode 100644
index 0000000..7e1170b
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/impl/transposeImpl.java
@@ -0,0 +1,157 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.transpose;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>transpose</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.transposeImpl#getOutput_padding <em>Output padding</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class transposeImpl extends basicImpl implements transpose {
+	/**
+	 * The cached value of the '{@link #getOutput_padding() <em>Output padding</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOutput_padding()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Integer> output_padding;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected transposeImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Convolution_layersPackage.Literals.TRANSPOSE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Integer> getOutput_padding() {
+		if (output_padding == null) {
+			output_padding = new EDataTypeUniqueEList<Integer>(Integer.class, this, Convolution_layersPackage.TRANSPOSE__OUTPUT_PADDING);
+		}
+		return output_padding;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Convolution_layersPackage.TRANSPOSE__OUTPUT_PADDING:
+				return getOutput_padding();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Convolution_layersPackage.TRANSPOSE__OUTPUT_PADDING:
+				getOutput_padding().clear();
+				getOutput_padding().addAll((Collection<? extends Integer>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Convolution_layersPackage.TRANSPOSE__OUTPUT_PADDING:
+				getOutput_padding().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Convolution_layersPackage.TRANSPOSE__OUTPUT_PADDING:
+				return output_padding != null && !output_padding.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (output_padding: "); //$NON-NLS-1$
+		result.append(output_padding);
+		result.append(')');
+		return result.toString();
+	}
+
+} //transposeImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/transpose.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/transpose.java
new file mode 100644
index 0000000..fd6dcf0
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/transpose.java
@@ -0,0 +1,49 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>transpose</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.transpose#getOutput_padding <em>Output padding</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#gettranspose()
+ * @model abstract="true"
+ * @generated
+ */
+public interface transpose extends basic {
+	/**
+	 * Returns the value of the '<em><b>Output padding</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.Integer}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Output padding</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Output padding</em>' attribute list.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage#gettranspose_Output_padding()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	EList<Integer> getOutput_padding();
+
+} // transpose
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/util/Convolution_layersAdapterFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/util/Convolution_layersAdapterFactory.java
new file mode 100644
index 0000000..5f30a4e
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/util/Convolution_layersAdapterFactory.java
@@ -0,0 +1,436 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.*;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage
+ * @generated
+ */
+public class Convolution_layersAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static Convolution_layersPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Convolution_layersAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = Convolution_layersPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Convolution_layersSwitch<Adapter> modelSwitch =
+		new Convolution_layersSwitch<Adapter>() {
+			@Override
+			public Adapter caseConvolution(Convolution object) {
+				return createConvolutionAdapter();
+			}
+			@Override
+			public Adapter caseConvolution_layers(Convolution_layers object) {
+				return createConvolution_layersAdapter();
+			}
+			@Override
+			public Adapter caseUnfold(Unfold object) {
+				return createUnfoldAdapter();
+			}
+			@Override
+			public Adapter caseFold(Fold object) {
+				return createFoldAdapter();
+			}
+			@Override
+			public Adapter caseConv2d(Conv2d object) {
+				return createConv2dAdapter();
+			}
+			@Override
+			public Adapter casebasic(basic object) {
+				return createbasicAdapter();
+			}
+			@Override
+			public Adapter caseLayerWithFilter(LayerWithFilter object) {
+				return createLayerWithFilterAdapter();
+			}
+			@Override
+			public Adapter caseConv3d(Conv3d object) {
+				return createConv3dAdapter();
+			}
+			@Override
+			public Adapter caseConvTranspose1d(ConvTranspose1d object) {
+				return createConvTranspose1dAdapter();
+			}
+			@Override
+			public Adapter caseConvTranspose2d(ConvTranspose2d object) {
+				return createConvTranspose2dAdapter();
+			}
+			@Override
+			public Adapter casetranspose(transpose object) {
+				return createtransposeAdapter();
+			}
+			@Override
+			public Adapter caseConvTranspose3d(ConvTranspose3d object) {
+				return createConvTranspose3dAdapter();
+			}
+			@Override
+			public Adapter caseConv1d(Conv1d object) {
+				return createConv1dAdapter();
+			}
+			@Override
+			public Adapter caseSeparable(Separable object) {
+				return createSeparableAdapter();
+			}
+			@Override
+			public Adapter caseSeparableConv2D(SeparableConv2D object) {
+				return createSeparableConv2DAdapter();
+			}
+			@Override
+			public Adapter caseSeparableConv1D(SeparableConv1D object) {
+				return createSeparableConv1DAdapter();
+			}
+			@Override
+			public Adapter caseDepthwiseConv2D(DepthwiseConv2D object) {
+				return createDepthwiseConv2DAdapter();
+			}
+			@Override
+			public Adapter caseModel(Model object) {
+				return createModelAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution <em>Convolution</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution
+	 * @generated
+	 */
+	public Adapter createConvolutionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layers <em>Convolution layers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layers
+	 * @generated
+	 */
+	public Adapter createConvolution_layersAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Unfold <em>Unfold</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Unfold
+	 * @generated
+	 */
+	public Adapter createUnfoldAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Fold <em>Fold</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Fold
+	 * @generated
+	 */
+	public Adapter createFoldAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Conv2d <em>Conv2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Conv2d
+	 * @generated
+	 */
+	public Adapter createConv2dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.basic <em>basic</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.basic
+	 * @generated
+	 */
+	public Adapter createbasicAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.LayerWithFilter <em>Layer With Filter</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.LayerWithFilter
+	 * @generated
+	 */
+	public Adapter createLayerWithFilterAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Conv3d <em>Conv3d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Conv3d
+	 * @generated
+	 */
+	public Adapter createConv3dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.ConvTranspose1d <em>Conv Transpose1d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.ConvTranspose1d
+	 * @generated
+	 */
+	public Adapter createConvTranspose1dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.ConvTranspose2d <em>Conv Transpose2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.ConvTranspose2d
+	 * @generated
+	 */
+	public Adapter createConvTranspose2dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.transpose <em>transpose</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.transpose
+	 * @generated
+	 */
+	public Adapter createtransposeAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.ConvTranspose3d <em>Conv Transpose3d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.ConvTranspose3d
+	 * @generated
+	 */
+	public Adapter createConvTranspose3dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Conv1d <em>Conv1d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Conv1d
+	 * @generated
+	 */
+	public Adapter createConv1dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Separable <em>Separable</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Separable
+	 * @generated
+	 */
+	public Adapter createSeparableAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.SeparableConv2D <em>Separable Conv2 D</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.SeparableConv2D
+	 * @generated
+	 */
+	public Adapter createSeparableConv2DAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.SeparableConv1D <em>Separable Conv1 D</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.SeparableConv1D
+	 * @generated
+	 */
+	public Adapter createSeparableConv1DAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.DepthwiseConv2D <em>Depthwise Conv2 D</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.DepthwiseConv2D
+	 * @generated
+	 */
+	public Adapter createDepthwiseConv2DAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model <em>Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.Model
+	 * @generated
+	 */
+	public Adapter createModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //Convolution_layersAdapterFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/util/Convolution_layersSwitch.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/util/Convolution_layersSwitch.java
new file mode 100644
index 0000000..e891157
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Convolution_layers/util/Convolution_layersSwitch.java
@@ -0,0 +1,538 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.*;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage
+ * @generated
+ */
+public class Convolution_layersSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static Convolution_layersPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Convolution_layersSwitch() {
+		if (modelPackage == null) {
+			modelPackage = Convolution_layersPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case Convolution_layersPackage.CONVOLUTION: {
+				Convolution convolution = (Convolution)theEObject;
+				T result = caseConvolution(convolution);
+				if (result == null) result = caseConvolution_layers(convolution);
+				if (result == null) result = caseModel(convolution);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Convolution_layersPackage.CONVOLUTION_LAYERS: {
+				Convolution_layers convolution_layers = (Convolution_layers)theEObject;
+				T result = caseConvolution_layers(convolution_layers);
+				if (result == null) result = caseModel(convolution_layers);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Convolution_layersPackage.UNFOLD: {
+				Unfold unfold = (Unfold)theEObject;
+				T result = caseUnfold(unfold);
+				if (result == null) result = caseConvolution_layers(unfold);
+				if (result == null) result = caseModel(unfold);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Convolution_layersPackage.FOLD: {
+				Fold fold = (Fold)theEObject;
+				T result = caseFold(fold);
+				if (result == null) result = caseConvolution_layers(fold);
+				if (result == null) result = caseModel(fold);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Convolution_layersPackage.CONV2D: {
+				Conv2d conv2d = (Conv2d)theEObject;
+				T result = caseConv2d(conv2d);
+				if (result == null) result = casebasic(conv2d);
+				if (result == null) result = caseLayerWithFilter(conv2d);
+				if (result == null) result = caseConvolution(conv2d);
+				if (result == null) result = caseConvolution_layers(conv2d);
+				if (result == null) result = caseModel(conv2d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Convolution_layersPackage.BASIC: {
+				basic basic = (basic)theEObject;
+				T result = casebasic(basic);
+				if (result == null) result = caseLayerWithFilter(basic);
+				if (result == null) result = caseConvolution(basic);
+				if (result == null) result = caseConvolution_layers(basic);
+				if (result == null) result = caseModel(basic);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Convolution_layersPackage.LAYER_WITH_FILTER: {
+				LayerWithFilter layerWithFilter = (LayerWithFilter)theEObject;
+				T result = caseLayerWithFilter(layerWithFilter);
+				if (result == null) result = caseConvolution(layerWithFilter);
+				if (result == null) result = caseConvolution_layers(layerWithFilter);
+				if (result == null) result = caseModel(layerWithFilter);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Convolution_layersPackage.CONV3D: {
+				Conv3d conv3d = (Conv3d)theEObject;
+				T result = caseConv3d(conv3d);
+				if (result == null) result = casebasic(conv3d);
+				if (result == null) result = caseLayerWithFilter(conv3d);
+				if (result == null) result = caseConvolution(conv3d);
+				if (result == null) result = caseConvolution_layers(conv3d);
+				if (result == null) result = caseModel(conv3d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Convolution_layersPackage.CONV_TRANSPOSE1D: {
+				ConvTranspose1d convTranspose1d = (ConvTranspose1d)theEObject;
+				T result = caseConvTranspose1d(convTranspose1d);
+				if (result == null) result = caseLayerWithFilter(convTranspose1d);
+				if (result == null) result = caseConvolution(convTranspose1d);
+				if (result == null) result = caseConvolution_layers(convTranspose1d);
+				if (result == null) result = caseModel(convTranspose1d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Convolution_layersPackage.CONV_TRANSPOSE2D: {
+				ConvTranspose2d convTranspose2d = (ConvTranspose2d)theEObject;
+				T result = caseConvTranspose2d(convTranspose2d);
+				if (result == null) result = casetranspose(convTranspose2d);
+				if (result == null) result = casebasic(convTranspose2d);
+				if (result == null) result = caseLayerWithFilter(convTranspose2d);
+				if (result == null) result = caseConvolution(convTranspose2d);
+				if (result == null) result = caseConvolution_layers(convTranspose2d);
+				if (result == null) result = caseModel(convTranspose2d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Convolution_layersPackage.TRANSPOSE: {
+				transpose transpose = (transpose)theEObject;
+				T result = casetranspose(transpose);
+				if (result == null) result = casebasic(transpose);
+				if (result == null) result = caseLayerWithFilter(transpose);
+				if (result == null) result = caseConvolution(transpose);
+				if (result == null) result = caseConvolution_layers(transpose);
+				if (result == null) result = caseModel(transpose);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Convolution_layersPackage.CONV_TRANSPOSE3D: {
+				ConvTranspose3d convTranspose3d = (ConvTranspose3d)theEObject;
+				T result = caseConvTranspose3d(convTranspose3d);
+				if (result == null) result = casetranspose(convTranspose3d);
+				if (result == null) result = casebasic(convTranspose3d);
+				if (result == null) result = caseLayerWithFilter(convTranspose3d);
+				if (result == null) result = caseConvolution(convTranspose3d);
+				if (result == null) result = caseConvolution_layers(convTranspose3d);
+				if (result == null) result = caseModel(convTranspose3d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Convolution_layersPackage.CONV1D: {
+				Conv1d conv1d = (Conv1d)theEObject;
+				T result = caseConv1d(conv1d);
+				if (result == null) result = casebasic(conv1d);
+				if (result == null) result = caseLayerWithFilter(conv1d);
+				if (result == null) result = caseConvolution(conv1d);
+				if (result == null) result = caseConvolution_layers(conv1d);
+				if (result == null) result = caseModel(conv1d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Convolution_layersPackage.SEPARABLE: {
+				Separable separable = (Separable)theEObject;
+				T result = caseSeparable(separable);
+				if (result == null) result = caseLayerWithFilter(separable);
+				if (result == null) result = caseConvolution(separable);
+				if (result == null) result = caseConvolution_layers(separable);
+				if (result == null) result = caseModel(separable);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Convolution_layersPackage.SEPARABLE_CONV2_D: {
+				SeparableConv2D separableConv2D = (SeparableConv2D)theEObject;
+				T result = caseSeparableConv2D(separableConv2D);
+				if (result == null) result = caseSeparable(separableConv2D);
+				if (result == null) result = caseLayerWithFilter(separableConv2D);
+				if (result == null) result = caseConvolution(separableConv2D);
+				if (result == null) result = caseConvolution_layers(separableConv2D);
+				if (result == null) result = caseModel(separableConv2D);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Convolution_layersPackage.SEPARABLE_CONV1_D: {
+				SeparableConv1D separableConv1D = (SeparableConv1D)theEObject;
+				T result = caseSeparableConv1D(separableConv1D);
+				if (result == null) result = caseSeparable(separableConv1D);
+				if (result == null) result = caseLayerWithFilter(separableConv1D);
+				if (result == null) result = caseConvolution(separableConv1D);
+				if (result == null) result = caseConvolution_layers(separableConv1D);
+				if (result == null) result = caseModel(separableConv1D);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Convolution_layersPackage.DEPTHWISE_CONV2_D: {
+				DepthwiseConv2D depthwiseConv2D = (DepthwiseConv2D)theEObject;
+				T result = caseDepthwiseConv2D(depthwiseConv2D);
+				if (result == null) result = caseConvolution(depthwiseConv2D);
+				if (result == null) result = caseConvolution_layers(depthwiseConv2D);
+				if (result == null) result = caseModel(depthwiseConv2D);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Convolution</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Convolution</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseConvolution(Convolution object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Convolution layers</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Convolution layers</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseConvolution_layers(Convolution_layers object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Unfold</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Unfold</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseUnfold(Unfold object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Fold</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Fold</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFold(Fold object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Conv2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Conv2d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseConv2d(Conv2d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>basic</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>basic</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casebasic(basic object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Layer With Filter</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Layer With Filter</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLayerWithFilter(LayerWithFilter object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Conv3d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Conv3d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseConv3d(Conv3d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Conv Transpose1d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Conv Transpose1d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseConvTranspose1d(ConvTranspose1d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Conv Transpose2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Conv Transpose2d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseConvTranspose2d(ConvTranspose2d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>transpose</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>transpose</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casetranspose(transpose object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Conv Transpose3d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Conv Transpose3d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseConvTranspose3d(ConvTranspose3d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Conv1d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Conv1d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseConv1d(Conv1d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Separable</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Separable</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSeparable(Separable object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Separable Conv2 D</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Separable Conv2 D</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSeparableConv2D(SeparableConv2D object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Separable Conv1 D</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Separable Conv1 D</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSeparableConv1D(SeparableConv1D object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Depthwise Conv2 D</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Depthwise Conv2 D</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDepthwiseConv2D(DepthwiseConv2D object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseModel(Model object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //Convolution_layersSwitch
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/DataParallel.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/DataParallel.java
new file mode 100644
index 0000000..4c41b3f
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/DataParallel.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Data Parallel</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage#getDataParallel()
+ * @model
+ * @generated
+ */
+public interface DataParallel extends DataParallel_layers {
+} // DataParallel
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/DataParallel_layers.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/DataParallel_layers.java
new file mode 100644
index 0000000..a4fea2e
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/DataParallel_layers.java
@@ -0,0 +1,94 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Data Parallel layers</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layers#getModule <em>Module</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layers#getDevice_ids <em>Device ids</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layers#getOutput_device <em>Output device</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage#getDataParallel_layers()
+ * @model abstract="true"
+ * @generated
+ */
+public interface DataParallel_layers extends Model {
+	/**
+	 * Returns the value of the '<em><b>Module</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Module</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Module</em>' reference.
+	 * @see #setModule(Model)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage#getDataParallel_layers_Module()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	Model getModule();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layers#getModule <em>Module</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Module</em>' reference.
+	 * @see #getModule()
+	 * @generated
+	 */
+	void setModule(Model value);
+
+	/**
+	 * Returns the value of the '<em><b>Device ids</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.Integer}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Device ids</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Device ids</em>' attribute list.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage#getDataParallel_layers_Device_ids()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	EList<Integer> getDevice_ids();
+
+	/**
+	 * Returns the value of the '<em><b>Output device</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.Integer}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Output device</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Output device</em>' attribute list.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage#getDataParallel_layers_Output_device()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	EList<Integer> getOutput_device();
+
+} // DataParallel_layers
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/DataParallel_layersFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/DataParallel_layersFactory.java
new file mode 100644
index 0000000..25da7a5
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/DataParallel_layersFactory.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage
+ * @generated
+ */
+public interface DataParallel_layersFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	DataParallel_layersFactory eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Distributed Data Parallel</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Distributed Data Parallel</em>'.
+	 * @generated
+	 */
+	DistributedDataParallel createDistributedDataParallel();
+
+	/**
+	 * Returns a new object of class '<em>Data Parallel</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Data Parallel</em>'.
+	 * @generated
+	 */
+	DataParallel createDataParallel();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	DataParallel_layersPackage getDataParallel_layersPackage();
+
+} //DataParallel_layersFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/DataParallel_layersPackage.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/DataParallel_layersPackage.java
new file mode 100644
index 0000000..f4e558b
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/DataParallel_layersPackage.java
@@ -0,0 +1,707 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface DataParallel_layersPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "DataParallel_layers"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://www.eclipse.org/papyrus/AIML/dataparallel/1"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "AIML.DataParallel_layers"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	DataParallel_layersPackage eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersImpl <em>Data Parallel layers</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersPackageImpl#getDataParallel_layers()
+	 * @generated
+	 */
+	int DATA_PARALLEL_LAYERS = 0;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_PARALLEL_LAYERS__BASE_CLASS = ModulePackage.MODEL__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_PARALLEL_LAYERS__NAME = ModulePackage.MODEL__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_PARALLEL_LAYERS__DATA = ModulePackage.MODEL__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_PARALLEL_LAYERS__REQUIRES_GRAD = ModulePackage.MODEL__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_PARALLEL_LAYERS__SUB_MODULE = ModulePackage.MODEL__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_PARALLEL_LAYERS__OPTIMIZER = ModulePackage.MODEL__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_PARALLEL_LAYERS__LOSS = ModulePackage.MODEL__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Module</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_PARALLEL_LAYERS__MODULE = ModulePackage.MODEL_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Device ids</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_PARALLEL_LAYERS__DEVICE_IDS = ModulePackage.MODEL_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Output device</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_PARALLEL_LAYERS__OUTPUT_DEVICE = ModulePackage.MODEL_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Data Parallel layers</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_PARALLEL_LAYERS_FEATURE_COUNT = ModulePackage.MODEL_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of operations of the '<em>Data Parallel layers</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_PARALLEL_LAYERS_OPERATION_COUNT = ModulePackage.MODEL_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DistributedDataParallelImpl <em>Distributed Data Parallel</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DistributedDataParallelImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersPackageImpl#getDistributedDataParallel()
+	 * @generated
+	 */
+	int DISTRIBUTED_DATA_PARALLEL = 1;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISTRIBUTED_DATA_PARALLEL__BASE_CLASS = DATA_PARALLEL_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISTRIBUTED_DATA_PARALLEL__NAME = DATA_PARALLEL_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISTRIBUTED_DATA_PARALLEL__DATA = DATA_PARALLEL_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISTRIBUTED_DATA_PARALLEL__REQUIRES_GRAD = DATA_PARALLEL_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISTRIBUTED_DATA_PARALLEL__SUB_MODULE = DATA_PARALLEL_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISTRIBUTED_DATA_PARALLEL__OPTIMIZER = DATA_PARALLEL_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISTRIBUTED_DATA_PARALLEL__LOSS = DATA_PARALLEL_LAYERS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Module</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISTRIBUTED_DATA_PARALLEL__MODULE = DATA_PARALLEL_LAYERS__MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Device ids</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISTRIBUTED_DATA_PARALLEL__DEVICE_IDS = DATA_PARALLEL_LAYERS__DEVICE_IDS;
+
+	/**
+	 * The feature id for the '<em><b>Output device</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISTRIBUTED_DATA_PARALLEL__OUTPUT_DEVICE = DATA_PARALLEL_LAYERS__OUTPUT_DEVICE;
+
+	/**
+	 * The feature id for the '<em><b>Broadcast buffers</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISTRIBUTED_DATA_PARALLEL__BROADCAST_BUFFERS = DATA_PARALLEL_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Process group</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISTRIBUTED_DATA_PARALLEL__PROCESS_GROUP = DATA_PARALLEL_LAYERS_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Bucket cap mb</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISTRIBUTED_DATA_PARALLEL__BUCKET_CAP_MB = DATA_PARALLEL_LAYERS_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Find unsused parameters</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISTRIBUTED_DATA_PARALLEL__FIND_UNSUSED_PARAMETERS = DATA_PARALLEL_LAYERS_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Check reduction</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISTRIBUTED_DATA_PARALLEL__CHECK_REDUCTION = DATA_PARALLEL_LAYERS_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of structural features of the '<em>Distributed Data Parallel</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISTRIBUTED_DATA_PARALLEL_FEATURE_COUNT = DATA_PARALLEL_LAYERS_FEATURE_COUNT + 5;
+
+	/**
+	 * The number of operations of the '<em>Distributed Data Parallel</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISTRIBUTED_DATA_PARALLEL_OPERATION_COUNT = DATA_PARALLEL_LAYERS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallelImpl <em>Data Parallel</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallelImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersPackageImpl#getDataParallel()
+	 * @generated
+	 */
+	int DATA_PARALLEL = 2;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_PARALLEL__BASE_CLASS = DATA_PARALLEL_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_PARALLEL__NAME = DATA_PARALLEL_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_PARALLEL__DATA = DATA_PARALLEL_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_PARALLEL__REQUIRES_GRAD = DATA_PARALLEL_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_PARALLEL__SUB_MODULE = DATA_PARALLEL_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_PARALLEL__OPTIMIZER = DATA_PARALLEL_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_PARALLEL__LOSS = DATA_PARALLEL_LAYERS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Module</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_PARALLEL__MODULE = DATA_PARALLEL_LAYERS__MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Device ids</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_PARALLEL__DEVICE_IDS = DATA_PARALLEL_LAYERS__DEVICE_IDS;
+
+	/**
+	 * The feature id for the '<em><b>Output device</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_PARALLEL__OUTPUT_DEVICE = DATA_PARALLEL_LAYERS__OUTPUT_DEVICE;
+
+	/**
+	 * The number of structural features of the '<em>Data Parallel</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_PARALLEL_FEATURE_COUNT = DATA_PARALLEL_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Data Parallel</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DATA_PARALLEL_OPERATION_COUNT = DATA_PARALLEL_LAYERS_OPERATION_COUNT + 0;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layers <em>Data Parallel layers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Data Parallel layers</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layers
+	 * @generated
+	 */
+	EClass getDataParallel_layers();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layers#getModule <em>Module</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Module</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layers#getModule()
+	 * @see #getDataParallel_layers()
+	 * @generated
+	 */
+	EReference getDataParallel_layers_Module();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layers#getDevice_ids <em>Device ids</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Device ids</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layers#getDevice_ids()
+	 * @see #getDataParallel_layers()
+	 * @generated
+	 */
+	EAttribute getDataParallel_layers_Device_ids();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layers#getOutput_device <em>Output device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Output device</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layers#getOutput_device()
+	 * @see #getDataParallel_layers()
+	 * @generated
+	 */
+	EAttribute getDataParallel_layers_Output_device();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DistributedDataParallel <em>Distributed Data Parallel</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Distributed Data Parallel</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DistributedDataParallel
+	 * @generated
+	 */
+	EClass getDistributedDataParallel();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DistributedDataParallel#isBroadcast_buffers <em>Broadcast buffers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Broadcast buffers</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DistributedDataParallel#isBroadcast_buffers()
+	 * @see #getDistributedDataParallel()
+	 * @generated
+	 */
+	EAttribute getDistributedDataParallel_Broadcast_buffers();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DistributedDataParallel#getProcess_group <em>Process group</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Process group</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DistributedDataParallel#getProcess_group()
+	 * @see #getDistributedDataParallel()
+	 * @generated
+	 */
+	EAttribute getDistributedDataParallel_Process_group();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DistributedDataParallel#getBucket_cap_mb <em>Bucket cap mb</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Bucket cap mb</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DistributedDataParallel#getBucket_cap_mb()
+	 * @see #getDistributedDataParallel()
+	 * @generated
+	 */
+	EAttribute getDistributedDataParallel_Bucket_cap_mb();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DistributedDataParallel#isFind_unsused_parameters <em>Find unsused parameters</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Find unsused parameters</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DistributedDataParallel#isFind_unsused_parameters()
+	 * @see #getDistributedDataParallel()
+	 * @generated
+	 */
+	EAttribute getDistributedDataParallel_Find_unsused_parameters();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DistributedDataParallel#isCheck_reduction <em>Check reduction</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Check reduction</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DistributedDataParallel#isCheck_reduction()
+	 * @see #getDistributedDataParallel()
+	 * @generated
+	 */
+	EAttribute getDistributedDataParallel_Check_reduction();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel <em>Data Parallel</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Data Parallel</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel
+	 * @generated
+	 */
+	EClass getDataParallel();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	DataParallel_layersFactory getDataParallel_layersFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersImpl <em>Data Parallel layers</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersPackageImpl#getDataParallel_layers()
+		 * @generated
+		 */
+		EClass DATA_PARALLEL_LAYERS = eINSTANCE.getDataParallel_layers();
+
+		/**
+		 * The meta object literal for the '<em><b>Module</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference DATA_PARALLEL_LAYERS__MODULE = eINSTANCE.getDataParallel_layers_Module();
+
+		/**
+		 * The meta object literal for the '<em><b>Device ids</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATA_PARALLEL_LAYERS__DEVICE_IDS = eINSTANCE.getDataParallel_layers_Device_ids();
+
+		/**
+		 * The meta object literal for the '<em><b>Output device</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DATA_PARALLEL_LAYERS__OUTPUT_DEVICE = eINSTANCE.getDataParallel_layers_Output_device();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DistributedDataParallelImpl <em>Distributed Data Parallel</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DistributedDataParallelImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersPackageImpl#getDistributedDataParallel()
+		 * @generated
+		 */
+		EClass DISTRIBUTED_DATA_PARALLEL = eINSTANCE.getDistributedDataParallel();
+
+		/**
+		 * The meta object literal for the '<em><b>Broadcast buffers</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DISTRIBUTED_DATA_PARALLEL__BROADCAST_BUFFERS = eINSTANCE.getDistributedDataParallel_Broadcast_buffers();
+
+		/**
+		 * The meta object literal for the '<em><b>Process group</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DISTRIBUTED_DATA_PARALLEL__PROCESS_GROUP = eINSTANCE.getDistributedDataParallel_Process_group();
+
+		/**
+		 * The meta object literal for the '<em><b>Bucket cap mb</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DISTRIBUTED_DATA_PARALLEL__BUCKET_CAP_MB = eINSTANCE.getDistributedDataParallel_Bucket_cap_mb();
+
+		/**
+		 * The meta object literal for the '<em><b>Find unsused parameters</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DISTRIBUTED_DATA_PARALLEL__FIND_UNSUSED_PARAMETERS = eINSTANCE.getDistributedDataParallel_Find_unsused_parameters();
+
+		/**
+		 * The meta object literal for the '<em><b>Check reduction</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DISTRIBUTED_DATA_PARALLEL__CHECK_REDUCTION = eINSTANCE.getDistributedDataParallel_Check_reduction();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallelImpl <em>Data Parallel</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallelImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersPackageImpl#getDataParallel()
+		 * @generated
+		 */
+		EClass DATA_PARALLEL = eINSTANCE.getDataParallel();
+
+	}
+
+} //DataParallel_layersPackage
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/DistributedDataParallel.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/DistributedDataParallel.java
new file mode 100644
index 0000000..0587fce
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/DistributedDataParallel.java
@@ -0,0 +1,166 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Distributed Data Parallel</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DistributedDataParallel#isBroadcast_buffers <em>Broadcast buffers</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DistributedDataParallel#getProcess_group <em>Process group</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DistributedDataParallel#getBucket_cap_mb <em>Bucket cap mb</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DistributedDataParallel#isFind_unsused_parameters <em>Find unsused parameters</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DistributedDataParallel#isCheck_reduction <em>Check reduction</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage#getDistributedDataParallel()
+ * @model
+ * @generated
+ */
+public interface DistributedDataParallel extends DataParallel_layers {
+	/**
+	 * Returns the value of the '<em><b>Broadcast buffers</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Broadcast buffers</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Broadcast buffers</em>' attribute.
+	 * @see #setBroadcast_buffers(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage#getDistributedDataParallel_Broadcast_buffers()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isBroadcast_buffers();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DistributedDataParallel#isBroadcast_buffers <em>Broadcast buffers</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Broadcast buffers</em>' attribute.
+	 * @see #isBroadcast_buffers()
+	 * @generated
+	 */
+	void setBroadcast_buffers(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Process group</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Process group</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Process group</em>' attribute.
+	 * @see #setProcess_group(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage#getDistributedDataParallel_Process_group()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	int getProcess_group();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DistributedDataParallel#getProcess_group <em>Process group</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Process group</em>' attribute.
+	 * @see #getProcess_group()
+	 * @generated
+	 */
+	void setProcess_group(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Bucket cap mb</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Bucket cap mb</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Bucket cap mb</em>' attribute.
+	 * @see #setBucket_cap_mb(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage#getDistributedDataParallel_Bucket_cap_mb()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	int getBucket_cap_mb();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DistributedDataParallel#getBucket_cap_mb <em>Bucket cap mb</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Bucket cap mb</em>' attribute.
+	 * @see #getBucket_cap_mb()
+	 * @generated
+	 */
+	void setBucket_cap_mb(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Find unsused parameters</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Find unsused parameters</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Find unsused parameters</em>' attribute.
+	 * @see #setFind_unsused_parameters(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage#getDistributedDataParallel_Find_unsused_parameters()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isFind_unsused_parameters();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DistributedDataParallel#isFind_unsused_parameters <em>Find unsused parameters</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Find unsused parameters</em>' attribute.
+	 * @see #isFind_unsused_parameters()
+	 * @generated
+	 */
+	void setFind_unsused_parameters(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Check reduction</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Check reduction</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Check reduction</em>' attribute.
+	 * @see #setCheck_reduction(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage#getDistributedDataParallel_Check_reduction()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isCheck_reduction();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DistributedDataParallel#isCheck_reduction <em>Check reduction</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Check reduction</em>' attribute.
+	 * @see #isCheck_reduction()
+	 * @generated
+	 */
+	void setCheck_reduction(boolean value);
+
+} // DistributedDataParallel
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/impl/DataParallelImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/impl/DataParallelImpl.java
new file mode 100644
index 0000000..8921c53
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/impl/DataParallelImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel;
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Data Parallel</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class DataParallelImpl extends DataParallel_layersImpl implements DataParallel {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DataParallelImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DataParallel_layersPackage.Literals.DATA_PARALLEL;
+	}
+
+} //DataParallelImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/impl/DataParallel_layersFactoryImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/impl/DataParallel_layersFactoryImpl.java
new file mode 100644
index 0000000..2a23d3c
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/impl/DataParallel_layersFactoryImpl.java
@@ -0,0 +1,118 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DataParallel_layersFactoryImpl extends EFactoryImpl implements DataParallel_layersFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static DataParallel_layersFactory init() {
+		try {
+			DataParallel_layersFactory theDataParallel_layersFactory = (DataParallel_layersFactory)EPackage.Registry.INSTANCE.getEFactory(DataParallel_layersPackage.eNS_URI);
+			if (theDataParallel_layersFactory != null) {
+				return theDataParallel_layersFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new DataParallel_layersFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DataParallel_layersFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case DataParallel_layersPackage.DISTRIBUTED_DATA_PARALLEL: return createDistributedDataParallel();
+			case DataParallel_layersPackage.DATA_PARALLEL: return createDataParallel();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public DistributedDataParallel createDistributedDataParallel() {
+		DistributedDataParallelImpl distributedDataParallel = new DistributedDataParallelImpl();
+		return distributedDataParallel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public DataParallel createDataParallel() {
+		DataParallelImpl dataParallel = new DataParallelImpl();
+		return dataParallel;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public DataParallel_layersPackage getDataParallel_layersPackage() {
+		return (DataParallel_layersPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static DataParallel_layersPackage getPackage() {
+		return DataParallel_layersPackage.eINSTANCE;
+	}
+
+} //DataParallel_layersFactoryImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/impl/DataParallel_layersImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/impl/DataParallel_layersImpl.java
new file mode 100644
index 0000000..bd9678d
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/impl/DataParallel_layersImpl.java
@@ -0,0 +1,263 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layers;
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModelImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Data Parallel layers</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersImpl#getModule <em>Module</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersImpl#getDevice_ids <em>Device ids</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersImpl#getOutput_device <em>Output device</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class DataParallel_layersImpl extends ModelImpl implements DataParallel_layers {
+	/**
+	 * The cached value of the '{@link #getModule() <em>Module</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getModule()
+	 * @generated
+	 * @ordered
+	 */
+	protected Model module;
+
+	/**
+	 * The cached value of the '{@link #getDevice_ids() <em>Device ids</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDevice_ids()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Integer> device_ids;
+
+	/**
+	 * The cached value of the '{@link #getOutput_device() <em>Output device</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOutput_device()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Integer> output_device;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DataParallel_layersImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DataParallel_layersPackage.Literals.DATA_PARALLEL_LAYERS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Model getModule() {
+		if (module != null && module.eIsProxy()) {
+			InternalEObject oldModule = (InternalEObject)module;
+			module = (Model)eResolveProxy(oldModule);
+			if (module != oldModule) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, DataParallel_layersPackage.DATA_PARALLEL_LAYERS__MODULE, oldModule, module));
+			}
+		}
+		return module;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Model basicGetModule() {
+		return module;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setModule(Model newModule) {
+		Model oldModule = module;
+		module = newModule;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DataParallel_layersPackage.DATA_PARALLEL_LAYERS__MODULE, oldModule, module));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Integer> getDevice_ids() {
+		if (device_ids == null) {
+			device_ids = new EDataTypeUniqueEList<Integer>(Integer.class, this, DataParallel_layersPackage.DATA_PARALLEL_LAYERS__DEVICE_IDS);
+		}
+		return device_ids;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Integer> getOutput_device() {
+		if (output_device == null) {
+			output_device = new EDataTypeUniqueEList<Integer>(Integer.class, this, DataParallel_layersPackage.DATA_PARALLEL_LAYERS__OUTPUT_DEVICE);
+		}
+		return output_device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DataParallel_layersPackage.DATA_PARALLEL_LAYERS__MODULE:
+				if (resolve) return getModule();
+				return basicGetModule();
+			case DataParallel_layersPackage.DATA_PARALLEL_LAYERS__DEVICE_IDS:
+				return getDevice_ids();
+			case DataParallel_layersPackage.DATA_PARALLEL_LAYERS__OUTPUT_DEVICE:
+				return getOutput_device();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DataParallel_layersPackage.DATA_PARALLEL_LAYERS__MODULE:
+				setModule((Model)newValue);
+				return;
+			case DataParallel_layersPackage.DATA_PARALLEL_LAYERS__DEVICE_IDS:
+				getDevice_ids().clear();
+				getDevice_ids().addAll((Collection<? extends Integer>)newValue);
+				return;
+			case DataParallel_layersPackage.DATA_PARALLEL_LAYERS__OUTPUT_DEVICE:
+				getOutput_device().clear();
+				getOutput_device().addAll((Collection<? extends Integer>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DataParallel_layersPackage.DATA_PARALLEL_LAYERS__MODULE:
+				setModule((Model)null);
+				return;
+			case DataParallel_layersPackage.DATA_PARALLEL_LAYERS__DEVICE_IDS:
+				getDevice_ids().clear();
+				return;
+			case DataParallel_layersPackage.DATA_PARALLEL_LAYERS__OUTPUT_DEVICE:
+				getOutput_device().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DataParallel_layersPackage.DATA_PARALLEL_LAYERS__MODULE:
+				return module != null;
+			case DataParallel_layersPackage.DATA_PARALLEL_LAYERS__DEVICE_IDS:
+				return device_ids != null && !device_ids.isEmpty();
+			case DataParallel_layersPackage.DATA_PARALLEL_LAYERS__OUTPUT_DEVICE:
+				return output_device != null && !output_device.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (device_ids: "); //$NON-NLS-1$
+		result.append(device_ids);
+		result.append(", output_device: "); //$NON-NLS-1$
+		result.append(output_device);
+		result.append(')');
+		return result.toString();
+	}
+
+} //DataParallel_layersImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/impl/DataParallel_layersPackageImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/impl/DataParallel_layersPackageImpl.java
new file mode 100644
index 0000000..1c7be47
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/impl/DataParallel_layersPackageImpl.java
@@ -0,0 +1,502 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.AIMLPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel;
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layers;
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersFactory;
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DistributedDataParallel;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.Layer_weight_regularizersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModulePackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.DatatypesPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl.DatatypesPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.impl.AIMLPackageImpl;
+
+import org.eclipse.uml2.types.TypesPackage;
+
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DataParallel_layersPackageImpl extends EPackageImpl implements DataParallel_layersPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass dataParallel_layersEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass distributedDataParallelEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass dataParallelEClass = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private DataParallel_layersPackageImpl() {
+		super(eNS_URI, DataParallel_layersFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>This method is used to initialize {@link DataParallel_layersPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static DataParallel_layersPackage init() {
+		if (isInited) return (DataParallel_layersPackage)EPackage.Registry.INSTANCE.getEPackage(DataParallel_layersPackage.eNS_URI);
+
+		// Obtain or create and register package
+		Object registeredDataParallel_layersPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		DataParallel_layersPackageImpl theDataParallel_layersPackage = registeredDataParallel_layersPackage instanceof DataParallel_layersPackageImpl ? (DataParallel_layersPackageImpl)registeredDataParallel_layersPackage : new DataParallel_layersPackageImpl();
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		EcorePackage.eINSTANCE.eClass();
+		TypesPackage.eINSTANCE.eClass();
+		UMLPackage.eINSTANCE.eClass();
+
+		// Obtain or create and register interdependencies
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AIMLPackage.eNS_URI);
+		AIMLPackageImpl theAIMLPackage = (AIMLPackageImpl)(registeredPackage instanceof AIMLPackageImpl ? registeredPackage : AIMLPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		ModulePackageImpl theModulePackage = (ModulePackageImpl)(registeredPackage instanceof ModulePackageImpl ? registeredPackage : ModulePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(TensorPackage.eNS_URI);
+		TensorPackageImpl theTensorPackage = (TensorPackageImpl)(registeredPackage instanceof TensorPackageImpl ? registeredPackage : TensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DatatypesPackage.eNS_URI);
+		DatatypesPackageImpl theDatatypesPackage = (DatatypesPackageImpl)(registeredPackage instanceof DatatypesPackageImpl ? registeredPackage : DatatypesPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Pooling_layersPackage.eNS_URI);
+		Pooling_layersPackageImpl thePooling_layersPackage = (Pooling_layersPackageImpl)(registeredPackage instanceof Pooling_layersPackageImpl ? registeredPackage : Pooling_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Convolution_layersPackage.eNS_URI);
+		Convolution_layersPackageImpl theConvolution_layersPackage = (Convolution_layersPackageImpl)(registeredPackage instanceof Convolution_layersPackageImpl ? registeredPackage : Convolution_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_constraintsPackage.eNS_URI);
+		Layer_weight_constraintsPackageImpl theLayer_weight_constraintsPackage = (Layer_weight_constraintsPackageImpl)(registeredPackage instanceof Layer_weight_constraintsPackageImpl ? registeredPackage : Layer_weight_constraintsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Padding_layersPackage.eNS_URI);
+		Padding_layersPackageImpl thePadding_layersPackage = (Padding_layersPackageImpl)(registeredPackage instanceof Padding_layersPackageImpl ? registeredPackage : Padding_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NonLinearActivationsPackage.eNS_URI);
+		NonLinearActivationsPackageImpl theNonLinearActivationsPackage = (NonLinearActivationsPackageImpl)(registeredPackage instanceof NonLinearActivationsPackageImpl ? registeredPackage : NonLinearActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftMinMaxActivationsPackage.eNS_URI);
+		SoftMinMaxActivationsPackageImpl theSoftMinMaxActivationsPackage = (SoftMinMaxActivationsPackageImpl)(registeredPackage instanceof SoftMinMaxActivationsPackageImpl ? registeredPackage : SoftMinMaxActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Normalization_layersPackage.eNS_URI);
+		Normalization_layersPackageImpl theNormalization_layersPackage = (Normalization_layersPackageImpl)(registeredPackage instanceof Normalization_layersPackageImpl ? registeredPackage : Normalization_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Recurrent_layersPackage.eNS_URI);
+		Recurrent_layersPackageImpl theRecurrent_layersPackage = (Recurrent_layersPackageImpl)(registeredPackage instanceof Recurrent_layersPackageImpl ? registeredPackage : Recurrent_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Transformer_layersPackage.eNS_URI);
+		Transformer_layersPackageImpl theTransformer_layersPackage = (Transformer_layersPackageImpl)(registeredPackage instanceof Transformer_layersPackageImpl ? registeredPackage : Transformer_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Linear_layersPackage.eNS_URI);
+		Linear_layersPackageImpl theLinear_layersPackage = (Linear_layersPackageImpl)(registeredPackage instanceof Linear_layersPackageImpl ? registeredPackage : Linear_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Dropout_layersPackage.eNS_URI);
+		Dropout_layersPackageImpl theDropout_layersPackage = (Dropout_layersPackageImpl)(registeredPackage instanceof Dropout_layersPackageImpl ? registeredPackage : Dropout_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Sparse_layersPackage.eNS_URI);
+		Sparse_layersPackageImpl theSparse_layersPackage = (Sparse_layersPackageImpl)(registeredPackage instanceof Sparse_layersPackageImpl ? registeredPackage : Sparse_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Distance_functionsPackage.eNS_URI);
+		Distance_functionsPackageImpl theDistance_functionsPackage = (Distance_functionsPackageImpl)(registeredPackage instanceof Distance_functionsPackageImpl ? registeredPackage : Distance_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Loss_functionsPackage.eNS_URI);
+		Loss_functionsPackageImpl theLoss_functionsPackage = (Loss_functionsPackageImpl)(registeredPackage instanceof Loss_functionsPackageImpl ? registeredPackage : Loss_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Vision_layersPackage.eNS_URI);
+		Vision_layersPackageImpl theVision_layersPackage = (Vision_layersPackageImpl)(registeredPackage instanceof Vision_layersPackageImpl ? registeredPackage : Vision_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_regularizersPackage.eNS_URI);
+		Layer_weight_regularizersPackageImpl theLayer_weight_regularizersPackage = (Layer_weight_regularizersPackageImpl)(registeredPackage instanceof Layer_weight_regularizersPackageImpl ? registeredPackage : Layer_weight_regularizersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_initializersPackage.eNS_URI);
+		Layer_weight_initializersPackageImpl theLayer_weight_initializersPackage = (Layer_weight_initializersPackageImpl)(registeredPackage instanceof Layer_weight_initializersPackageImpl ? registeredPackage : Layer_weight_initializersPackage.eINSTANCE);
+
+		// Create package meta-data objects
+		theDataParallel_layersPackage.createPackageContents();
+		theAIMLPackage.createPackageContents();
+		theModulePackage.createPackageContents();
+		theTensorPackage.createPackageContents();
+		theDatatypesPackage.createPackageContents();
+		thePooling_layersPackage.createPackageContents();
+		theConvolution_layersPackage.createPackageContents();
+		theLayer_weight_constraintsPackage.createPackageContents();
+		thePadding_layersPackage.createPackageContents();
+		theNonLinearActivationsPackage.createPackageContents();
+		theSoftMinMaxActivationsPackage.createPackageContents();
+		theNormalization_layersPackage.createPackageContents();
+		theRecurrent_layersPackage.createPackageContents();
+		theTransformer_layersPackage.createPackageContents();
+		theLinear_layersPackage.createPackageContents();
+		theDropout_layersPackage.createPackageContents();
+		theSparse_layersPackage.createPackageContents();
+		theDistance_functionsPackage.createPackageContents();
+		theLoss_functionsPackage.createPackageContents();
+		theVision_layersPackage.createPackageContents();
+		theLayer_weight_regularizersPackage.createPackageContents();
+		theLayer_weight_initializersPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theDataParallel_layersPackage.initializePackageContents();
+		theAIMLPackage.initializePackageContents();
+		theModulePackage.initializePackageContents();
+		theTensorPackage.initializePackageContents();
+		theDatatypesPackage.initializePackageContents();
+		thePooling_layersPackage.initializePackageContents();
+		theConvolution_layersPackage.initializePackageContents();
+		theLayer_weight_constraintsPackage.initializePackageContents();
+		thePadding_layersPackage.initializePackageContents();
+		theNonLinearActivationsPackage.initializePackageContents();
+		theSoftMinMaxActivationsPackage.initializePackageContents();
+		theNormalization_layersPackage.initializePackageContents();
+		theRecurrent_layersPackage.initializePackageContents();
+		theTransformer_layersPackage.initializePackageContents();
+		theLinear_layersPackage.initializePackageContents();
+		theDropout_layersPackage.initializePackageContents();
+		theSparse_layersPackage.initializePackageContents();
+		theDistance_functionsPackage.initializePackageContents();
+		theLoss_functionsPackage.initializePackageContents();
+		theVision_layersPackage.initializePackageContents();
+		theLayer_weight_regularizersPackage.initializePackageContents();
+		theLayer_weight_initializersPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theDataParallel_layersPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(DataParallel_layersPackage.eNS_URI, theDataParallel_layersPackage);
+		return theDataParallel_layersPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getDataParallel_layers() {
+		return dataParallel_layersEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getDataParallel_layers_Module() {
+		return (EReference)dataParallel_layersEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getDataParallel_layers_Device_ids() {
+		return (EAttribute)dataParallel_layersEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getDataParallel_layers_Output_device() {
+		return (EAttribute)dataParallel_layersEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getDistributedDataParallel() {
+		return distributedDataParallelEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getDistributedDataParallel_Broadcast_buffers() {
+		return (EAttribute)distributedDataParallelEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getDistributedDataParallel_Process_group() {
+		return (EAttribute)distributedDataParallelEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getDistributedDataParallel_Bucket_cap_mb() {
+		return (EAttribute)distributedDataParallelEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getDistributedDataParallel_Find_unsused_parameters() {
+		return (EAttribute)distributedDataParallelEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getDistributedDataParallel_Check_reduction() {
+		return (EAttribute)distributedDataParallelEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getDataParallel() {
+		return dataParallelEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public DataParallel_layersFactory getDataParallel_layersFactory() {
+		return (DataParallel_layersFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		dataParallel_layersEClass = createEClass(DATA_PARALLEL_LAYERS);
+		createEReference(dataParallel_layersEClass, DATA_PARALLEL_LAYERS__MODULE);
+		createEAttribute(dataParallel_layersEClass, DATA_PARALLEL_LAYERS__DEVICE_IDS);
+		createEAttribute(dataParallel_layersEClass, DATA_PARALLEL_LAYERS__OUTPUT_DEVICE);
+
+		distributedDataParallelEClass = createEClass(DISTRIBUTED_DATA_PARALLEL);
+		createEAttribute(distributedDataParallelEClass, DISTRIBUTED_DATA_PARALLEL__BROADCAST_BUFFERS);
+		createEAttribute(distributedDataParallelEClass, DISTRIBUTED_DATA_PARALLEL__PROCESS_GROUP);
+		createEAttribute(distributedDataParallelEClass, DISTRIBUTED_DATA_PARALLEL__BUCKET_CAP_MB);
+		createEAttribute(distributedDataParallelEClass, DISTRIBUTED_DATA_PARALLEL__FIND_UNSUSED_PARAMETERS);
+		createEAttribute(distributedDataParallelEClass, DISTRIBUTED_DATA_PARALLEL__CHECK_REDUCTION);
+
+		dataParallelEClass = createEClass(DATA_PARALLEL);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		ModulePackage theModulePackage = (ModulePackage)EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		dataParallel_layersEClass.getESuperTypes().add(theModulePackage.getModel());
+		distributedDataParallelEClass.getESuperTypes().add(this.getDataParallel_layers());
+		dataParallelEClass.getESuperTypes().add(this.getDataParallel_layers());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(dataParallel_layersEClass, DataParallel_layers.class, "DataParallel_layers", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEReference(getDataParallel_layers_Module(), theModulePackage.getModel(), null, "module", null, 1, 1, DataParallel_layers.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getDataParallel_layers_Device_ids(), theTypesPackage.getInteger(), "device_ids", null, 0, -1, DataParallel_layers.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getDataParallel_layers_Output_device(), theTypesPackage.getInteger(), "output_device", null, 0, -1, DataParallel_layers.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(distributedDataParallelEClass, DistributedDataParallel.class, "DistributedDataParallel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getDistributedDataParallel_Broadcast_buffers(), theTypesPackage.getBoolean(), "broadcast_buffers", null, 0, 1, DistributedDataParallel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getDistributedDataParallel_Process_group(), theTypesPackage.getInteger(), "process_group", null, 0, 1, DistributedDataParallel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getDistributedDataParallel_Bucket_cap_mb(), theTypesPackage.getInteger(), "bucket_cap_mb", null, 0, 1, DistributedDataParallel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getDistributedDataParallel_Find_unsused_parameters(), theTypesPackage.getBoolean(), "find_unsused_parameters", null, 0, 1, DistributedDataParallel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getDistributedDataParallel_Check_reduction(), theTypesPackage.getBoolean(), "check_reduction", null, 0, 1, DistributedDataParallel.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(dataParallelEClass, DataParallel.class, "DataParallel", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+	}
+
+} //DataParallel_layersPackageImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/impl/DistributedDataParallelImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/impl/DistributedDataParallelImpl.java
new file mode 100644
index 0000000..3a74902
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/impl/DistributedDataParallelImpl.java
@@ -0,0 +1,397 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DistributedDataParallel;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Distributed Data Parallel</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DistributedDataParallelImpl#isBroadcast_buffers <em>Broadcast buffers</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DistributedDataParallelImpl#getProcess_group <em>Process group</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DistributedDataParallelImpl#getBucket_cap_mb <em>Bucket cap mb</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DistributedDataParallelImpl#isFind_unsused_parameters <em>Find unsused parameters</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DistributedDataParallelImpl#isCheck_reduction <em>Check reduction</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class DistributedDataParallelImpl extends DataParallel_layersImpl implements DistributedDataParallel {
+	/**
+	 * The default value of the '{@link #isBroadcast_buffers() <em>Broadcast buffers</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isBroadcast_buffers()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean BROADCAST_BUFFERS_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isBroadcast_buffers() <em>Broadcast buffers</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isBroadcast_buffers()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean broadcast_buffers = BROADCAST_BUFFERS_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getProcess_group() <em>Process group</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getProcess_group()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int PROCESS_GROUP_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getProcess_group() <em>Process group</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getProcess_group()
+	 * @generated
+	 * @ordered
+	 */
+	protected int process_group = PROCESS_GROUP_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getBucket_cap_mb() <em>Bucket cap mb</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBucket_cap_mb()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int BUCKET_CAP_MB_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getBucket_cap_mb() <em>Bucket cap mb</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBucket_cap_mb()
+	 * @generated
+	 * @ordered
+	 */
+	protected int bucket_cap_mb = BUCKET_CAP_MB_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isFind_unsused_parameters() <em>Find unsused parameters</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isFind_unsused_parameters()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean FIND_UNSUSED_PARAMETERS_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isFind_unsused_parameters() <em>Find unsused parameters</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isFind_unsused_parameters()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean find_unsused_parameters = FIND_UNSUSED_PARAMETERS_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isCheck_reduction() <em>Check reduction</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isCheck_reduction()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean CHECK_REDUCTION_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isCheck_reduction() <em>Check reduction</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isCheck_reduction()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean check_reduction = CHECK_REDUCTION_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DistributedDataParallelImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DataParallel_layersPackage.Literals.DISTRIBUTED_DATA_PARALLEL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isBroadcast_buffers() {
+		return broadcast_buffers;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBroadcast_buffers(boolean newBroadcast_buffers) {
+		boolean oldBroadcast_buffers = broadcast_buffers;
+		broadcast_buffers = newBroadcast_buffers;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DataParallel_layersPackage.DISTRIBUTED_DATA_PARALLEL__BROADCAST_BUFFERS, oldBroadcast_buffers, broadcast_buffers));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getProcess_group() {
+		return process_group;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setProcess_group(int newProcess_group) {
+		int oldProcess_group = process_group;
+		process_group = newProcess_group;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DataParallel_layersPackage.DISTRIBUTED_DATA_PARALLEL__PROCESS_GROUP, oldProcess_group, process_group));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getBucket_cap_mb() {
+		return bucket_cap_mb;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBucket_cap_mb(int newBucket_cap_mb) {
+		int oldBucket_cap_mb = bucket_cap_mb;
+		bucket_cap_mb = newBucket_cap_mb;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DataParallel_layersPackage.DISTRIBUTED_DATA_PARALLEL__BUCKET_CAP_MB, oldBucket_cap_mb, bucket_cap_mb));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isFind_unsused_parameters() {
+		return find_unsused_parameters;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setFind_unsused_parameters(boolean newFind_unsused_parameters) {
+		boolean oldFind_unsused_parameters = find_unsused_parameters;
+		find_unsused_parameters = newFind_unsused_parameters;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DataParallel_layersPackage.DISTRIBUTED_DATA_PARALLEL__FIND_UNSUSED_PARAMETERS, oldFind_unsused_parameters, find_unsused_parameters));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isCheck_reduction() {
+		return check_reduction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setCheck_reduction(boolean newCheck_reduction) {
+		boolean oldCheck_reduction = check_reduction;
+		check_reduction = newCheck_reduction;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DataParallel_layersPackage.DISTRIBUTED_DATA_PARALLEL__CHECK_REDUCTION, oldCheck_reduction, check_reduction));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DataParallel_layersPackage.DISTRIBUTED_DATA_PARALLEL__BROADCAST_BUFFERS:
+				return isBroadcast_buffers();
+			case DataParallel_layersPackage.DISTRIBUTED_DATA_PARALLEL__PROCESS_GROUP:
+				return getProcess_group();
+			case DataParallel_layersPackage.DISTRIBUTED_DATA_PARALLEL__BUCKET_CAP_MB:
+				return getBucket_cap_mb();
+			case DataParallel_layersPackage.DISTRIBUTED_DATA_PARALLEL__FIND_UNSUSED_PARAMETERS:
+				return isFind_unsused_parameters();
+			case DataParallel_layersPackage.DISTRIBUTED_DATA_PARALLEL__CHECK_REDUCTION:
+				return isCheck_reduction();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DataParallel_layersPackage.DISTRIBUTED_DATA_PARALLEL__BROADCAST_BUFFERS:
+				setBroadcast_buffers((Boolean)newValue);
+				return;
+			case DataParallel_layersPackage.DISTRIBUTED_DATA_PARALLEL__PROCESS_GROUP:
+				setProcess_group((Integer)newValue);
+				return;
+			case DataParallel_layersPackage.DISTRIBUTED_DATA_PARALLEL__BUCKET_CAP_MB:
+				setBucket_cap_mb((Integer)newValue);
+				return;
+			case DataParallel_layersPackage.DISTRIBUTED_DATA_PARALLEL__FIND_UNSUSED_PARAMETERS:
+				setFind_unsused_parameters((Boolean)newValue);
+				return;
+			case DataParallel_layersPackage.DISTRIBUTED_DATA_PARALLEL__CHECK_REDUCTION:
+				setCheck_reduction((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DataParallel_layersPackage.DISTRIBUTED_DATA_PARALLEL__BROADCAST_BUFFERS:
+				setBroadcast_buffers(BROADCAST_BUFFERS_EDEFAULT);
+				return;
+			case DataParallel_layersPackage.DISTRIBUTED_DATA_PARALLEL__PROCESS_GROUP:
+				setProcess_group(PROCESS_GROUP_EDEFAULT);
+				return;
+			case DataParallel_layersPackage.DISTRIBUTED_DATA_PARALLEL__BUCKET_CAP_MB:
+				setBucket_cap_mb(BUCKET_CAP_MB_EDEFAULT);
+				return;
+			case DataParallel_layersPackage.DISTRIBUTED_DATA_PARALLEL__FIND_UNSUSED_PARAMETERS:
+				setFind_unsused_parameters(FIND_UNSUSED_PARAMETERS_EDEFAULT);
+				return;
+			case DataParallel_layersPackage.DISTRIBUTED_DATA_PARALLEL__CHECK_REDUCTION:
+				setCheck_reduction(CHECK_REDUCTION_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DataParallel_layersPackage.DISTRIBUTED_DATA_PARALLEL__BROADCAST_BUFFERS:
+				return broadcast_buffers != BROADCAST_BUFFERS_EDEFAULT;
+			case DataParallel_layersPackage.DISTRIBUTED_DATA_PARALLEL__PROCESS_GROUP:
+				return process_group != PROCESS_GROUP_EDEFAULT;
+			case DataParallel_layersPackage.DISTRIBUTED_DATA_PARALLEL__BUCKET_CAP_MB:
+				return bucket_cap_mb != BUCKET_CAP_MB_EDEFAULT;
+			case DataParallel_layersPackage.DISTRIBUTED_DATA_PARALLEL__FIND_UNSUSED_PARAMETERS:
+				return find_unsused_parameters != FIND_UNSUSED_PARAMETERS_EDEFAULT;
+			case DataParallel_layersPackage.DISTRIBUTED_DATA_PARALLEL__CHECK_REDUCTION:
+				return check_reduction != CHECK_REDUCTION_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (broadcast_buffers: "); //$NON-NLS-1$
+		result.append(broadcast_buffers);
+		result.append(", process_group: "); //$NON-NLS-1$
+		result.append(process_group);
+		result.append(", bucket_cap_mb: "); //$NON-NLS-1$
+		result.append(bucket_cap_mb);
+		result.append(", find_unsused_parameters: "); //$NON-NLS-1$
+		result.append(find_unsused_parameters);
+		result.append(", check_reduction: "); //$NON-NLS-1$
+		result.append(check_reduction);
+		result.append(')');
+		return result.toString();
+	}
+
+} //DistributedDataParallelImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/util/DataParallel_layersAdapterFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/util/DataParallel_layersAdapterFactory.java
new file mode 100644
index 0000000..5670f4b
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/util/DataParallel_layersAdapterFactory.java
@@ -0,0 +1,184 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.*;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage
+ * @generated
+ */
+public class DataParallel_layersAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static DataParallel_layersPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DataParallel_layersAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = DataParallel_layersPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DataParallel_layersSwitch<Adapter> modelSwitch =
+		new DataParallel_layersSwitch<Adapter>() {
+			@Override
+			public Adapter caseDataParallel_layers(DataParallel_layers object) {
+				return createDataParallel_layersAdapter();
+			}
+			@Override
+			public Adapter caseDistributedDataParallel(DistributedDataParallel object) {
+				return createDistributedDataParallelAdapter();
+			}
+			@Override
+			public Adapter caseDataParallel(DataParallel object) {
+				return createDataParallelAdapter();
+			}
+			@Override
+			public Adapter caseModel(Model object) {
+				return createModelAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layers <em>Data Parallel layers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layers
+	 * @generated
+	 */
+	public Adapter createDataParallel_layersAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DistributedDataParallel <em>Distributed Data Parallel</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DistributedDataParallel
+	 * @generated
+	 */
+	public Adapter createDistributedDataParallelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel <em>Data Parallel</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel
+	 * @generated
+	 */
+	public Adapter createDataParallelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model <em>Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.Model
+	 * @generated
+	 */
+	public Adapter createModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //DataParallel_layersAdapterFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/util/DataParallel_layersSwitch.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/util/DataParallel_layersSwitch.java
new file mode 100644
index 0000000..3dfcb1d
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/DataParallel_layers/util/DataParallel_layersSwitch.java
@@ -0,0 +1,182 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.*;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage
+ * @generated
+ */
+public class DataParallel_layersSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static DataParallel_layersPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DataParallel_layersSwitch() {
+		if (modelPackage == null) {
+			modelPackage = DataParallel_layersPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case DataParallel_layersPackage.DATA_PARALLEL_LAYERS: {
+				DataParallel_layers dataParallel_layers = (DataParallel_layers)theEObject;
+				T result = caseDataParallel_layers(dataParallel_layers);
+				if (result == null) result = caseModel(dataParallel_layers);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DataParallel_layersPackage.DISTRIBUTED_DATA_PARALLEL: {
+				DistributedDataParallel distributedDataParallel = (DistributedDataParallel)theEObject;
+				T result = caseDistributedDataParallel(distributedDataParallel);
+				if (result == null) result = caseDataParallel_layers(distributedDataParallel);
+				if (result == null) result = caseModel(distributedDataParallel);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case DataParallel_layersPackage.DATA_PARALLEL: {
+				DataParallel dataParallel = (DataParallel)theEObject;
+				T result = caseDataParallel(dataParallel);
+				if (result == null) result = caseDataParallel_layers(dataParallel);
+				if (result == null) result = caseModel(dataParallel);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Data Parallel layers</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Data Parallel layers</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDataParallel_layers(DataParallel_layers object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Distributed Data Parallel</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Distributed Data Parallel</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDistributedDataParallel(DistributedDataParallel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Data Parallel</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Data Parallel</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDataParallel(DataParallel object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseModel(Model object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //DataParallel_layersSwitch
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/CosineSimilarity.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/CosineSimilarity.java
new file mode 100644
index 0000000..3ba897d
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/CosineSimilarity.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Distance_functions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Cosine Similarity</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.CosineSimilarity#getDim <em>Dim</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage#getCosineSimilarity()
+ * @model
+ * @generated
+ */
+public interface CosineSimilarity extends Distance_functions {
+	/**
+	 * Returns the value of the '<em><b>Dim</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Dim</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Dim</em>' attribute.
+	 * @see #setDim(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage#getCosineSimilarity_Dim()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	int getDim();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.CosineSimilarity#getDim <em>Dim</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Dim</em>' attribute.
+	 * @see #getDim()
+	 * @generated
+	 */
+	void setDim(int value);
+
+} // CosineSimilarity
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/Distance_functions.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/Distance_functions.java
new file mode 100644
index 0000000..0e869a8
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/Distance_functions.java
@@ -0,0 +1,59 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Distance_functions;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Distance functions</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functions#getEps <em>Eps</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage#getDistance_functions()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Distance_functions extends Model {
+	/**
+	 * Returns the value of the '<em><b>Eps</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Eps</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Eps</em>' attribute.
+	 * @see #setEps(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage#getDistance_functions_Eps()
+	 * @model dataType="org.eclipse.uml2.types.Real" ordered="false"
+	 * @generated
+	 */
+	double getEps();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functions#getEps <em>Eps</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Eps</em>' attribute.
+	 * @see #getEps()
+	 * @generated
+	 */
+	void setEps(double value);
+
+} // Distance_functions
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/Distance_functionsFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/Distance_functionsFactory.java
new file mode 100644
index 0000000..70bb555
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/Distance_functionsFactory.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Distance_functions;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage
+ * @generated
+ */
+public interface Distance_functionsFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	Distance_functionsFactory eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Cosine Similarity</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Cosine Similarity</em>'.
+	 * @generated
+	 */
+	CosineSimilarity createCosineSimilarity();
+
+	/**
+	 * Returns a new object of class '<em>Pairwise Distance</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Pairwise Distance</em>'.
+	 * @generated
+	 */
+	PairwiseDistance createPairwiseDistance();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	Distance_functionsPackage getDistance_functionsPackage();
+
+} //Distance_functionsFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/Distance_functionsPackage.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/Distance_functionsPackage.java
new file mode 100644
index 0000000..a3826bf
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/Distance_functionsPackage.java
@@ -0,0 +1,558 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Distance_functions;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface Distance_functionsPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "Distance_functions"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://www.eclipse.org/papyrus/AIML/distance/1"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "AIML.Distance_functions"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	Distance_functionsPackage eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsImpl <em>Distance functions</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsPackageImpl#getDistance_functions()
+	 * @generated
+	 */
+	int DISTANCE_FUNCTIONS = 0;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISTANCE_FUNCTIONS__BASE_CLASS = ModulePackage.MODEL__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISTANCE_FUNCTIONS__NAME = ModulePackage.MODEL__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISTANCE_FUNCTIONS__DATA = ModulePackage.MODEL__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISTANCE_FUNCTIONS__REQUIRES_GRAD = ModulePackage.MODEL__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISTANCE_FUNCTIONS__SUB_MODULE = ModulePackage.MODEL__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISTANCE_FUNCTIONS__OPTIMIZER = ModulePackage.MODEL__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISTANCE_FUNCTIONS__LOSS = ModulePackage.MODEL__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Eps</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISTANCE_FUNCTIONS__EPS = ModulePackage.MODEL_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Distance functions</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISTANCE_FUNCTIONS_FEATURE_COUNT = ModulePackage.MODEL_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Distance functions</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DISTANCE_FUNCTIONS_OPERATION_COUNT = ModulePackage.MODEL_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.CosineSimilarityImpl <em>Cosine Similarity</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.CosineSimilarityImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsPackageImpl#getCosineSimilarity()
+	 * @generated
+	 */
+	int COSINE_SIMILARITY = 1;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COSINE_SIMILARITY__BASE_CLASS = DISTANCE_FUNCTIONS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COSINE_SIMILARITY__NAME = DISTANCE_FUNCTIONS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COSINE_SIMILARITY__DATA = DISTANCE_FUNCTIONS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COSINE_SIMILARITY__REQUIRES_GRAD = DISTANCE_FUNCTIONS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COSINE_SIMILARITY__SUB_MODULE = DISTANCE_FUNCTIONS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COSINE_SIMILARITY__OPTIMIZER = DISTANCE_FUNCTIONS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COSINE_SIMILARITY__LOSS = DISTANCE_FUNCTIONS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Eps</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COSINE_SIMILARITY__EPS = DISTANCE_FUNCTIONS__EPS;
+
+	/**
+	 * The feature id for the '<em><b>Dim</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COSINE_SIMILARITY__DIM = DISTANCE_FUNCTIONS_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Cosine Similarity</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COSINE_SIMILARITY_FEATURE_COUNT = DISTANCE_FUNCTIONS_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Cosine Similarity</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COSINE_SIMILARITY_OPERATION_COUNT = DISTANCE_FUNCTIONS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.PairwiseDistanceImpl <em>Pairwise Distance</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.PairwiseDistanceImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsPackageImpl#getPairwiseDistance()
+	 * @generated
+	 */
+	int PAIRWISE_DISTANCE = 2;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PAIRWISE_DISTANCE__BASE_CLASS = DISTANCE_FUNCTIONS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PAIRWISE_DISTANCE__NAME = DISTANCE_FUNCTIONS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PAIRWISE_DISTANCE__DATA = DISTANCE_FUNCTIONS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PAIRWISE_DISTANCE__REQUIRES_GRAD = DISTANCE_FUNCTIONS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PAIRWISE_DISTANCE__SUB_MODULE = DISTANCE_FUNCTIONS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PAIRWISE_DISTANCE__OPTIMIZER = DISTANCE_FUNCTIONS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PAIRWISE_DISTANCE__LOSS = DISTANCE_FUNCTIONS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Eps</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PAIRWISE_DISTANCE__EPS = DISTANCE_FUNCTIONS__EPS;
+
+	/**
+	 * The feature id for the '<em><b>P</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PAIRWISE_DISTANCE__P = DISTANCE_FUNCTIONS_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Keepdim</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PAIRWISE_DISTANCE__KEEPDIM = DISTANCE_FUNCTIONS_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Pairwise Distance</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PAIRWISE_DISTANCE_FEATURE_COUNT = DISTANCE_FUNCTIONS_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Pairwise Distance</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PAIRWISE_DISTANCE_OPERATION_COUNT = DISTANCE_FUNCTIONS_OPERATION_COUNT + 0;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functions <em>Distance functions</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Distance functions</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functions
+	 * @generated
+	 */
+	EClass getDistance_functions();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functions#getEps <em>Eps</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Eps</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functions#getEps()
+	 * @see #getDistance_functions()
+	 * @generated
+	 */
+	EAttribute getDistance_functions_Eps();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.CosineSimilarity <em>Cosine Similarity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Cosine Similarity</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.CosineSimilarity
+	 * @generated
+	 */
+	EClass getCosineSimilarity();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.CosineSimilarity#getDim <em>Dim</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Dim</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.CosineSimilarity#getDim()
+	 * @see #getCosineSimilarity()
+	 * @generated
+	 */
+	EAttribute getCosineSimilarity_Dim();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.PairwiseDistance <em>Pairwise Distance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Pairwise Distance</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.PairwiseDistance
+	 * @generated
+	 */
+	EClass getPairwiseDistance();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.PairwiseDistance#getP <em>P</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>P</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.PairwiseDistance#getP()
+	 * @see #getPairwiseDistance()
+	 * @generated
+	 */
+	EAttribute getPairwiseDistance_P();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.PairwiseDistance#isKeepdim <em>Keepdim</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Keepdim</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.PairwiseDistance#isKeepdim()
+	 * @see #getPairwiseDistance()
+	 * @generated
+	 */
+	EAttribute getPairwiseDistance_Keepdim();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	Distance_functionsFactory getDistance_functionsFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsImpl <em>Distance functions</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsPackageImpl#getDistance_functions()
+		 * @generated
+		 */
+		EClass DISTANCE_FUNCTIONS = eINSTANCE.getDistance_functions();
+
+		/**
+		 * The meta object literal for the '<em><b>Eps</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DISTANCE_FUNCTIONS__EPS = eINSTANCE.getDistance_functions_Eps();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.CosineSimilarityImpl <em>Cosine Similarity</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.CosineSimilarityImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsPackageImpl#getCosineSimilarity()
+		 * @generated
+		 */
+		EClass COSINE_SIMILARITY = eINSTANCE.getCosineSimilarity();
+
+		/**
+		 * The meta object literal for the '<em><b>Dim</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute COSINE_SIMILARITY__DIM = eINSTANCE.getCosineSimilarity_Dim();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.PairwiseDistanceImpl <em>Pairwise Distance</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.PairwiseDistanceImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsPackageImpl#getPairwiseDistance()
+		 * @generated
+		 */
+		EClass PAIRWISE_DISTANCE = eINSTANCE.getPairwiseDistance();
+
+		/**
+		 * The meta object literal for the '<em><b>P</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PAIRWISE_DISTANCE__P = eINSTANCE.getPairwiseDistance_P();
+
+		/**
+		 * The meta object literal for the '<em><b>Keepdim</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PAIRWISE_DISTANCE__KEEPDIM = eINSTANCE.getPairwiseDistance_Keepdim();
+
+	}
+
+} //Distance_functionsPackage
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/PairwiseDistance.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/PairwiseDistance.java
new file mode 100644
index 0000000..ad0a2a1
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/PairwiseDistance.java
@@ -0,0 +1,85 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Distance_functions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Pairwise Distance</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.PairwiseDistance#getP <em>P</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.PairwiseDistance#isKeepdim <em>Keepdim</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage#getPairwiseDistance()
+ * @model
+ * @generated
+ */
+public interface PairwiseDistance extends Distance_functions {
+	/**
+	 * Returns the value of the '<em><b>P</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>P</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>P</em>' attribute.
+	 * @see #setP(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage#getPairwiseDistance_P()
+	 * @model dataType="org.eclipse.uml2.types.Real" ordered="false"
+	 * @generated
+	 */
+	double getP();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.PairwiseDistance#getP <em>P</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>P</em>' attribute.
+	 * @see #getP()
+	 * @generated
+	 */
+	void setP(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Keepdim</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Keepdim</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Keepdim</em>' attribute.
+	 * @see #setKeepdim(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage#getPairwiseDistance_Keepdim()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isKeepdim();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.PairwiseDistance#isKeepdim <em>Keepdim</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Keepdim</em>' attribute.
+	 * @see #isKeepdim()
+	 * @generated
+	 */
+	void setKeepdim(boolean value);
+
+} // PairwiseDistance
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/impl/CosineSimilarityImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/impl/CosineSimilarityImpl.java
new file mode 100644
index 0000000..e875fd4
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/impl/CosineSimilarityImpl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.CosineSimilarity;
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Cosine Similarity</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.CosineSimilarityImpl#getDim <em>Dim</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class CosineSimilarityImpl extends Distance_functionsImpl implements CosineSimilarity {
+	/**
+	 * The default value of the '{@link #getDim() <em>Dim</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDim()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int DIM_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getDim() <em>Dim</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDim()
+	 * @generated
+	 * @ordered
+	 */
+	protected int dim = DIM_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CosineSimilarityImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Distance_functionsPackage.Literals.COSINE_SIMILARITY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getDim() {
+		return dim;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDim(int newDim) {
+		int oldDim = dim;
+		dim = newDim;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Distance_functionsPackage.COSINE_SIMILARITY__DIM, oldDim, dim));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Distance_functionsPackage.COSINE_SIMILARITY__DIM:
+				return getDim();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Distance_functionsPackage.COSINE_SIMILARITY__DIM:
+				setDim((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Distance_functionsPackage.COSINE_SIMILARITY__DIM:
+				setDim(DIM_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Distance_functionsPackage.COSINE_SIMILARITY__DIM:
+				return dim != DIM_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (dim: "); //$NON-NLS-1$
+		result.append(dim);
+		result.append(')');
+		return result.toString();
+	}
+
+} //CosineSimilarityImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/impl/Distance_functionsFactoryImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/impl/Distance_functionsFactoryImpl.java
new file mode 100644
index 0000000..ed36a6a
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/impl/Distance_functionsFactoryImpl.java
@@ -0,0 +1,118 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class Distance_functionsFactoryImpl extends EFactoryImpl implements Distance_functionsFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static Distance_functionsFactory init() {
+		try {
+			Distance_functionsFactory theDistance_functionsFactory = (Distance_functionsFactory)EPackage.Registry.INSTANCE.getEFactory(Distance_functionsPackage.eNS_URI);
+			if (theDistance_functionsFactory != null) {
+				return theDistance_functionsFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new Distance_functionsFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Distance_functionsFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case Distance_functionsPackage.COSINE_SIMILARITY: return createCosineSimilarity();
+			case Distance_functionsPackage.PAIRWISE_DISTANCE: return createPairwiseDistance();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public CosineSimilarity createCosineSimilarity() {
+		CosineSimilarityImpl cosineSimilarity = new CosineSimilarityImpl();
+		return cosineSimilarity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public PairwiseDistance createPairwiseDistance() {
+		PairwiseDistanceImpl pairwiseDistance = new PairwiseDistanceImpl();
+		return pairwiseDistance;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Distance_functionsPackage getDistance_functionsPackage() {
+		return (Distance_functionsPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static Distance_functionsPackage getPackage() {
+		return Distance_functionsPackage.eINSTANCE;
+	}
+
+} //Distance_functionsFactoryImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/impl/Distance_functionsImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/impl/Distance_functionsImpl.java
new file mode 100644
index 0000000..d657868
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/impl/Distance_functionsImpl.java
@@ -0,0 +1,174 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functions;
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModelImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Distance functions</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsImpl#getEps <em>Eps</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class Distance_functionsImpl extends ModelImpl implements Distance_functions {
+	/**
+	 * The default value of the '{@link #getEps() <em>Eps</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEps()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double EPS_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getEps() <em>Eps</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEps()
+	 * @generated
+	 * @ordered
+	 */
+	protected double eps = EPS_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Distance_functionsImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Distance_functionsPackage.Literals.DISTANCE_FUNCTIONS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getEps() {
+		return eps;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setEps(double newEps) {
+		double oldEps = eps;
+		eps = newEps;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Distance_functionsPackage.DISTANCE_FUNCTIONS__EPS, oldEps, eps));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Distance_functionsPackage.DISTANCE_FUNCTIONS__EPS:
+				return getEps();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Distance_functionsPackage.DISTANCE_FUNCTIONS__EPS:
+				setEps((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Distance_functionsPackage.DISTANCE_FUNCTIONS__EPS:
+				setEps(EPS_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Distance_functionsPackage.DISTANCE_FUNCTIONS__EPS:
+				return eps != EPS_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (eps: "); //$NON-NLS-1$
+		result.append(eps);
+		result.append(')');
+		return result.toString();
+	}
+
+} //Distance_functionsImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/impl/Distance_functionsPackageImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/impl/Distance_functionsPackageImpl.java
new file mode 100644
index 0000000..1399efc
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/impl/Distance_functionsPackageImpl.java
@@ -0,0 +1,453 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.AIMLPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.CosineSimilarity;
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functions;
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsFactory;
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.PairwiseDistance;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.Layer_weight_regularizersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModulePackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.DatatypesPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl.DatatypesPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.impl.AIMLPackageImpl;
+
+import org.eclipse.uml2.types.TypesPackage;
+
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class Distance_functionsPackageImpl extends EPackageImpl implements Distance_functionsPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass distance_functionsEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass cosineSimilarityEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass pairwiseDistanceEClass = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private Distance_functionsPackageImpl() {
+		super(eNS_URI, Distance_functionsFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>This method is used to initialize {@link Distance_functionsPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static Distance_functionsPackage init() {
+		if (isInited) return (Distance_functionsPackage)EPackage.Registry.INSTANCE.getEPackage(Distance_functionsPackage.eNS_URI);
+
+		// Obtain or create and register package
+		Object registeredDistance_functionsPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		Distance_functionsPackageImpl theDistance_functionsPackage = registeredDistance_functionsPackage instanceof Distance_functionsPackageImpl ? (Distance_functionsPackageImpl)registeredDistance_functionsPackage : new Distance_functionsPackageImpl();
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		EcorePackage.eINSTANCE.eClass();
+		TypesPackage.eINSTANCE.eClass();
+		UMLPackage.eINSTANCE.eClass();
+
+		// Obtain or create and register interdependencies
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AIMLPackage.eNS_URI);
+		AIMLPackageImpl theAIMLPackage = (AIMLPackageImpl)(registeredPackage instanceof AIMLPackageImpl ? registeredPackage : AIMLPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		ModulePackageImpl theModulePackage = (ModulePackageImpl)(registeredPackage instanceof ModulePackageImpl ? registeredPackage : ModulePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(TensorPackage.eNS_URI);
+		TensorPackageImpl theTensorPackage = (TensorPackageImpl)(registeredPackage instanceof TensorPackageImpl ? registeredPackage : TensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DatatypesPackage.eNS_URI);
+		DatatypesPackageImpl theDatatypesPackage = (DatatypesPackageImpl)(registeredPackage instanceof DatatypesPackageImpl ? registeredPackage : DatatypesPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Pooling_layersPackage.eNS_URI);
+		Pooling_layersPackageImpl thePooling_layersPackage = (Pooling_layersPackageImpl)(registeredPackage instanceof Pooling_layersPackageImpl ? registeredPackage : Pooling_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Convolution_layersPackage.eNS_URI);
+		Convolution_layersPackageImpl theConvolution_layersPackage = (Convolution_layersPackageImpl)(registeredPackage instanceof Convolution_layersPackageImpl ? registeredPackage : Convolution_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_constraintsPackage.eNS_URI);
+		Layer_weight_constraintsPackageImpl theLayer_weight_constraintsPackage = (Layer_weight_constraintsPackageImpl)(registeredPackage instanceof Layer_weight_constraintsPackageImpl ? registeredPackage : Layer_weight_constraintsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Padding_layersPackage.eNS_URI);
+		Padding_layersPackageImpl thePadding_layersPackage = (Padding_layersPackageImpl)(registeredPackage instanceof Padding_layersPackageImpl ? registeredPackage : Padding_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NonLinearActivationsPackage.eNS_URI);
+		NonLinearActivationsPackageImpl theNonLinearActivationsPackage = (NonLinearActivationsPackageImpl)(registeredPackage instanceof NonLinearActivationsPackageImpl ? registeredPackage : NonLinearActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftMinMaxActivationsPackage.eNS_URI);
+		SoftMinMaxActivationsPackageImpl theSoftMinMaxActivationsPackage = (SoftMinMaxActivationsPackageImpl)(registeredPackage instanceof SoftMinMaxActivationsPackageImpl ? registeredPackage : SoftMinMaxActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Normalization_layersPackage.eNS_URI);
+		Normalization_layersPackageImpl theNormalization_layersPackage = (Normalization_layersPackageImpl)(registeredPackage instanceof Normalization_layersPackageImpl ? registeredPackage : Normalization_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Recurrent_layersPackage.eNS_URI);
+		Recurrent_layersPackageImpl theRecurrent_layersPackage = (Recurrent_layersPackageImpl)(registeredPackage instanceof Recurrent_layersPackageImpl ? registeredPackage : Recurrent_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Transformer_layersPackage.eNS_URI);
+		Transformer_layersPackageImpl theTransformer_layersPackage = (Transformer_layersPackageImpl)(registeredPackage instanceof Transformer_layersPackageImpl ? registeredPackage : Transformer_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Linear_layersPackage.eNS_URI);
+		Linear_layersPackageImpl theLinear_layersPackage = (Linear_layersPackageImpl)(registeredPackage instanceof Linear_layersPackageImpl ? registeredPackage : Linear_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Dropout_layersPackage.eNS_URI);
+		Dropout_layersPackageImpl theDropout_layersPackage = (Dropout_layersPackageImpl)(registeredPackage instanceof Dropout_layersPackageImpl ? registeredPackage : Dropout_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Sparse_layersPackage.eNS_URI);
+		Sparse_layersPackageImpl theSparse_layersPackage = (Sparse_layersPackageImpl)(registeredPackage instanceof Sparse_layersPackageImpl ? registeredPackage : Sparse_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Loss_functionsPackage.eNS_URI);
+		Loss_functionsPackageImpl theLoss_functionsPackage = (Loss_functionsPackageImpl)(registeredPackage instanceof Loss_functionsPackageImpl ? registeredPackage : Loss_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Vision_layersPackage.eNS_URI);
+		Vision_layersPackageImpl theVision_layersPackage = (Vision_layersPackageImpl)(registeredPackage instanceof Vision_layersPackageImpl ? registeredPackage : Vision_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DataParallel_layersPackage.eNS_URI);
+		DataParallel_layersPackageImpl theDataParallel_layersPackage = (DataParallel_layersPackageImpl)(registeredPackage instanceof DataParallel_layersPackageImpl ? registeredPackage : DataParallel_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_regularizersPackage.eNS_URI);
+		Layer_weight_regularizersPackageImpl theLayer_weight_regularizersPackage = (Layer_weight_regularizersPackageImpl)(registeredPackage instanceof Layer_weight_regularizersPackageImpl ? registeredPackage : Layer_weight_regularizersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_initializersPackage.eNS_URI);
+		Layer_weight_initializersPackageImpl theLayer_weight_initializersPackage = (Layer_weight_initializersPackageImpl)(registeredPackage instanceof Layer_weight_initializersPackageImpl ? registeredPackage : Layer_weight_initializersPackage.eINSTANCE);
+
+		// Create package meta-data objects
+		theDistance_functionsPackage.createPackageContents();
+		theAIMLPackage.createPackageContents();
+		theModulePackage.createPackageContents();
+		theTensorPackage.createPackageContents();
+		theDatatypesPackage.createPackageContents();
+		thePooling_layersPackage.createPackageContents();
+		theConvolution_layersPackage.createPackageContents();
+		theLayer_weight_constraintsPackage.createPackageContents();
+		thePadding_layersPackage.createPackageContents();
+		theNonLinearActivationsPackage.createPackageContents();
+		theSoftMinMaxActivationsPackage.createPackageContents();
+		theNormalization_layersPackage.createPackageContents();
+		theRecurrent_layersPackage.createPackageContents();
+		theTransformer_layersPackage.createPackageContents();
+		theLinear_layersPackage.createPackageContents();
+		theDropout_layersPackage.createPackageContents();
+		theSparse_layersPackage.createPackageContents();
+		theLoss_functionsPackage.createPackageContents();
+		theVision_layersPackage.createPackageContents();
+		theDataParallel_layersPackage.createPackageContents();
+		theLayer_weight_regularizersPackage.createPackageContents();
+		theLayer_weight_initializersPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theDistance_functionsPackage.initializePackageContents();
+		theAIMLPackage.initializePackageContents();
+		theModulePackage.initializePackageContents();
+		theTensorPackage.initializePackageContents();
+		theDatatypesPackage.initializePackageContents();
+		thePooling_layersPackage.initializePackageContents();
+		theConvolution_layersPackage.initializePackageContents();
+		theLayer_weight_constraintsPackage.initializePackageContents();
+		thePadding_layersPackage.initializePackageContents();
+		theNonLinearActivationsPackage.initializePackageContents();
+		theSoftMinMaxActivationsPackage.initializePackageContents();
+		theNormalization_layersPackage.initializePackageContents();
+		theRecurrent_layersPackage.initializePackageContents();
+		theTransformer_layersPackage.initializePackageContents();
+		theLinear_layersPackage.initializePackageContents();
+		theDropout_layersPackage.initializePackageContents();
+		theSparse_layersPackage.initializePackageContents();
+		theLoss_functionsPackage.initializePackageContents();
+		theVision_layersPackage.initializePackageContents();
+		theDataParallel_layersPackage.initializePackageContents();
+		theLayer_weight_regularizersPackage.initializePackageContents();
+		theLayer_weight_initializersPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theDistance_functionsPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(Distance_functionsPackage.eNS_URI, theDistance_functionsPackage);
+		return theDistance_functionsPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getDistance_functions() {
+		return distance_functionsEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getDistance_functions_Eps() {
+		return (EAttribute)distance_functionsEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getCosineSimilarity() {
+		return cosineSimilarityEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getCosineSimilarity_Dim() {
+		return (EAttribute)cosineSimilarityEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getPairwiseDistance() {
+		return pairwiseDistanceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPairwiseDistance_P() {
+		return (EAttribute)pairwiseDistanceEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPairwiseDistance_Keepdim() {
+		return (EAttribute)pairwiseDistanceEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Distance_functionsFactory getDistance_functionsFactory() {
+		return (Distance_functionsFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		distance_functionsEClass = createEClass(DISTANCE_FUNCTIONS);
+		createEAttribute(distance_functionsEClass, DISTANCE_FUNCTIONS__EPS);
+
+		cosineSimilarityEClass = createEClass(COSINE_SIMILARITY);
+		createEAttribute(cosineSimilarityEClass, COSINE_SIMILARITY__DIM);
+
+		pairwiseDistanceEClass = createEClass(PAIRWISE_DISTANCE);
+		createEAttribute(pairwiseDistanceEClass, PAIRWISE_DISTANCE__P);
+		createEAttribute(pairwiseDistanceEClass, PAIRWISE_DISTANCE__KEEPDIM);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		ModulePackage theModulePackage = (ModulePackage)EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		distance_functionsEClass.getESuperTypes().add(theModulePackage.getModel());
+		cosineSimilarityEClass.getESuperTypes().add(this.getDistance_functions());
+		pairwiseDistanceEClass.getESuperTypes().add(this.getDistance_functions());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(distance_functionsEClass, Distance_functions.class, "Distance_functions", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getDistance_functions_Eps(), theTypesPackage.getReal(), "eps", null, 0, 1, Distance_functions.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(cosineSimilarityEClass, CosineSimilarity.class, "CosineSimilarity", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getCosineSimilarity_Dim(), theTypesPackage.getInteger(), "dim", null, 0, 1, CosineSimilarity.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(pairwiseDistanceEClass, PairwiseDistance.class, "PairwiseDistance", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getPairwiseDistance_P(), theTypesPackage.getReal(), "p", null, 0, 1, PairwiseDistance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getPairwiseDistance_Keepdim(), theTypesPackage.getBoolean(), "keepdim", null, 0, 1, PairwiseDistance.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+	}
+
+} //Distance_functionsPackageImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/impl/PairwiseDistanceImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/impl/PairwiseDistanceImpl.java
new file mode 100644
index 0000000..db6db4d
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/impl/PairwiseDistanceImpl.java
@@ -0,0 +1,229 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.PairwiseDistance;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Pairwise Distance</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.PairwiseDistanceImpl#getP <em>P</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.PairwiseDistanceImpl#isKeepdim <em>Keepdim</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class PairwiseDistanceImpl extends Distance_functionsImpl implements PairwiseDistance {
+	/**
+	 * The default value of the '{@link #getP() <em>P</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getP()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double P_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getP() <em>P</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getP()
+	 * @generated
+	 * @ordered
+	 */
+	protected double p = P_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isKeepdim() <em>Keepdim</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isKeepdim()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean KEEPDIM_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isKeepdim() <em>Keepdim</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isKeepdim()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean keepdim = KEEPDIM_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PairwiseDistanceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Distance_functionsPackage.Literals.PAIRWISE_DISTANCE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getP() {
+		return p;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setP(double newP) {
+		double oldP = p;
+		p = newP;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Distance_functionsPackage.PAIRWISE_DISTANCE__P, oldP, p));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isKeepdim() {
+		return keepdim;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setKeepdim(boolean newKeepdim) {
+		boolean oldKeepdim = keepdim;
+		keepdim = newKeepdim;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Distance_functionsPackage.PAIRWISE_DISTANCE__KEEPDIM, oldKeepdim, keepdim));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Distance_functionsPackage.PAIRWISE_DISTANCE__P:
+				return getP();
+			case Distance_functionsPackage.PAIRWISE_DISTANCE__KEEPDIM:
+				return isKeepdim();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Distance_functionsPackage.PAIRWISE_DISTANCE__P:
+				setP((Double)newValue);
+				return;
+			case Distance_functionsPackage.PAIRWISE_DISTANCE__KEEPDIM:
+				setKeepdim((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Distance_functionsPackage.PAIRWISE_DISTANCE__P:
+				setP(P_EDEFAULT);
+				return;
+			case Distance_functionsPackage.PAIRWISE_DISTANCE__KEEPDIM:
+				setKeepdim(KEEPDIM_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Distance_functionsPackage.PAIRWISE_DISTANCE__P:
+				return p != P_EDEFAULT;
+			case Distance_functionsPackage.PAIRWISE_DISTANCE__KEEPDIM:
+				return keepdim != KEEPDIM_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (p: "); //$NON-NLS-1$
+		result.append(p);
+		result.append(", keepdim: "); //$NON-NLS-1$
+		result.append(keepdim);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PairwiseDistanceImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/util/Distance_functionsAdapterFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/util/Distance_functionsAdapterFactory.java
new file mode 100644
index 0000000..f004452
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/util/Distance_functionsAdapterFactory.java
@@ -0,0 +1,184 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.*;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage
+ * @generated
+ */
+public class Distance_functionsAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static Distance_functionsPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Distance_functionsAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = Distance_functionsPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Distance_functionsSwitch<Adapter> modelSwitch =
+		new Distance_functionsSwitch<Adapter>() {
+			@Override
+			public Adapter caseDistance_functions(Distance_functions object) {
+				return createDistance_functionsAdapter();
+			}
+			@Override
+			public Adapter caseCosineSimilarity(CosineSimilarity object) {
+				return createCosineSimilarityAdapter();
+			}
+			@Override
+			public Adapter casePairwiseDistance(PairwiseDistance object) {
+				return createPairwiseDistanceAdapter();
+			}
+			@Override
+			public Adapter caseModel(Model object) {
+				return createModelAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functions <em>Distance functions</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functions
+	 * @generated
+	 */
+	public Adapter createDistance_functionsAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.CosineSimilarity <em>Cosine Similarity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.CosineSimilarity
+	 * @generated
+	 */
+	public Adapter createCosineSimilarityAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.PairwiseDistance <em>Pairwise Distance</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.PairwiseDistance
+	 * @generated
+	 */
+	public Adapter createPairwiseDistanceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model <em>Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.Model
+	 * @generated
+	 */
+	public Adapter createModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //Distance_functionsAdapterFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/util/Distance_functionsSwitch.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/util/Distance_functionsSwitch.java
new file mode 100644
index 0000000..e1d1fd8
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Distance_functions/util/Distance_functionsSwitch.java
@@ -0,0 +1,182 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.*;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage
+ * @generated
+ */
+public class Distance_functionsSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static Distance_functionsPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Distance_functionsSwitch() {
+		if (modelPackage == null) {
+			modelPackage = Distance_functionsPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case Distance_functionsPackage.DISTANCE_FUNCTIONS: {
+				Distance_functions distance_functions = (Distance_functions)theEObject;
+				T result = caseDistance_functions(distance_functions);
+				if (result == null) result = caseModel(distance_functions);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Distance_functionsPackage.COSINE_SIMILARITY: {
+				CosineSimilarity cosineSimilarity = (CosineSimilarity)theEObject;
+				T result = caseCosineSimilarity(cosineSimilarity);
+				if (result == null) result = caseDistance_functions(cosineSimilarity);
+				if (result == null) result = caseModel(cosineSimilarity);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Distance_functionsPackage.PAIRWISE_DISTANCE: {
+				PairwiseDistance pairwiseDistance = (PairwiseDistance)theEObject;
+				T result = casePairwiseDistance(pairwiseDistance);
+				if (result == null) result = caseDistance_functions(pairwiseDistance);
+				if (result == null) result = caseModel(pairwiseDistance);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Distance functions</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Distance functions</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDistance_functions(Distance_functions object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Cosine Similarity</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Cosine Similarity</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCosineSimilarity(CosineSimilarity object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Pairwise Distance</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Pairwise Distance</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePairwiseDistance(PairwiseDistance object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseModel(Model object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //Distance_functionsSwitch
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/AlphaDropout.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/AlphaDropout.java
new file mode 100644
index 0000000..353704f
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/AlphaDropout.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Alpha Dropout</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage#getAlphaDropout()
+ * @model
+ * @generated
+ */
+public interface AlphaDropout extends Dropout_layers {
+} // AlphaDropout
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/Dropout.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/Dropout.java
new file mode 100644
index 0000000..627656e
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/Dropout.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Dropout</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage#getDropout()
+ * @model
+ * @generated
+ */
+public interface Dropout extends Dropout_layers {
+} // Dropout
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/Dropout2d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/Dropout2d.java
new file mode 100644
index 0000000..5b781af
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/Dropout2d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Dropout2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage#getDropout2d()
+ * @model
+ * @generated
+ */
+public interface Dropout2d extends Dropout_layers {
+} // Dropout2d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/Dropout3d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/Dropout3d.java
new file mode 100644
index 0000000..9eac538
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/Dropout3d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Dropout3d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage#getDropout3d()
+ * @model
+ * @generated
+ */
+public interface Dropout3d extends Dropout_layers {
+} // Dropout3d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/Dropout_layers.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/Dropout_layers.java
new file mode 100644
index 0000000..f33f3e1
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/Dropout_layers.java
@@ -0,0 +1,131 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Dropout layers</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layers#getP <em>P</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layers#isInplace <em>Inplace</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layers#getNoise_shape <em>Noise shape</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layers#getSeed <em>Seed</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage#getDropout_layers()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Dropout_layers extends Model {
+	/**
+	 * Returns the value of the '<em><b>P</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>P</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>P</em>' attribute.
+	 * @see #setP(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage#getDropout_layers_P()
+	 * @model dataType="org.eclipse.uml2.types.Real" ordered="false"
+	 * @generated
+	 */
+	double getP();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layers#getP <em>P</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>P</em>' attribute.
+	 * @see #getP()
+	 * @generated
+	 */
+	void setP(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Inplace</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Inplace</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Inplace</em>' attribute.
+	 * @see #setInplace(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage#getDropout_layers_Inplace()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isInplace();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layers#isInplace <em>Inplace</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Inplace</em>' attribute.
+	 * @see #isInplace()
+	 * @generated
+	 */
+	void setInplace(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Noise shape</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.Integer}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Noise shape</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Noise shape</em>' attribute list.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage#getDropout_layers_Noise_shape()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	EList<Integer> getNoise_shape();
+
+	/**
+	 * Returns the value of the '<em><b>Seed</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Seed</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Seed</em>' attribute.
+	 * @see #setSeed(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage#getDropout_layers_Seed()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	int getSeed();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layers#getSeed <em>Seed</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Seed</em>' attribute.
+	 * @see #getSeed()
+	 * @generated
+	 */
+	void setSeed(int value);
+
+} // Dropout_layers
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/Dropout_layersFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/Dropout_layersFactory.java
new file mode 100644
index 0000000..94161d9
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/Dropout_layersFactory.java
@@ -0,0 +1,78 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage
+ * @generated
+ */
+public interface Dropout_layersFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	Dropout_layersFactory eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Dropout</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Dropout</em>'.
+	 * @generated
+	 */
+	Dropout createDropout();
+
+	/**
+	 * Returns a new object of class '<em>Dropout2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Dropout2d</em>'.
+	 * @generated
+	 */
+	Dropout2d createDropout2d();
+
+	/**
+	 * Returns a new object of class '<em>Dropout3d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Dropout3d</em>'.
+	 * @generated
+	 */
+	Dropout3d createDropout3d();
+
+	/**
+	 * Returns a new object of class '<em>Alpha Dropout</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Alpha Dropout</em>'.
+	 * @generated
+	 */
+	AlphaDropout createAlphaDropout();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	Dropout_layersPackage getDropout_layersPackage();
+
+} //Dropout_layersFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/Dropout_layersPackage.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/Dropout_layersPackage.java
new file mode 100644
index 0000000..a29291b
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/Dropout_layersPackage.java
@@ -0,0 +1,906 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface Dropout_layersPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "Dropout_layers"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://www.eclipse.org/papyrus/AIML/dropout/1"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "AIML.Dropout_layers"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	Dropout_layersPackage eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersImpl <em>Dropout layers</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersPackageImpl#getDropout_layers()
+	 * @generated
+	 */
+	int DROPOUT_LAYERS = 0;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT_LAYERS__BASE_CLASS = ModulePackage.MODEL__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT_LAYERS__NAME = ModulePackage.MODEL__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT_LAYERS__DATA = ModulePackage.MODEL__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT_LAYERS__REQUIRES_GRAD = ModulePackage.MODEL__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT_LAYERS__SUB_MODULE = ModulePackage.MODEL__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT_LAYERS__OPTIMIZER = ModulePackage.MODEL__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT_LAYERS__LOSS = ModulePackage.MODEL__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>P</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT_LAYERS__P = ModulePackage.MODEL_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Inplace</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT_LAYERS__INPLACE = ModulePackage.MODEL_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Noise shape</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT_LAYERS__NOISE_SHAPE = ModulePackage.MODEL_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Seed</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT_LAYERS__SEED = ModulePackage.MODEL_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the '<em>Dropout layers</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT_LAYERS_FEATURE_COUNT = ModulePackage.MODEL_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of operations of the '<em>Dropout layers</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT_LAYERS_OPERATION_COUNT = ModulePackage.MODEL_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.DropoutImpl <em>Dropout</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.DropoutImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersPackageImpl#getDropout()
+	 * @generated
+	 */
+	int DROPOUT = 1;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT__BASE_CLASS = DROPOUT_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT__NAME = DROPOUT_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT__DATA = DROPOUT_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT__REQUIRES_GRAD = DROPOUT_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT__SUB_MODULE = DROPOUT_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT__OPTIMIZER = DROPOUT_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT__LOSS = DROPOUT_LAYERS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>P</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT__P = DROPOUT_LAYERS__P;
+
+	/**
+	 * The feature id for the '<em><b>Inplace</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT__INPLACE = DROPOUT_LAYERS__INPLACE;
+
+	/**
+	 * The feature id for the '<em><b>Noise shape</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT__NOISE_SHAPE = DROPOUT_LAYERS__NOISE_SHAPE;
+
+	/**
+	 * The feature id for the '<em><b>Seed</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT__SEED = DROPOUT_LAYERS__SEED;
+
+	/**
+	 * The number of structural features of the '<em>Dropout</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT_FEATURE_COUNT = DROPOUT_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Dropout</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT_OPERATION_COUNT = DROPOUT_LAYERS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout2dImpl <em>Dropout2d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout2dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersPackageImpl#getDropout2d()
+	 * @generated
+	 */
+	int DROPOUT2D = 2;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT2D__BASE_CLASS = DROPOUT_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT2D__NAME = DROPOUT_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT2D__DATA = DROPOUT_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT2D__REQUIRES_GRAD = DROPOUT_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT2D__SUB_MODULE = DROPOUT_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT2D__OPTIMIZER = DROPOUT_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT2D__LOSS = DROPOUT_LAYERS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>P</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT2D__P = DROPOUT_LAYERS__P;
+
+	/**
+	 * The feature id for the '<em><b>Inplace</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT2D__INPLACE = DROPOUT_LAYERS__INPLACE;
+
+	/**
+	 * The feature id for the '<em><b>Noise shape</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT2D__NOISE_SHAPE = DROPOUT_LAYERS__NOISE_SHAPE;
+
+	/**
+	 * The feature id for the '<em><b>Seed</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT2D__SEED = DROPOUT_LAYERS__SEED;
+
+	/**
+	 * The number of structural features of the '<em>Dropout2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT2D_FEATURE_COUNT = DROPOUT_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Dropout2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT2D_OPERATION_COUNT = DROPOUT_LAYERS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout3dImpl <em>Dropout3d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout3dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersPackageImpl#getDropout3d()
+	 * @generated
+	 */
+	int DROPOUT3D = 3;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT3D__BASE_CLASS = DROPOUT_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT3D__NAME = DROPOUT_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT3D__DATA = DROPOUT_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT3D__REQUIRES_GRAD = DROPOUT_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT3D__SUB_MODULE = DROPOUT_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT3D__OPTIMIZER = DROPOUT_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT3D__LOSS = DROPOUT_LAYERS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>P</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT3D__P = DROPOUT_LAYERS__P;
+
+	/**
+	 * The feature id for the '<em><b>Inplace</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT3D__INPLACE = DROPOUT_LAYERS__INPLACE;
+
+	/**
+	 * The feature id for the '<em><b>Noise shape</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT3D__NOISE_SHAPE = DROPOUT_LAYERS__NOISE_SHAPE;
+
+	/**
+	 * The feature id for the '<em><b>Seed</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT3D__SEED = DROPOUT_LAYERS__SEED;
+
+	/**
+	 * The number of structural features of the '<em>Dropout3d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT3D_FEATURE_COUNT = DROPOUT_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Dropout3d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DROPOUT3D_OPERATION_COUNT = DROPOUT_LAYERS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.AlphaDropoutImpl <em>Alpha Dropout</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.AlphaDropoutImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersPackageImpl#getAlphaDropout()
+	 * @generated
+	 */
+	int ALPHA_DROPOUT = 4;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ALPHA_DROPOUT__BASE_CLASS = DROPOUT_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ALPHA_DROPOUT__NAME = DROPOUT_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ALPHA_DROPOUT__DATA = DROPOUT_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ALPHA_DROPOUT__REQUIRES_GRAD = DROPOUT_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ALPHA_DROPOUT__SUB_MODULE = DROPOUT_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ALPHA_DROPOUT__OPTIMIZER = DROPOUT_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ALPHA_DROPOUT__LOSS = DROPOUT_LAYERS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>P</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ALPHA_DROPOUT__P = DROPOUT_LAYERS__P;
+
+	/**
+	 * The feature id for the '<em><b>Inplace</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ALPHA_DROPOUT__INPLACE = DROPOUT_LAYERS__INPLACE;
+
+	/**
+	 * The feature id for the '<em><b>Noise shape</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ALPHA_DROPOUT__NOISE_SHAPE = DROPOUT_LAYERS__NOISE_SHAPE;
+
+	/**
+	 * The feature id for the '<em><b>Seed</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ALPHA_DROPOUT__SEED = DROPOUT_LAYERS__SEED;
+
+	/**
+	 * The number of structural features of the '<em>Alpha Dropout</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ALPHA_DROPOUT_FEATURE_COUNT = DROPOUT_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Alpha Dropout</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ALPHA_DROPOUT_OPERATION_COUNT = DROPOUT_LAYERS_OPERATION_COUNT + 0;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layers <em>Dropout layers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Dropout layers</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layers
+	 * @generated
+	 */
+	EClass getDropout_layers();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layers#getP <em>P</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>P</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layers#getP()
+	 * @see #getDropout_layers()
+	 * @generated
+	 */
+	EAttribute getDropout_layers_P();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layers#isInplace <em>Inplace</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Inplace</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layers#isInplace()
+	 * @see #getDropout_layers()
+	 * @generated
+	 */
+	EAttribute getDropout_layers_Inplace();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layers#getNoise_shape <em>Noise shape</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Noise shape</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layers#getNoise_shape()
+	 * @see #getDropout_layers()
+	 * @generated
+	 */
+	EAttribute getDropout_layers_Noise_shape();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layers#getSeed <em>Seed</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Seed</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layers#getSeed()
+	 * @see #getDropout_layers()
+	 * @generated
+	 */
+	EAttribute getDropout_layers_Seed();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout <em>Dropout</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Dropout</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout
+	 * @generated
+	 */
+	EClass getDropout();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout2d <em>Dropout2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Dropout2d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout2d
+	 * @generated
+	 */
+	EClass getDropout2d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout3d <em>Dropout3d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Dropout3d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout3d
+	 * @generated
+	 */
+	EClass getDropout3d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.AlphaDropout <em>Alpha Dropout</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Alpha Dropout</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.AlphaDropout
+	 * @generated
+	 */
+	EClass getAlphaDropout();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	Dropout_layersFactory getDropout_layersFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersImpl <em>Dropout layers</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersPackageImpl#getDropout_layers()
+		 * @generated
+		 */
+		EClass DROPOUT_LAYERS = eINSTANCE.getDropout_layers();
+
+		/**
+		 * The meta object literal for the '<em><b>P</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DROPOUT_LAYERS__P = eINSTANCE.getDropout_layers_P();
+
+		/**
+		 * The meta object literal for the '<em><b>Inplace</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DROPOUT_LAYERS__INPLACE = eINSTANCE.getDropout_layers_Inplace();
+
+		/**
+		 * The meta object literal for the '<em><b>Noise shape</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DROPOUT_LAYERS__NOISE_SHAPE = eINSTANCE.getDropout_layers_Noise_shape();
+
+		/**
+		 * The meta object literal for the '<em><b>Seed</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DROPOUT_LAYERS__SEED = eINSTANCE.getDropout_layers_Seed();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.DropoutImpl <em>Dropout</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.DropoutImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersPackageImpl#getDropout()
+		 * @generated
+		 */
+		EClass DROPOUT = eINSTANCE.getDropout();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout2dImpl <em>Dropout2d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout2dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersPackageImpl#getDropout2d()
+		 * @generated
+		 */
+		EClass DROPOUT2D = eINSTANCE.getDropout2d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout3dImpl <em>Dropout3d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout3dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersPackageImpl#getDropout3d()
+		 * @generated
+		 */
+		EClass DROPOUT3D = eINSTANCE.getDropout3d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.AlphaDropoutImpl <em>Alpha Dropout</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.AlphaDropoutImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersPackageImpl#getAlphaDropout()
+		 * @generated
+		 */
+		EClass ALPHA_DROPOUT = eINSTANCE.getAlphaDropout();
+
+	}
+
+} //Dropout_layersPackage
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/impl/AlphaDropoutImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/impl/AlphaDropoutImpl.java
new file mode 100644
index 0000000..730909a
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/impl/AlphaDropoutImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.AlphaDropout;
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Alpha Dropout</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class AlphaDropoutImpl extends Dropout_layersImpl implements AlphaDropout {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AlphaDropoutImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Dropout_layersPackage.Literals.ALPHA_DROPOUT;
+	}
+
+} //AlphaDropoutImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/impl/Dropout2dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/impl/Dropout2dImpl.java
new file mode 100644
index 0000000..01cfacb
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/impl/Dropout2dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout2d;
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Dropout2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class Dropout2dImpl extends Dropout_layersImpl implements Dropout2d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Dropout2dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Dropout_layersPackage.Literals.DROPOUT2D;
+	}
+
+} //Dropout2dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/impl/Dropout3dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/impl/Dropout3dImpl.java
new file mode 100644
index 0000000..102c533
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/impl/Dropout3dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout3d;
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Dropout3d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class Dropout3dImpl extends Dropout_layersImpl implements Dropout3d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Dropout3dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Dropout_layersPackage.Literals.DROPOUT3D;
+	}
+
+} //Dropout3dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/impl/DropoutImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/impl/DropoutImpl.java
new file mode 100644
index 0000000..dbd6d7e
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/impl/DropoutImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout;
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Dropout</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class DropoutImpl extends Dropout_layersImpl implements Dropout {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DropoutImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Dropout_layersPackage.Literals.DROPOUT;
+	}
+
+} //DropoutImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/impl/Dropout_layersFactoryImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/impl/Dropout_layersFactoryImpl.java
new file mode 100644
index 0000000..cf8810d
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/impl/Dropout_layersFactoryImpl.java
@@ -0,0 +1,142 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class Dropout_layersFactoryImpl extends EFactoryImpl implements Dropout_layersFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static Dropout_layersFactory init() {
+		try {
+			Dropout_layersFactory theDropout_layersFactory = (Dropout_layersFactory)EPackage.Registry.INSTANCE.getEFactory(Dropout_layersPackage.eNS_URI);
+			if (theDropout_layersFactory != null) {
+				return theDropout_layersFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new Dropout_layersFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Dropout_layersFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case Dropout_layersPackage.DROPOUT: return createDropout();
+			case Dropout_layersPackage.DROPOUT2D: return createDropout2d();
+			case Dropout_layersPackage.DROPOUT3D: return createDropout3d();
+			case Dropout_layersPackage.ALPHA_DROPOUT: return createAlphaDropout();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Dropout createDropout() {
+		DropoutImpl dropout = new DropoutImpl();
+		return dropout;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Dropout2d createDropout2d() {
+		Dropout2dImpl dropout2d = new Dropout2dImpl();
+		return dropout2d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Dropout3d createDropout3d() {
+		Dropout3dImpl dropout3d = new Dropout3dImpl();
+		return dropout3d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public AlphaDropout createAlphaDropout() {
+		AlphaDropoutImpl alphaDropout = new AlphaDropoutImpl();
+		return alphaDropout;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Dropout_layersPackage getDropout_layersPackage() {
+		return (Dropout_layersPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static Dropout_layersPackage getPackage() {
+		return Dropout_layersPackage.eINSTANCE;
+	}
+
+} //Dropout_layersFactoryImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/impl/Dropout_layersImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/impl/Dropout_layersImpl.java
new file mode 100644
index 0000000..8702ac9
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/impl/Dropout_layersImpl.java
@@ -0,0 +1,330 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layers;
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModelImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Dropout layers</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersImpl#getP <em>P</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersImpl#isInplace <em>Inplace</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersImpl#getNoise_shape <em>Noise shape</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersImpl#getSeed <em>Seed</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class Dropout_layersImpl extends ModelImpl implements Dropout_layers {
+	/**
+	 * The default value of the '{@link #getP() <em>P</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getP()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double P_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getP() <em>P</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getP()
+	 * @generated
+	 * @ordered
+	 */
+	protected double p = P_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isInplace() <em>Inplace</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isInplace()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean INPLACE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isInplace() <em>Inplace</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isInplace()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean inplace = INPLACE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getNoise_shape() <em>Noise shape</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNoise_shape()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Integer> noise_shape;
+
+	/**
+	 * The default value of the '{@link #getSeed() <em>Seed</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeed()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int SEED_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getSeed() <em>Seed</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeed()
+	 * @generated
+	 * @ordered
+	 */
+	protected int seed = SEED_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Dropout_layersImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Dropout_layersPackage.Literals.DROPOUT_LAYERS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getP() {
+		return p;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setP(double newP) {
+		double oldP = p;
+		p = newP;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Dropout_layersPackage.DROPOUT_LAYERS__P, oldP, p));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isInplace() {
+		return inplace;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setInplace(boolean newInplace) {
+		boolean oldInplace = inplace;
+		inplace = newInplace;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Dropout_layersPackage.DROPOUT_LAYERS__INPLACE, oldInplace, inplace));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Integer> getNoise_shape() {
+		if (noise_shape == null) {
+			noise_shape = new EDataTypeUniqueEList<Integer>(Integer.class, this, Dropout_layersPackage.DROPOUT_LAYERS__NOISE_SHAPE);
+		}
+		return noise_shape;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getSeed() {
+		return seed;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setSeed(int newSeed) {
+		int oldSeed = seed;
+		seed = newSeed;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Dropout_layersPackage.DROPOUT_LAYERS__SEED, oldSeed, seed));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Dropout_layersPackage.DROPOUT_LAYERS__P:
+				return getP();
+			case Dropout_layersPackage.DROPOUT_LAYERS__INPLACE:
+				return isInplace();
+			case Dropout_layersPackage.DROPOUT_LAYERS__NOISE_SHAPE:
+				return getNoise_shape();
+			case Dropout_layersPackage.DROPOUT_LAYERS__SEED:
+				return getSeed();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Dropout_layersPackage.DROPOUT_LAYERS__P:
+				setP((Double)newValue);
+				return;
+			case Dropout_layersPackage.DROPOUT_LAYERS__INPLACE:
+				setInplace((Boolean)newValue);
+				return;
+			case Dropout_layersPackage.DROPOUT_LAYERS__NOISE_SHAPE:
+				getNoise_shape().clear();
+				getNoise_shape().addAll((Collection<? extends Integer>)newValue);
+				return;
+			case Dropout_layersPackage.DROPOUT_LAYERS__SEED:
+				setSeed((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Dropout_layersPackage.DROPOUT_LAYERS__P:
+				setP(P_EDEFAULT);
+				return;
+			case Dropout_layersPackage.DROPOUT_LAYERS__INPLACE:
+				setInplace(INPLACE_EDEFAULT);
+				return;
+			case Dropout_layersPackage.DROPOUT_LAYERS__NOISE_SHAPE:
+				getNoise_shape().clear();
+				return;
+			case Dropout_layersPackage.DROPOUT_LAYERS__SEED:
+				setSeed(SEED_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Dropout_layersPackage.DROPOUT_LAYERS__P:
+				return p != P_EDEFAULT;
+			case Dropout_layersPackage.DROPOUT_LAYERS__INPLACE:
+				return inplace != INPLACE_EDEFAULT;
+			case Dropout_layersPackage.DROPOUT_LAYERS__NOISE_SHAPE:
+				return noise_shape != null && !noise_shape.isEmpty();
+			case Dropout_layersPackage.DROPOUT_LAYERS__SEED:
+				return seed != SEED_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (p: "); //$NON-NLS-1$
+		result.append(p);
+		result.append(", inplace: "); //$NON-NLS-1$
+		result.append(inplace);
+		result.append(", noise_shape: "); //$NON-NLS-1$
+		result.append(noise_shape);
+		result.append(", seed: "); //$NON-NLS-1$
+		result.append(seed);
+		result.append(')');
+		return result.toString();
+	}
+
+} //Dropout_layersImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/impl/Dropout_layersPackageImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/impl/Dropout_layersPackageImpl.java
new file mode 100644
index 0000000..22378aa
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/impl/Dropout_layersPackageImpl.java
@@ -0,0 +1,499 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.AIMLPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.AlphaDropout;
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout;
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout2d;
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout3d;
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layers;
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersFactory;
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.Layer_weight_regularizersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModulePackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.DatatypesPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl.DatatypesPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.impl.AIMLPackageImpl;
+
+import org.eclipse.uml2.types.TypesPackage;
+
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class Dropout_layersPackageImpl extends EPackageImpl implements Dropout_layersPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass dropout_layersEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass dropoutEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass dropout2dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass dropout3dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass alphaDropoutEClass = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private Dropout_layersPackageImpl() {
+		super(eNS_URI, Dropout_layersFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>This method is used to initialize {@link Dropout_layersPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static Dropout_layersPackage init() {
+		if (isInited) return (Dropout_layersPackage)EPackage.Registry.INSTANCE.getEPackage(Dropout_layersPackage.eNS_URI);
+
+		// Obtain or create and register package
+		Object registeredDropout_layersPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		Dropout_layersPackageImpl theDropout_layersPackage = registeredDropout_layersPackage instanceof Dropout_layersPackageImpl ? (Dropout_layersPackageImpl)registeredDropout_layersPackage : new Dropout_layersPackageImpl();
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		EcorePackage.eINSTANCE.eClass();
+		TypesPackage.eINSTANCE.eClass();
+		UMLPackage.eINSTANCE.eClass();
+
+		// Obtain or create and register interdependencies
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AIMLPackage.eNS_URI);
+		AIMLPackageImpl theAIMLPackage = (AIMLPackageImpl)(registeredPackage instanceof AIMLPackageImpl ? registeredPackage : AIMLPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		ModulePackageImpl theModulePackage = (ModulePackageImpl)(registeredPackage instanceof ModulePackageImpl ? registeredPackage : ModulePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(TensorPackage.eNS_URI);
+		TensorPackageImpl theTensorPackage = (TensorPackageImpl)(registeredPackage instanceof TensorPackageImpl ? registeredPackage : TensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DatatypesPackage.eNS_URI);
+		DatatypesPackageImpl theDatatypesPackage = (DatatypesPackageImpl)(registeredPackage instanceof DatatypesPackageImpl ? registeredPackage : DatatypesPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Pooling_layersPackage.eNS_URI);
+		Pooling_layersPackageImpl thePooling_layersPackage = (Pooling_layersPackageImpl)(registeredPackage instanceof Pooling_layersPackageImpl ? registeredPackage : Pooling_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Convolution_layersPackage.eNS_URI);
+		Convolution_layersPackageImpl theConvolution_layersPackage = (Convolution_layersPackageImpl)(registeredPackage instanceof Convolution_layersPackageImpl ? registeredPackage : Convolution_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_constraintsPackage.eNS_URI);
+		Layer_weight_constraintsPackageImpl theLayer_weight_constraintsPackage = (Layer_weight_constraintsPackageImpl)(registeredPackage instanceof Layer_weight_constraintsPackageImpl ? registeredPackage : Layer_weight_constraintsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Padding_layersPackage.eNS_URI);
+		Padding_layersPackageImpl thePadding_layersPackage = (Padding_layersPackageImpl)(registeredPackage instanceof Padding_layersPackageImpl ? registeredPackage : Padding_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NonLinearActivationsPackage.eNS_URI);
+		NonLinearActivationsPackageImpl theNonLinearActivationsPackage = (NonLinearActivationsPackageImpl)(registeredPackage instanceof NonLinearActivationsPackageImpl ? registeredPackage : NonLinearActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftMinMaxActivationsPackage.eNS_URI);
+		SoftMinMaxActivationsPackageImpl theSoftMinMaxActivationsPackage = (SoftMinMaxActivationsPackageImpl)(registeredPackage instanceof SoftMinMaxActivationsPackageImpl ? registeredPackage : SoftMinMaxActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Normalization_layersPackage.eNS_URI);
+		Normalization_layersPackageImpl theNormalization_layersPackage = (Normalization_layersPackageImpl)(registeredPackage instanceof Normalization_layersPackageImpl ? registeredPackage : Normalization_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Recurrent_layersPackage.eNS_URI);
+		Recurrent_layersPackageImpl theRecurrent_layersPackage = (Recurrent_layersPackageImpl)(registeredPackage instanceof Recurrent_layersPackageImpl ? registeredPackage : Recurrent_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Transformer_layersPackage.eNS_URI);
+		Transformer_layersPackageImpl theTransformer_layersPackage = (Transformer_layersPackageImpl)(registeredPackage instanceof Transformer_layersPackageImpl ? registeredPackage : Transformer_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Linear_layersPackage.eNS_URI);
+		Linear_layersPackageImpl theLinear_layersPackage = (Linear_layersPackageImpl)(registeredPackage instanceof Linear_layersPackageImpl ? registeredPackage : Linear_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Sparse_layersPackage.eNS_URI);
+		Sparse_layersPackageImpl theSparse_layersPackage = (Sparse_layersPackageImpl)(registeredPackage instanceof Sparse_layersPackageImpl ? registeredPackage : Sparse_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Distance_functionsPackage.eNS_URI);
+		Distance_functionsPackageImpl theDistance_functionsPackage = (Distance_functionsPackageImpl)(registeredPackage instanceof Distance_functionsPackageImpl ? registeredPackage : Distance_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Loss_functionsPackage.eNS_URI);
+		Loss_functionsPackageImpl theLoss_functionsPackage = (Loss_functionsPackageImpl)(registeredPackage instanceof Loss_functionsPackageImpl ? registeredPackage : Loss_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Vision_layersPackage.eNS_URI);
+		Vision_layersPackageImpl theVision_layersPackage = (Vision_layersPackageImpl)(registeredPackage instanceof Vision_layersPackageImpl ? registeredPackage : Vision_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DataParallel_layersPackage.eNS_URI);
+		DataParallel_layersPackageImpl theDataParallel_layersPackage = (DataParallel_layersPackageImpl)(registeredPackage instanceof DataParallel_layersPackageImpl ? registeredPackage : DataParallel_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_regularizersPackage.eNS_URI);
+		Layer_weight_regularizersPackageImpl theLayer_weight_regularizersPackage = (Layer_weight_regularizersPackageImpl)(registeredPackage instanceof Layer_weight_regularizersPackageImpl ? registeredPackage : Layer_weight_regularizersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_initializersPackage.eNS_URI);
+		Layer_weight_initializersPackageImpl theLayer_weight_initializersPackage = (Layer_weight_initializersPackageImpl)(registeredPackage instanceof Layer_weight_initializersPackageImpl ? registeredPackage : Layer_weight_initializersPackage.eINSTANCE);
+
+		// Create package meta-data objects
+		theDropout_layersPackage.createPackageContents();
+		theAIMLPackage.createPackageContents();
+		theModulePackage.createPackageContents();
+		theTensorPackage.createPackageContents();
+		theDatatypesPackage.createPackageContents();
+		thePooling_layersPackage.createPackageContents();
+		theConvolution_layersPackage.createPackageContents();
+		theLayer_weight_constraintsPackage.createPackageContents();
+		thePadding_layersPackage.createPackageContents();
+		theNonLinearActivationsPackage.createPackageContents();
+		theSoftMinMaxActivationsPackage.createPackageContents();
+		theNormalization_layersPackage.createPackageContents();
+		theRecurrent_layersPackage.createPackageContents();
+		theTransformer_layersPackage.createPackageContents();
+		theLinear_layersPackage.createPackageContents();
+		theSparse_layersPackage.createPackageContents();
+		theDistance_functionsPackage.createPackageContents();
+		theLoss_functionsPackage.createPackageContents();
+		theVision_layersPackage.createPackageContents();
+		theDataParallel_layersPackage.createPackageContents();
+		theLayer_weight_regularizersPackage.createPackageContents();
+		theLayer_weight_initializersPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theDropout_layersPackage.initializePackageContents();
+		theAIMLPackage.initializePackageContents();
+		theModulePackage.initializePackageContents();
+		theTensorPackage.initializePackageContents();
+		theDatatypesPackage.initializePackageContents();
+		thePooling_layersPackage.initializePackageContents();
+		theConvolution_layersPackage.initializePackageContents();
+		theLayer_weight_constraintsPackage.initializePackageContents();
+		thePadding_layersPackage.initializePackageContents();
+		theNonLinearActivationsPackage.initializePackageContents();
+		theSoftMinMaxActivationsPackage.initializePackageContents();
+		theNormalization_layersPackage.initializePackageContents();
+		theRecurrent_layersPackage.initializePackageContents();
+		theTransformer_layersPackage.initializePackageContents();
+		theLinear_layersPackage.initializePackageContents();
+		theSparse_layersPackage.initializePackageContents();
+		theDistance_functionsPackage.initializePackageContents();
+		theLoss_functionsPackage.initializePackageContents();
+		theVision_layersPackage.initializePackageContents();
+		theDataParallel_layersPackage.initializePackageContents();
+		theLayer_weight_regularizersPackage.initializePackageContents();
+		theLayer_weight_initializersPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theDropout_layersPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(Dropout_layersPackage.eNS_URI, theDropout_layersPackage);
+		return theDropout_layersPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getDropout_layers() {
+		return dropout_layersEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getDropout_layers_P() {
+		return (EAttribute)dropout_layersEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getDropout_layers_Inplace() {
+		return (EAttribute)dropout_layersEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getDropout_layers_Noise_shape() {
+		return (EAttribute)dropout_layersEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getDropout_layers_Seed() {
+		return (EAttribute)dropout_layersEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getDropout() {
+		return dropoutEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getDropout2d() {
+		return dropout2dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getDropout3d() {
+		return dropout3dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getAlphaDropout() {
+		return alphaDropoutEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Dropout_layersFactory getDropout_layersFactory() {
+		return (Dropout_layersFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		dropout_layersEClass = createEClass(DROPOUT_LAYERS);
+		createEAttribute(dropout_layersEClass, DROPOUT_LAYERS__P);
+		createEAttribute(dropout_layersEClass, DROPOUT_LAYERS__INPLACE);
+		createEAttribute(dropout_layersEClass, DROPOUT_LAYERS__NOISE_SHAPE);
+		createEAttribute(dropout_layersEClass, DROPOUT_LAYERS__SEED);
+
+		dropoutEClass = createEClass(DROPOUT);
+
+		dropout2dEClass = createEClass(DROPOUT2D);
+
+		dropout3dEClass = createEClass(DROPOUT3D);
+
+		alphaDropoutEClass = createEClass(ALPHA_DROPOUT);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		ModulePackage theModulePackage = (ModulePackage)EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		dropout_layersEClass.getESuperTypes().add(theModulePackage.getModel());
+		dropoutEClass.getESuperTypes().add(this.getDropout_layers());
+		dropout2dEClass.getESuperTypes().add(this.getDropout_layers());
+		dropout3dEClass.getESuperTypes().add(this.getDropout_layers());
+		alphaDropoutEClass.getESuperTypes().add(this.getDropout_layers());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(dropout_layersEClass, Dropout_layers.class, "Dropout_layers", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getDropout_layers_P(), theTypesPackage.getReal(), "p", null, 0, 1, Dropout_layers.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getDropout_layers_Inplace(), theTypesPackage.getBoolean(), "inplace", null, 0, 1, Dropout_layers.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getDropout_layers_Noise_shape(), theTypesPackage.getInteger(), "noise_shape", null, 0, -1, Dropout_layers.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getDropout_layers_Seed(), theTypesPackage.getInteger(), "seed", null, 0, 1, Dropout_layers.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(dropoutEClass, Dropout.class, "Dropout", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(dropout2dEClass, Dropout2d.class, "Dropout2d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(dropout3dEClass, Dropout3d.class, "Dropout3d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(alphaDropoutEClass, AlphaDropout.class, "AlphaDropout", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+	}
+
+} //Dropout_layersPackageImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/util/Dropout_layersAdapterFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/util/Dropout_layersAdapterFactory.java
new file mode 100644
index 0000000..7bc7576
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/util/Dropout_layersAdapterFactory.java
@@ -0,0 +1,220 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.*;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage
+ * @generated
+ */
+public class Dropout_layersAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static Dropout_layersPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Dropout_layersAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = Dropout_layersPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Dropout_layersSwitch<Adapter> modelSwitch =
+		new Dropout_layersSwitch<Adapter>() {
+			@Override
+			public Adapter caseDropout_layers(Dropout_layers object) {
+				return createDropout_layersAdapter();
+			}
+			@Override
+			public Adapter caseDropout(Dropout object) {
+				return createDropoutAdapter();
+			}
+			@Override
+			public Adapter caseDropout2d(Dropout2d object) {
+				return createDropout2dAdapter();
+			}
+			@Override
+			public Adapter caseDropout3d(Dropout3d object) {
+				return createDropout3dAdapter();
+			}
+			@Override
+			public Adapter caseAlphaDropout(AlphaDropout object) {
+				return createAlphaDropoutAdapter();
+			}
+			@Override
+			public Adapter caseModel(Model object) {
+				return createModelAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layers <em>Dropout layers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layers
+	 * @generated
+	 */
+	public Adapter createDropout_layersAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout <em>Dropout</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout
+	 * @generated
+	 */
+	public Adapter createDropoutAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout2d <em>Dropout2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout2d
+	 * @generated
+	 */
+	public Adapter createDropout2dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout3d <em>Dropout3d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout3d
+	 * @generated
+	 */
+	public Adapter createDropout3dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.AlphaDropout <em>Alpha Dropout</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.AlphaDropout
+	 * @generated
+	 */
+	public Adapter createAlphaDropoutAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model <em>Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.Model
+	 * @generated
+	 */
+	public Adapter createModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //Dropout_layersAdapterFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/util/Dropout_layersSwitch.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/util/Dropout_layersSwitch.java
new file mode 100644
index 0000000..ba3ae1a
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Dropout_layers/util/Dropout_layersSwitch.java
@@ -0,0 +1,228 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.*;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage
+ * @generated
+ */
+public class Dropout_layersSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static Dropout_layersPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Dropout_layersSwitch() {
+		if (modelPackage == null) {
+			modelPackage = Dropout_layersPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case Dropout_layersPackage.DROPOUT_LAYERS: {
+				Dropout_layers dropout_layers = (Dropout_layers)theEObject;
+				T result = caseDropout_layers(dropout_layers);
+				if (result == null) result = caseModel(dropout_layers);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Dropout_layersPackage.DROPOUT: {
+				Dropout dropout = (Dropout)theEObject;
+				T result = caseDropout(dropout);
+				if (result == null) result = caseDropout_layers(dropout);
+				if (result == null) result = caseModel(dropout);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Dropout_layersPackage.DROPOUT2D: {
+				Dropout2d dropout2d = (Dropout2d)theEObject;
+				T result = caseDropout2d(dropout2d);
+				if (result == null) result = caseDropout_layers(dropout2d);
+				if (result == null) result = caseModel(dropout2d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Dropout_layersPackage.DROPOUT3D: {
+				Dropout3d dropout3d = (Dropout3d)theEObject;
+				T result = caseDropout3d(dropout3d);
+				if (result == null) result = caseDropout_layers(dropout3d);
+				if (result == null) result = caseModel(dropout3d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Dropout_layersPackage.ALPHA_DROPOUT: {
+				AlphaDropout alphaDropout = (AlphaDropout)theEObject;
+				T result = caseAlphaDropout(alphaDropout);
+				if (result == null) result = caseDropout_layers(alphaDropout);
+				if (result == null) result = caseModel(alphaDropout);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Dropout layers</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Dropout layers</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDropout_layers(Dropout_layers object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Dropout</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Dropout</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDropout(Dropout object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Dropout2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Dropout2d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDropout2d(Dropout2d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Dropout3d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Dropout3d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDropout3d(Dropout3d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Alpha Dropout</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Alpha Dropout</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseAlphaDropout(AlphaDropout object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseModel(Model object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //Dropout_layersSwitch
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/Layer_weight_constraintsFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/Layer_weight_constraintsFactory.java
new file mode 100644
index 0000000..8fb8633
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/Layer_weight_constraintsFactory.java
@@ -0,0 +1,87 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage
+ * @generated
+ */
+public interface Layer_weight_constraintsFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	Layer_weight_constraintsFactory eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>min max norm</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>min max norm</em>'.
+	 * @generated
+	 */
+	min_max_norm createmin_max_norm();
+
+	/**
+	 * Returns a new object of class '<em>max norm</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>max norm</em>'.
+	 * @generated
+	 */
+	max_norm createmax_norm();
+
+	/**
+	 * Returns a new object of class '<em>non neg</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>non neg</em>'.
+	 * @generated
+	 */
+	non_neg createnon_neg();
+
+	/**
+	 * Returns a new object of class '<em>radial constraint</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>radial constraint</em>'.
+	 * @generated
+	 */
+	radial_constraint createradial_constraint();
+
+	/**
+	 * Returns a new object of class '<em>unit norm</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>unit norm</em>'.
+	 * @generated
+	 */
+	unit_norm createunit_norm();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	Layer_weight_constraintsPackage getLayer_weight_constraintsPackage();
+
+} //Layer_weight_constraintsFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/Layer_weight_constraintsPackage.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/Layer_weight_constraintsPackage.java
new file mode 100644
index 0000000..86ad8a8
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/Layer_weight_constraintsPackage.java
@@ -0,0 +1,643 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface Layer_weight_constraintsPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "Layer_weight_constraints"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http:///AIML/Layer_weight_constraints.ecore"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "AIML.Layer_weight_constraints"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	Layer_weight_constraintsPackage eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.constraintsImpl <em>constraints</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.constraintsImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl#getconstraints()
+	 * @generated
+	 */
+	int CONSTRAINTS = 7;
+
+	/**
+	 * The number of structural features of the '<em>constraints</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTRAINTS_FEATURE_COUNT = 0;
+
+	/**
+	 * The number of operations of the '<em>constraints</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTRAINTS_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.normImpl <em>norm</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.normImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl#getnorm()
+	 * @generated
+	 */
+	int NORM = 2;
+
+	/**
+	 * The feature id for the '<em><b>Axis</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORM__AXIS = CONSTRAINTS_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>norm</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORM_FEATURE_COUNT = CONSTRAINTS_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>norm</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORM_OPERATION_COUNT = CONSTRAINTS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.NormWithMaxValueImpl <em>Norm With Max Value</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.NormWithMaxValueImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl#getNormWithMaxValue()
+	 * @generated
+	 */
+	int NORM_WITH_MAX_VALUE = 1;
+
+	/**
+	 * The feature id for the '<em><b>Axis</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORM_WITH_MAX_VALUE__AXIS = NORM__AXIS;
+
+	/**
+	 * The feature id for the '<em><b>Max value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORM_WITH_MAX_VALUE__MAX_VALUE = NORM_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Norm With Max Value</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORM_WITH_MAX_VALUE_FEATURE_COUNT = NORM_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Norm With Max Value</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORM_WITH_MAX_VALUE_OPERATION_COUNT = NORM_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.min_max_normImpl <em>min max norm</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.min_max_normImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl#getmin_max_norm()
+	 * @generated
+	 */
+	int MIN_MAX_NORM = 0;
+
+	/**
+	 * The feature id for the '<em><b>Axis</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MIN_MAX_NORM__AXIS = NORM_WITH_MAX_VALUE__AXIS;
+
+	/**
+	 * The feature id for the '<em><b>Max value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MIN_MAX_NORM__MAX_VALUE = NORM_WITH_MAX_VALUE__MAX_VALUE;
+
+	/**
+	 * The feature id for the '<em><b>Min value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MIN_MAX_NORM__MIN_VALUE = NORM_WITH_MAX_VALUE_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Rate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MIN_MAX_NORM__RATE = NORM_WITH_MAX_VALUE_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>min max norm</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MIN_MAX_NORM_FEATURE_COUNT = NORM_WITH_MAX_VALUE_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>min max norm</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MIN_MAX_NORM_OPERATION_COUNT = NORM_WITH_MAX_VALUE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.max_normImpl <em>max norm</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.max_normImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl#getmax_norm()
+	 * @generated
+	 */
+	int MAX_NORM = 3;
+
+	/**
+	 * The feature id for the '<em><b>Axis</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_NORM__AXIS = NORM_WITH_MAX_VALUE__AXIS;
+
+	/**
+	 * The feature id for the '<em><b>Max value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_NORM__MAX_VALUE = NORM_WITH_MAX_VALUE__MAX_VALUE;
+
+	/**
+	 * The number of structural features of the '<em>max norm</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_NORM_FEATURE_COUNT = NORM_WITH_MAX_VALUE_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>max norm</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_NORM_OPERATION_COUNT = NORM_WITH_MAX_VALUE_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.non_negImpl <em>non neg</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.non_negImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl#getnon_neg()
+	 * @generated
+	 */
+	int NON_NEG = 4;
+
+	/**
+	 * The number of structural features of the '<em>non neg</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NON_NEG_FEATURE_COUNT = CONSTRAINTS_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>non neg</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NON_NEG_OPERATION_COUNT = CONSTRAINTS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.radial_constraintImpl <em>radial constraint</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.radial_constraintImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl#getradial_constraint()
+	 * @generated
+	 */
+	int RADIAL_CONSTRAINT = 5;
+
+	/**
+	 * The number of structural features of the '<em>radial constraint</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RADIAL_CONSTRAINT_FEATURE_COUNT = CONSTRAINTS_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>radial constraint</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RADIAL_CONSTRAINT_OPERATION_COUNT = CONSTRAINTS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.unit_normImpl <em>unit norm</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.unit_normImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl#getunit_norm()
+	 * @generated
+	 */
+	int UNIT_NORM = 6;
+
+	/**
+	 * The feature id for the '<em><b>Axis</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNIT_NORM__AXIS = NORM__AXIS;
+
+	/**
+	 * The number of structural features of the '<em>unit norm</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNIT_NORM_FEATURE_COUNT = NORM_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>unit norm</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UNIT_NORM_OPERATION_COUNT = NORM_OPERATION_COUNT + 0;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.min_max_norm <em>min max norm</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>min max norm</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.min_max_norm
+	 * @generated
+	 */
+	EClass getmin_max_norm();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.min_max_norm#getMin_value <em>Min value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Min value</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.min_max_norm#getMin_value()
+	 * @see #getmin_max_norm()
+	 * @generated
+	 */
+	EAttribute getmin_max_norm_Min_value();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.min_max_norm#getRate <em>Rate</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Rate</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.min_max_norm#getRate()
+	 * @see #getmin_max_norm()
+	 * @generated
+	 */
+	EAttribute getmin_max_norm_Rate();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.NormWithMaxValue <em>Norm With Max Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Norm With Max Value</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.NormWithMaxValue
+	 * @generated
+	 */
+	EClass getNormWithMaxValue();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.NormWithMaxValue#getMax_value <em>Max value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Max value</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.NormWithMaxValue#getMax_value()
+	 * @see #getNormWithMaxValue()
+	 * @generated
+	 */
+	EAttribute getNormWithMaxValue_Max_value();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.norm <em>norm</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>norm</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.norm
+	 * @generated
+	 */
+	EClass getnorm();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.norm#getAxis <em>Axis</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Axis</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.norm#getAxis()
+	 * @see #getnorm()
+	 * @generated
+	 */
+	EAttribute getnorm_Axis();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.max_norm <em>max norm</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>max norm</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.max_norm
+	 * @generated
+	 */
+	EClass getmax_norm();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.non_neg <em>non neg</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>non neg</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.non_neg
+	 * @generated
+	 */
+	EClass getnon_neg();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.radial_constraint <em>radial constraint</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>radial constraint</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.radial_constraint
+	 * @generated
+	 */
+	EClass getradial_constraint();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.unit_norm <em>unit norm</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>unit norm</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.unit_norm
+	 * @generated
+	 */
+	EClass getunit_norm();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.constraints <em>constraints</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>constraints</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.constraints
+	 * @generated
+	 */
+	EClass getconstraints();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	Layer_weight_constraintsFactory getLayer_weight_constraintsFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.min_max_normImpl <em>min max norm</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.min_max_normImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl#getmin_max_norm()
+		 * @generated
+		 */
+		EClass MIN_MAX_NORM = eINSTANCE.getmin_max_norm();
+
+		/**
+		 * The meta object literal for the '<em><b>Min value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MIN_MAX_NORM__MIN_VALUE = eINSTANCE.getmin_max_norm_Min_value();
+
+		/**
+		 * The meta object literal for the '<em><b>Rate</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MIN_MAX_NORM__RATE = eINSTANCE.getmin_max_norm_Rate();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.NormWithMaxValueImpl <em>Norm With Max Value</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.NormWithMaxValueImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl#getNormWithMaxValue()
+		 * @generated
+		 */
+		EClass NORM_WITH_MAX_VALUE = eINSTANCE.getNormWithMaxValue();
+
+		/**
+		 * The meta object literal for the '<em><b>Max value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute NORM_WITH_MAX_VALUE__MAX_VALUE = eINSTANCE.getNormWithMaxValue_Max_value();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.normImpl <em>norm</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.normImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl#getnorm()
+		 * @generated
+		 */
+		EClass NORM = eINSTANCE.getnorm();
+
+		/**
+		 * The meta object literal for the '<em><b>Axis</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute NORM__AXIS = eINSTANCE.getnorm_Axis();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.max_normImpl <em>max norm</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.max_normImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl#getmax_norm()
+		 * @generated
+		 */
+		EClass MAX_NORM = eINSTANCE.getmax_norm();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.non_negImpl <em>non neg</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.non_negImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl#getnon_neg()
+		 * @generated
+		 */
+		EClass NON_NEG = eINSTANCE.getnon_neg();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.radial_constraintImpl <em>radial constraint</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.radial_constraintImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl#getradial_constraint()
+		 * @generated
+		 */
+		EClass RADIAL_CONSTRAINT = eINSTANCE.getradial_constraint();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.unit_normImpl <em>unit norm</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.unit_normImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl#getunit_norm()
+		 * @generated
+		 */
+		EClass UNIT_NORM = eINSTANCE.getunit_norm();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.constraintsImpl <em>constraints</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.constraintsImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl#getconstraints()
+		 * @generated
+		 */
+		EClass CONSTRAINTS = eINSTANCE.getconstraints();
+
+	}
+
+} //Layer_weight_constraintsPackage
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/NormWithMaxValue.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/NormWithMaxValue.java
new file mode 100644
index 0000000..ff7ebd6
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/NormWithMaxValue.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Norm With Max Value</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.NormWithMaxValue#getMax_value <em>Max value</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage#getNormWithMaxValue()
+ * @model abstract="true"
+ * @generated
+ */
+public interface NormWithMaxValue extends norm {
+	/**
+	 * Returns the value of the '<em><b>Max value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Max value</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Max value</em>' attribute.
+	 * @see #setMax_value(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage#getNormWithMaxValue_Max_value()
+	 * @model dataType="org.eclipse.uml2.types.Real" required="true" ordered="false"
+	 * @generated
+	 */
+	double getMax_value();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.NormWithMaxValue#getMax_value <em>Max value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Max value</em>' attribute.
+	 * @see #getMax_value()
+	 * @generated
+	 */
+	void setMax_value(double value);
+
+} // NormWithMaxValue
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/constraints.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/constraints.java
new file mode 100644
index 0000000..6b54d6f
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/constraints.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>constraints</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage#getconstraints()
+ * @model abstract="true"
+ * @generated
+ */
+public interface constraints extends EObject {
+} // constraints
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/impl/Layer_weight_constraintsFactoryImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/impl/Layer_weight_constraintsFactoryImpl.java
new file mode 100644
index 0000000..5b09109
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/impl/Layer_weight_constraintsFactoryImpl.java
@@ -0,0 +1,154 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class Layer_weight_constraintsFactoryImpl extends EFactoryImpl implements Layer_weight_constraintsFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static Layer_weight_constraintsFactory init() {
+		try {
+			Layer_weight_constraintsFactory theLayer_weight_constraintsFactory = (Layer_weight_constraintsFactory)EPackage.Registry.INSTANCE.getEFactory(Layer_weight_constraintsPackage.eNS_URI);
+			if (theLayer_weight_constraintsFactory != null) {
+				return theLayer_weight_constraintsFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new Layer_weight_constraintsFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Layer_weight_constraintsFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case Layer_weight_constraintsPackage.MIN_MAX_NORM: return createmin_max_norm();
+			case Layer_weight_constraintsPackage.MAX_NORM: return createmax_norm();
+			case Layer_weight_constraintsPackage.NON_NEG: return createnon_neg();
+			case Layer_weight_constraintsPackage.RADIAL_CONSTRAINT: return createradial_constraint();
+			case Layer_weight_constraintsPackage.UNIT_NORM: return createunit_norm();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public min_max_norm createmin_max_norm() {
+		min_max_normImpl min_max_norm = new min_max_normImpl();
+		return min_max_norm;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public max_norm createmax_norm() {
+		max_normImpl max_norm = new max_normImpl();
+		return max_norm;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public non_neg createnon_neg() {
+		non_negImpl non_neg = new non_negImpl();
+		return non_neg;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public radial_constraint createradial_constraint() {
+		radial_constraintImpl radial_constraint = new radial_constraintImpl();
+		return radial_constraint;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public unit_norm createunit_norm() {
+		unit_normImpl unit_norm = new unit_normImpl();
+		return unit_norm;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Layer_weight_constraintsPackage getLayer_weight_constraintsPackage() {
+		return (Layer_weight_constraintsPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static Layer_weight_constraintsPackage getPackage() {
+		return Layer_weight_constraintsPackage.eINSTANCE;
+	}
+
+} //Layer_weight_constraintsFactoryImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/impl/Layer_weight_constraintsPackageImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/impl/Layer_weight_constraintsPackageImpl.java
new file mode 100644
index 0000000..c746295
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/impl/Layer_weight_constraintsPackageImpl.java
@@ -0,0 +1,566 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.AIMLPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsFactory;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.NormWithMaxValue;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.constraints;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.max_norm;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.min_max_norm;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.non_neg;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.norm;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.radial_constraint;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.unit_norm;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.Layer_weight_regularizersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModulePackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.DatatypesPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl.DatatypesPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.impl.AIMLPackageImpl;
+
+import org.eclipse.uml2.types.TypesPackage;
+
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class Layer_weight_constraintsPackageImpl extends EPackageImpl implements Layer_weight_constraintsPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass min_max_normEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass normWithMaxValueEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass normEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass max_normEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass non_negEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass radial_constraintEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass unit_normEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass constraintsEClass = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private Layer_weight_constraintsPackageImpl() {
+		super(eNS_URI, Layer_weight_constraintsFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>This method is used to initialize {@link Layer_weight_constraintsPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static Layer_weight_constraintsPackage init() {
+		if (isInited) return (Layer_weight_constraintsPackage)EPackage.Registry.INSTANCE.getEPackage(Layer_weight_constraintsPackage.eNS_URI);
+
+		// Obtain or create and register package
+		Object registeredLayer_weight_constraintsPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		Layer_weight_constraintsPackageImpl theLayer_weight_constraintsPackage = registeredLayer_weight_constraintsPackage instanceof Layer_weight_constraintsPackageImpl ? (Layer_weight_constraintsPackageImpl)registeredLayer_weight_constraintsPackage : new Layer_weight_constraintsPackageImpl();
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		EcorePackage.eINSTANCE.eClass();
+		TypesPackage.eINSTANCE.eClass();
+		UMLPackage.eINSTANCE.eClass();
+
+		// Obtain or create and register interdependencies
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AIMLPackage.eNS_URI);
+		AIMLPackageImpl theAIMLPackage = (AIMLPackageImpl)(registeredPackage instanceof AIMLPackageImpl ? registeredPackage : AIMLPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		ModulePackageImpl theModulePackage = (ModulePackageImpl)(registeredPackage instanceof ModulePackageImpl ? registeredPackage : ModulePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(TensorPackage.eNS_URI);
+		TensorPackageImpl theTensorPackage = (TensorPackageImpl)(registeredPackage instanceof TensorPackageImpl ? registeredPackage : TensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DatatypesPackage.eNS_URI);
+		DatatypesPackageImpl theDatatypesPackage = (DatatypesPackageImpl)(registeredPackage instanceof DatatypesPackageImpl ? registeredPackage : DatatypesPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Pooling_layersPackage.eNS_URI);
+		Pooling_layersPackageImpl thePooling_layersPackage = (Pooling_layersPackageImpl)(registeredPackage instanceof Pooling_layersPackageImpl ? registeredPackage : Pooling_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Convolution_layersPackage.eNS_URI);
+		Convolution_layersPackageImpl theConvolution_layersPackage = (Convolution_layersPackageImpl)(registeredPackage instanceof Convolution_layersPackageImpl ? registeredPackage : Convolution_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Padding_layersPackage.eNS_URI);
+		Padding_layersPackageImpl thePadding_layersPackage = (Padding_layersPackageImpl)(registeredPackage instanceof Padding_layersPackageImpl ? registeredPackage : Padding_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NonLinearActivationsPackage.eNS_URI);
+		NonLinearActivationsPackageImpl theNonLinearActivationsPackage = (NonLinearActivationsPackageImpl)(registeredPackage instanceof NonLinearActivationsPackageImpl ? registeredPackage : NonLinearActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftMinMaxActivationsPackage.eNS_URI);
+		SoftMinMaxActivationsPackageImpl theSoftMinMaxActivationsPackage = (SoftMinMaxActivationsPackageImpl)(registeredPackage instanceof SoftMinMaxActivationsPackageImpl ? registeredPackage : SoftMinMaxActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Normalization_layersPackage.eNS_URI);
+		Normalization_layersPackageImpl theNormalization_layersPackage = (Normalization_layersPackageImpl)(registeredPackage instanceof Normalization_layersPackageImpl ? registeredPackage : Normalization_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Recurrent_layersPackage.eNS_URI);
+		Recurrent_layersPackageImpl theRecurrent_layersPackage = (Recurrent_layersPackageImpl)(registeredPackage instanceof Recurrent_layersPackageImpl ? registeredPackage : Recurrent_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Transformer_layersPackage.eNS_URI);
+		Transformer_layersPackageImpl theTransformer_layersPackage = (Transformer_layersPackageImpl)(registeredPackage instanceof Transformer_layersPackageImpl ? registeredPackage : Transformer_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Linear_layersPackage.eNS_URI);
+		Linear_layersPackageImpl theLinear_layersPackage = (Linear_layersPackageImpl)(registeredPackage instanceof Linear_layersPackageImpl ? registeredPackage : Linear_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Dropout_layersPackage.eNS_URI);
+		Dropout_layersPackageImpl theDropout_layersPackage = (Dropout_layersPackageImpl)(registeredPackage instanceof Dropout_layersPackageImpl ? registeredPackage : Dropout_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Sparse_layersPackage.eNS_URI);
+		Sparse_layersPackageImpl theSparse_layersPackage = (Sparse_layersPackageImpl)(registeredPackage instanceof Sparse_layersPackageImpl ? registeredPackage : Sparse_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Distance_functionsPackage.eNS_URI);
+		Distance_functionsPackageImpl theDistance_functionsPackage = (Distance_functionsPackageImpl)(registeredPackage instanceof Distance_functionsPackageImpl ? registeredPackage : Distance_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Loss_functionsPackage.eNS_URI);
+		Loss_functionsPackageImpl theLoss_functionsPackage = (Loss_functionsPackageImpl)(registeredPackage instanceof Loss_functionsPackageImpl ? registeredPackage : Loss_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Vision_layersPackage.eNS_URI);
+		Vision_layersPackageImpl theVision_layersPackage = (Vision_layersPackageImpl)(registeredPackage instanceof Vision_layersPackageImpl ? registeredPackage : Vision_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DataParallel_layersPackage.eNS_URI);
+		DataParallel_layersPackageImpl theDataParallel_layersPackage = (DataParallel_layersPackageImpl)(registeredPackage instanceof DataParallel_layersPackageImpl ? registeredPackage : DataParallel_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_regularizersPackage.eNS_URI);
+		Layer_weight_regularizersPackageImpl theLayer_weight_regularizersPackage = (Layer_weight_regularizersPackageImpl)(registeredPackage instanceof Layer_weight_regularizersPackageImpl ? registeredPackage : Layer_weight_regularizersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_initializersPackage.eNS_URI);
+		Layer_weight_initializersPackageImpl theLayer_weight_initializersPackage = (Layer_weight_initializersPackageImpl)(registeredPackage instanceof Layer_weight_initializersPackageImpl ? registeredPackage : Layer_weight_initializersPackage.eINSTANCE);
+
+		// Create package meta-data objects
+		theLayer_weight_constraintsPackage.createPackageContents();
+		theAIMLPackage.createPackageContents();
+		theModulePackage.createPackageContents();
+		theTensorPackage.createPackageContents();
+		theDatatypesPackage.createPackageContents();
+		thePooling_layersPackage.createPackageContents();
+		theConvolution_layersPackage.createPackageContents();
+		thePadding_layersPackage.createPackageContents();
+		theNonLinearActivationsPackage.createPackageContents();
+		theSoftMinMaxActivationsPackage.createPackageContents();
+		theNormalization_layersPackage.createPackageContents();
+		theRecurrent_layersPackage.createPackageContents();
+		theTransformer_layersPackage.createPackageContents();
+		theLinear_layersPackage.createPackageContents();
+		theDropout_layersPackage.createPackageContents();
+		theSparse_layersPackage.createPackageContents();
+		theDistance_functionsPackage.createPackageContents();
+		theLoss_functionsPackage.createPackageContents();
+		theVision_layersPackage.createPackageContents();
+		theDataParallel_layersPackage.createPackageContents();
+		theLayer_weight_regularizersPackage.createPackageContents();
+		theLayer_weight_initializersPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theLayer_weight_constraintsPackage.initializePackageContents();
+		theAIMLPackage.initializePackageContents();
+		theModulePackage.initializePackageContents();
+		theTensorPackage.initializePackageContents();
+		theDatatypesPackage.initializePackageContents();
+		thePooling_layersPackage.initializePackageContents();
+		theConvolution_layersPackage.initializePackageContents();
+		thePadding_layersPackage.initializePackageContents();
+		theNonLinearActivationsPackage.initializePackageContents();
+		theSoftMinMaxActivationsPackage.initializePackageContents();
+		theNormalization_layersPackage.initializePackageContents();
+		theRecurrent_layersPackage.initializePackageContents();
+		theTransformer_layersPackage.initializePackageContents();
+		theLinear_layersPackage.initializePackageContents();
+		theDropout_layersPackage.initializePackageContents();
+		theSparse_layersPackage.initializePackageContents();
+		theDistance_functionsPackage.initializePackageContents();
+		theLoss_functionsPackage.initializePackageContents();
+		theVision_layersPackage.initializePackageContents();
+		theDataParallel_layersPackage.initializePackageContents();
+		theLayer_weight_regularizersPackage.initializePackageContents();
+		theLayer_weight_initializersPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theLayer_weight_constraintsPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(Layer_weight_constraintsPackage.eNS_URI, theLayer_weight_constraintsPackage);
+		return theLayer_weight_constraintsPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getmin_max_norm() {
+		return min_max_normEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getmin_max_norm_Min_value() {
+		return (EAttribute)min_max_normEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getmin_max_norm_Rate() {
+		return (EAttribute)min_max_normEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getNormWithMaxValue() {
+		return normWithMaxValueEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getNormWithMaxValue_Max_value() {
+		return (EAttribute)normWithMaxValueEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getnorm() {
+		return normEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getnorm_Axis() {
+		return (EAttribute)normEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getmax_norm() {
+		return max_normEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getnon_neg() {
+		return non_negEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getradial_constraint() {
+		return radial_constraintEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getunit_norm() {
+		return unit_normEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getconstraints() {
+		return constraintsEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Layer_weight_constraintsFactory getLayer_weight_constraintsFactory() {
+		return (Layer_weight_constraintsFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		min_max_normEClass = createEClass(MIN_MAX_NORM);
+		createEAttribute(min_max_normEClass, MIN_MAX_NORM__MIN_VALUE);
+		createEAttribute(min_max_normEClass, MIN_MAX_NORM__RATE);
+
+		normWithMaxValueEClass = createEClass(NORM_WITH_MAX_VALUE);
+		createEAttribute(normWithMaxValueEClass, NORM_WITH_MAX_VALUE__MAX_VALUE);
+
+		normEClass = createEClass(NORM);
+		createEAttribute(normEClass, NORM__AXIS);
+
+		max_normEClass = createEClass(MAX_NORM);
+
+		non_negEClass = createEClass(NON_NEG);
+
+		radial_constraintEClass = createEClass(RADIAL_CONSTRAINT);
+
+		unit_normEClass = createEClass(UNIT_NORM);
+
+		constraintsEClass = createEClass(CONSTRAINTS);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		min_max_normEClass.getESuperTypes().add(this.getNormWithMaxValue());
+		normWithMaxValueEClass.getESuperTypes().add(this.getnorm());
+		normEClass.getESuperTypes().add(this.getconstraints());
+		max_normEClass.getESuperTypes().add(this.getNormWithMaxValue());
+		non_negEClass.getESuperTypes().add(this.getconstraints());
+		radial_constraintEClass.getESuperTypes().add(this.getconstraints());
+		unit_normEClass.getESuperTypes().add(this.getnorm());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(min_max_normEClass, min_max_norm.class, "min_max_norm", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getmin_max_norm_Min_value(), theTypesPackage.getReal(), "min_value", null, 1, 1, min_max_norm.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getmin_max_norm_Rate(), theTypesPackage.getReal(), "rate", null, 1, 1, min_max_norm.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(normWithMaxValueEClass, NormWithMaxValue.class, "NormWithMaxValue", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getNormWithMaxValue_Max_value(), theTypesPackage.getReal(), "max_value", null, 1, 1, NormWithMaxValue.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(normEClass, norm.class, "norm", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getnorm_Axis(), theTypesPackage.getInteger(), "axis", null, 1, -1, norm.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(max_normEClass, max_norm.class, "max_norm", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(non_negEClass, non_neg.class, "non_neg", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(radial_constraintEClass, radial_constraint.class, "radial_constraint", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(unit_normEClass, unit_norm.class, "unit_norm", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(constraintsEClass, constraints.class, "constraints", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+	}
+
+} //Layer_weight_constraintsPackageImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/impl/NormWithMaxValueImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/impl/NormWithMaxValueImpl.java
new file mode 100644
index 0000000..1d002f1
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/impl/NormWithMaxValueImpl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.NormWithMaxValue;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Norm With Max Value</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.NormWithMaxValueImpl#getMax_value <em>Max value</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class NormWithMaxValueImpl extends normImpl implements NormWithMaxValue {
+	/**
+	 * The default value of the '{@link #getMax_value() <em>Max value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMax_value()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double MAX_VALUE_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getMax_value() <em>Max value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMax_value()
+	 * @generated
+	 * @ordered
+	 */
+	protected double max_value = MAX_VALUE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected NormWithMaxValueImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Layer_weight_constraintsPackage.Literals.NORM_WITH_MAX_VALUE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getMax_value() {
+		return max_value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setMax_value(double newMax_value) {
+		double oldMax_value = max_value;
+		max_value = newMax_value;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Layer_weight_constraintsPackage.NORM_WITH_MAX_VALUE__MAX_VALUE, oldMax_value, max_value));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Layer_weight_constraintsPackage.NORM_WITH_MAX_VALUE__MAX_VALUE:
+				return getMax_value();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Layer_weight_constraintsPackage.NORM_WITH_MAX_VALUE__MAX_VALUE:
+				setMax_value((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Layer_weight_constraintsPackage.NORM_WITH_MAX_VALUE__MAX_VALUE:
+				setMax_value(MAX_VALUE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Layer_weight_constraintsPackage.NORM_WITH_MAX_VALUE__MAX_VALUE:
+				return max_value != MAX_VALUE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (max_value: "); //$NON-NLS-1$
+		result.append(max_value);
+		result.append(')');
+		return result.toString();
+	}
+
+} //NormWithMaxValueImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/impl/constraintsImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/impl/constraintsImpl.java
new file mode 100644
index 0000000..92e146b
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/impl/constraintsImpl.java
@@ -0,0 +1,48 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.constraints;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>constraints</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public abstract class constraintsImpl extends MinimalEObjectImpl.Container implements constraints {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected constraintsImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Layer_weight_constraintsPackage.Literals.CONSTRAINTS;
+	}
+
+} //constraintsImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/impl/max_normImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/impl/max_normImpl.java
new file mode 100644
index 0000000..d2b4d43
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/impl/max_normImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.max_norm;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>max norm</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class max_normImpl extends NormWithMaxValueImpl implements max_norm {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected max_normImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Layer_weight_constraintsPackage.Literals.MAX_NORM;
+	}
+
+} //max_normImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/impl/min_max_normImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/impl/min_max_normImpl.java
new file mode 100644
index 0000000..d14d552
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/impl/min_max_normImpl.java
@@ -0,0 +1,229 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.min_max_norm;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>min max norm</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.min_max_normImpl#getMin_value <em>Min value</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.min_max_normImpl#getRate <em>Rate</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class min_max_normImpl extends NormWithMaxValueImpl implements min_max_norm {
+	/**
+	 * The default value of the '{@link #getMin_value() <em>Min value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMin_value()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double MIN_VALUE_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getMin_value() <em>Min value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMin_value()
+	 * @generated
+	 * @ordered
+	 */
+	protected double min_value = MIN_VALUE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getRate() <em>Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRate()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double RATE_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getRate() <em>Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRate()
+	 * @generated
+	 * @ordered
+	 */
+	protected double rate = RATE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected min_max_normImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Layer_weight_constraintsPackage.Literals.MIN_MAX_NORM;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getMin_value() {
+		return min_value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setMin_value(double newMin_value) {
+		double oldMin_value = min_value;
+		min_value = newMin_value;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Layer_weight_constraintsPackage.MIN_MAX_NORM__MIN_VALUE, oldMin_value, min_value));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getRate() {
+		return rate;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setRate(double newRate) {
+		double oldRate = rate;
+		rate = newRate;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Layer_weight_constraintsPackage.MIN_MAX_NORM__RATE, oldRate, rate));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Layer_weight_constraintsPackage.MIN_MAX_NORM__MIN_VALUE:
+				return getMin_value();
+			case Layer_weight_constraintsPackage.MIN_MAX_NORM__RATE:
+				return getRate();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Layer_weight_constraintsPackage.MIN_MAX_NORM__MIN_VALUE:
+				setMin_value((Double)newValue);
+				return;
+			case Layer_weight_constraintsPackage.MIN_MAX_NORM__RATE:
+				setRate((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Layer_weight_constraintsPackage.MIN_MAX_NORM__MIN_VALUE:
+				setMin_value(MIN_VALUE_EDEFAULT);
+				return;
+			case Layer_weight_constraintsPackage.MIN_MAX_NORM__RATE:
+				setRate(RATE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Layer_weight_constraintsPackage.MIN_MAX_NORM__MIN_VALUE:
+				return min_value != MIN_VALUE_EDEFAULT;
+			case Layer_weight_constraintsPackage.MIN_MAX_NORM__RATE:
+				return rate != RATE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (min_value: "); //$NON-NLS-1$
+		result.append(min_value);
+		result.append(", rate: "); //$NON-NLS-1$
+		result.append(rate);
+		result.append(')');
+		return result.toString();
+	}
+
+} //min_max_normImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/impl/non_negImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/impl/non_negImpl.java
new file mode 100644
index 0000000..258f976
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/impl/non_negImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.non_neg;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>non neg</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class non_negImpl extends constraintsImpl implements non_neg {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected non_negImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Layer_weight_constraintsPackage.Literals.NON_NEG;
+	}
+
+} //non_negImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/impl/normImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/impl/normImpl.java
new file mode 100644
index 0000000..b449801
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/impl/normImpl.java
@@ -0,0 +1,157 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.norm;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>norm</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.normImpl#getAxis <em>Axis</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class normImpl extends constraintsImpl implements norm {
+	/**
+	 * The cached value of the '{@link #getAxis() <em>Axis</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAxis()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Integer> axis;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected normImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Layer_weight_constraintsPackage.Literals.NORM;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Integer> getAxis() {
+		if (axis == null) {
+			axis = new EDataTypeUniqueEList<Integer>(Integer.class, this, Layer_weight_constraintsPackage.NORM__AXIS);
+		}
+		return axis;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Layer_weight_constraintsPackage.NORM__AXIS:
+				return getAxis();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Layer_weight_constraintsPackage.NORM__AXIS:
+				getAxis().clear();
+				getAxis().addAll((Collection<? extends Integer>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Layer_weight_constraintsPackage.NORM__AXIS:
+				getAxis().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Layer_weight_constraintsPackage.NORM__AXIS:
+				return axis != null && !axis.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (axis: "); //$NON-NLS-1$
+		result.append(axis);
+		result.append(')');
+		return result.toString();
+	}
+
+} //normImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/impl/radial_constraintImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/impl/radial_constraintImpl.java
new file mode 100644
index 0000000..cf2348f
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/impl/radial_constraintImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.radial_constraint;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>radial constraint</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class radial_constraintImpl extends constraintsImpl implements radial_constraint {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected radial_constraintImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Layer_weight_constraintsPackage.Literals.RADIAL_CONSTRAINT;
+	}
+
+} //radial_constraintImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/impl/unit_normImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/impl/unit_normImpl.java
new file mode 100644
index 0000000..4ed8f6f
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/impl/unit_normImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.unit_norm;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>unit norm</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class unit_normImpl extends normImpl implements unit_norm {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected unit_normImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Layer_weight_constraintsPackage.Literals.UNIT_NORM;
+	}
+
+} //unit_normImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/max_norm.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/max_norm.java
new file mode 100644
index 0000000..d59b873
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/max_norm.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>max norm</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage#getmax_norm()
+ * @model
+ * @generated
+ */
+public interface max_norm extends NormWithMaxValue {
+} // max_norm
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/min_max_norm.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/min_max_norm.java
new file mode 100644
index 0000000..8904424
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/min_max_norm.java
@@ -0,0 +1,85 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>min max norm</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.min_max_norm#getMin_value <em>Min value</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.min_max_norm#getRate <em>Rate</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage#getmin_max_norm()
+ * @model
+ * @generated
+ */
+public interface min_max_norm extends NormWithMaxValue {
+	/**
+	 * Returns the value of the '<em><b>Min value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Min value</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Min value</em>' attribute.
+	 * @see #setMin_value(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage#getmin_max_norm_Min_value()
+	 * @model dataType="org.eclipse.uml2.types.Real" required="true" ordered="false"
+	 * @generated
+	 */
+	double getMin_value();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.min_max_norm#getMin_value <em>Min value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Min value</em>' attribute.
+	 * @see #getMin_value()
+	 * @generated
+	 */
+	void setMin_value(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Rate</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Rate</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Rate</em>' attribute.
+	 * @see #setRate(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage#getmin_max_norm_Rate()
+	 * @model dataType="org.eclipse.uml2.types.Real" required="true" ordered="false"
+	 * @generated
+	 */
+	double getRate();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.min_max_norm#getRate <em>Rate</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Rate</em>' attribute.
+	 * @see #getRate()
+	 * @generated
+	 */
+	void setRate(double value);
+
+} // min_max_norm
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/non_neg.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/non_neg.java
new file mode 100644
index 0000000..2da9cbc
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/non_neg.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>non neg</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage#getnon_neg()
+ * @model
+ * @generated
+ */
+public interface non_neg extends constraints {
+} // non_neg
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/norm.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/norm.java
new file mode 100644
index 0000000..2be164c
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/norm.java
@@ -0,0 +1,49 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>norm</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.norm#getAxis <em>Axis</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage#getnorm()
+ * @model abstract="true"
+ * @generated
+ */
+public interface norm extends constraints {
+	/**
+	 * Returns the value of the '<em><b>Axis</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.Integer}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Axis</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Axis</em>' attribute list.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage#getnorm_Axis()
+	 * @model dataType="org.eclipse.uml2.types.Integer" required="true" ordered="false"
+	 * @generated
+	 */
+	EList<Integer> getAxis();
+
+} // norm
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/radial_constraint.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/radial_constraint.java
new file mode 100644
index 0000000..45197c9
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/radial_constraint.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>radial constraint</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage#getradial_constraint()
+ * @model
+ * @generated
+ */
+public interface radial_constraint extends constraints {
+} // radial_constraint
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/unit_norm.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/unit_norm.java
new file mode 100644
index 0000000..3d938a9
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/unit_norm.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>unit norm</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage#getunit_norm()
+ * @model
+ * @generated
+ */
+public interface unit_norm extends norm {
+} // unit_norm
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/util/Layer_weight_constraintsAdapterFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/util/Layer_weight_constraintsAdapterFactory.java
new file mode 100644
index 0000000..5cc9c80
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/util/Layer_weight_constraintsAdapterFactory.java
@@ -0,0 +1,255 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage
+ * @generated
+ */
+public class Layer_weight_constraintsAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static Layer_weight_constraintsPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Layer_weight_constraintsAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = Layer_weight_constraintsPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Layer_weight_constraintsSwitch<Adapter> modelSwitch =
+		new Layer_weight_constraintsSwitch<Adapter>() {
+			@Override
+			public Adapter casemin_max_norm(min_max_norm object) {
+				return createmin_max_normAdapter();
+			}
+			@Override
+			public Adapter caseNormWithMaxValue(NormWithMaxValue object) {
+				return createNormWithMaxValueAdapter();
+			}
+			@Override
+			public Adapter casenorm(norm object) {
+				return createnormAdapter();
+			}
+			@Override
+			public Adapter casemax_norm(max_norm object) {
+				return createmax_normAdapter();
+			}
+			@Override
+			public Adapter casenon_neg(non_neg object) {
+				return createnon_negAdapter();
+			}
+			@Override
+			public Adapter caseradial_constraint(radial_constraint object) {
+				return createradial_constraintAdapter();
+			}
+			@Override
+			public Adapter caseunit_norm(unit_norm object) {
+				return createunit_normAdapter();
+			}
+			@Override
+			public Adapter caseconstraints(constraints object) {
+				return createconstraintsAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.min_max_norm <em>min max norm</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.min_max_norm
+	 * @generated
+	 */
+	public Adapter createmin_max_normAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.NormWithMaxValue <em>Norm With Max Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.NormWithMaxValue
+	 * @generated
+	 */
+	public Adapter createNormWithMaxValueAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.norm <em>norm</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.norm
+	 * @generated
+	 */
+	public Adapter createnormAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.max_norm <em>max norm</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.max_norm
+	 * @generated
+	 */
+	public Adapter createmax_normAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.non_neg <em>non neg</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.non_neg
+	 * @generated
+	 */
+	public Adapter createnon_negAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.radial_constraint <em>radial constraint</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.radial_constraint
+	 * @generated
+	 */
+	public Adapter createradial_constraintAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.unit_norm <em>unit norm</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.unit_norm
+	 * @generated
+	 */
+	public Adapter createunit_normAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.constraints <em>constraints</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.constraints
+	 * @generated
+	 */
+	public Adapter createconstraintsAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //Layer_weight_constraintsAdapterFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/util/Layer_weight_constraintsSwitch.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/util/Layer_weight_constraintsSwitch.java
new file mode 100644
index 0000000..8f11f62
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_constraints/util/Layer_weight_constraintsSwitch.java
@@ -0,0 +1,279 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage
+ * @generated
+ */
+public class Layer_weight_constraintsSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static Layer_weight_constraintsPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Layer_weight_constraintsSwitch() {
+		if (modelPackage == null) {
+			modelPackage = Layer_weight_constraintsPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case Layer_weight_constraintsPackage.MIN_MAX_NORM: {
+				min_max_norm min_max_norm = (min_max_norm)theEObject;
+				T result = casemin_max_norm(min_max_norm);
+				if (result == null) result = caseNormWithMaxValue(min_max_norm);
+				if (result == null) result = casenorm(min_max_norm);
+				if (result == null) result = caseconstraints(min_max_norm);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Layer_weight_constraintsPackage.NORM_WITH_MAX_VALUE: {
+				NormWithMaxValue normWithMaxValue = (NormWithMaxValue)theEObject;
+				T result = caseNormWithMaxValue(normWithMaxValue);
+				if (result == null) result = casenorm(normWithMaxValue);
+				if (result == null) result = caseconstraints(normWithMaxValue);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Layer_weight_constraintsPackage.NORM: {
+				norm norm = (norm)theEObject;
+				T result = casenorm(norm);
+				if (result == null) result = caseconstraints(norm);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Layer_weight_constraintsPackage.MAX_NORM: {
+				max_norm max_norm = (max_norm)theEObject;
+				T result = casemax_norm(max_norm);
+				if (result == null) result = caseNormWithMaxValue(max_norm);
+				if (result == null) result = casenorm(max_norm);
+				if (result == null) result = caseconstraints(max_norm);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Layer_weight_constraintsPackage.NON_NEG: {
+				non_neg non_neg = (non_neg)theEObject;
+				T result = casenon_neg(non_neg);
+				if (result == null) result = caseconstraints(non_neg);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Layer_weight_constraintsPackage.RADIAL_CONSTRAINT: {
+				radial_constraint radial_constraint = (radial_constraint)theEObject;
+				T result = caseradial_constraint(radial_constraint);
+				if (result == null) result = caseconstraints(radial_constraint);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Layer_weight_constraintsPackage.UNIT_NORM: {
+				unit_norm unit_norm = (unit_norm)theEObject;
+				T result = caseunit_norm(unit_norm);
+				if (result == null) result = casenorm(unit_norm);
+				if (result == null) result = caseconstraints(unit_norm);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Layer_weight_constraintsPackage.CONSTRAINTS: {
+				constraints constraints = (constraints)theEObject;
+				T result = caseconstraints(constraints);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>min max norm</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>min max norm</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casemin_max_norm(min_max_norm object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Norm With Max Value</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Norm With Max Value</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseNormWithMaxValue(NormWithMaxValue object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>norm</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>norm</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casenorm(norm object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>max norm</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>max norm</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casemax_norm(max_norm object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>non neg</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>non neg</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casenon_neg(non_neg object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>radial constraint</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>radial constraint</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseradial_constraint(radial_constraint object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>unit norm</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>unit norm</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseunit_norm(unit_norm object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>constraints</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>constraints</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseconstraints(constraints object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //Layer_weight_constraintsSwitch
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/Layer_weight_initializersFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/Layer_weight_initializersFactory.java
new file mode 100644
index 0000000..9271bfd
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/Layer_weight_initializersFactory.java
@@ -0,0 +1,141 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage
+ * @generated
+ */
+public interface Layer_weight_initializersFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	Layer_weight_initializersFactory eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>random normal</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>random normal</em>'.
+	 * @generated
+	 */
+	random_normal createrandom_normal();
+
+	/**
+	 * Returns a new object of class '<em>random uniform</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>random uniform</em>'.
+	 * @generated
+	 */
+	random_uniform createrandom_uniform();
+
+	/**
+	 * Returns a new object of class '<em>truncated normal</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>truncated normal</em>'.
+	 * @generated
+	 */
+	truncated_normal createtruncated_normal();
+
+	/**
+	 * Returns a new object of class '<em>zeros</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>zeros</em>'.
+	 * @generated
+	 */
+	zeros createzeros();
+
+	/**
+	 * Returns a new object of class '<em>ones</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>ones</em>'.
+	 * @generated
+	 */
+	ones createones();
+
+	/**
+	 * Returns a new object of class '<em>glorot normal</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>glorot normal</em>'.
+	 * @generated
+	 */
+	glorot_normal createglorot_normal();
+
+	/**
+	 * Returns a new object of class '<em>glorot uniform</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>glorot uniform</em>'.
+	 * @generated
+	 */
+	glorot_uniform createglorot_uniform();
+
+	/**
+	 * Returns a new object of class '<em>identity</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>identity</em>'.
+	 * @generated
+	 */
+	identity createidentity();
+
+	/**
+	 * Returns a new object of class '<em>orthogonal</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>orthogonal</em>'.
+	 * @generated
+	 */
+	orthogonal createorthogonal();
+
+	/**
+	 * Returns a new object of class '<em>constant</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>constant</em>'.
+	 * @generated
+	 */
+	constant createconstant();
+
+	/**
+	 * Returns a new object of class '<em>variance scaling</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>variance scaling</em>'.
+	 * @generated
+	 */
+	variance_scaling createvariance_scaling();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	Layer_weight_initializersPackage getLayer_weight_initializersPackage();
+
+} //Layer_weight_initializersFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/Layer_weight_initializersPackage.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/Layer_weight_initializersPackage.java
new file mode 100644
index 0000000..ac605cc
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/Layer_weight_initializersPackage.java
@@ -0,0 +1,1171 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface Layer_weight_initializersPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "Layer_weight_initializers"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http:///AIML/Layer_weight_initializers.ecore"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "AIML.Layer_weight_initializers"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	Layer_weight_initializersPackage eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.initializer_with_seedImpl <em>initializer with seed</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.initializer_with_seedImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl#getinitializer_with_seed()
+	 * @generated
+	 */
+	int INITIALIZER_WITH_SEED = 2;
+
+	/**
+	 * The feature id for the '<em><b>Seed</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INITIALIZER_WITH_SEED__SEED = 0;
+
+	/**
+	 * The number of structural features of the '<em>initializer with seed</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INITIALIZER_WITH_SEED_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>initializer with seed</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INITIALIZER_WITH_SEED_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.initializer_with_mean_stddevImpl <em>initializer with mean stddev</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.initializer_with_mean_stddevImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl#getinitializer_with_mean_stddev()
+	 * @generated
+	 */
+	int INITIALIZER_WITH_MEAN_STDDEV = 1;
+
+	/**
+	 * The feature id for the '<em><b>Seed</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INITIALIZER_WITH_MEAN_STDDEV__SEED = INITIALIZER_WITH_SEED__SEED;
+
+	/**
+	 * The feature id for the '<em><b>Mean</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INITIALIZER_WITH_MEAN_STDDEV__MEAN = INITIALIZER_WITH_SEED_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Stddev</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INITIALIZER_WITH_MEAN_STDDEV__STDDEV = INITIALIZER_WITH_SEED_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>initializer with mean stddev</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INITIALIZER_WITH_MEAN_STDDEV_FEATURE_COUNT = INITIALIZER_WITH_SEED_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>initializer with mean stddev</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INITIALIZER_WITH_MEAN_STDDEV_OPERATION_COUNT = INITIALIZER_WITH_SEED_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.random_normalImpl <em>random normal</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.random_normalImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl#getrandom_normal()
+	 * @generated
+	 */
+	int RANDOM_NORMAL = 0;
+
+	/**
+	 * The feature id for the '<em><b>Seed</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RANDOM_NORMAL__SEED = INITIALIZER_WITH_MEAN_STDDEV__SEED;
+
+	/**
+	 * The feature id for the '<em><b>Mean</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RANDOM_NORMAL__MEAN = INITIALIZER_WITH_MEAN_STDDEV__MEAN;
+
+	/**
+	 * The feature id for the '<em><b>Stddev</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RANDOM_NORMAL__STDDEV = INITIALIZER_WITH_MEAN_STDDEV__STDDEV;
+
+	/**
+	 * The number of structural features of the '<em>random normal</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RANDOM_NORMAL_FEATURE_COUNT = INITIALIZER_WITH_MEAN_STDDEV_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>random normal</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RANDOM_NORMAL_OPERATION_COUNT = INITIALIZER_WITH_MEAN_STDDEV_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.random_uniformImpl <em>random uniform</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.random_uniformImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl#getrandom_uniform()
+	 * @generated
+	 */
+	int RANDOM_UNIFORM = 3;
+
+	/**
+	 * The feature id for the '<em><b>Seed</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RANDOM_UNIFORM__SEED = INITIALIZER_WITH_SEED__SEED;
+
+	/**
+	 * The feature id for the '<em><b>Minval</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RANDOM_UNIFORM__MINVAL = INITIALIZER_WITH_SEED_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Maxval</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RANDOM_UNIFORM__MAXVAL = INITIALIZER_WITH_SEED_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>random uniform</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RANDOM_UNIFORM_FEATURE_COUNT = INITIALIZER_WITH_SEED_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>random uniform</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RANDOM_UNIFORM_OPERATION_COUNT = INITIALIZER_WITH_SEED_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.truncated_normalImpl <em>truncated normal</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.truncated_normalImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl#gettruncated_normal()
+	 * @generated
+	 */
+	int TRUNCATED_NORMAL = 4;
+
+	/**
+	 * The feature id for the '<em><b>Seed</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRUNCATED_NORMAL__SEED = INITIALIZER_WITH_MEAN_STDDEV__SEED;
+
+	/**
+	 * The feature id for the '<em><b>Mean</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRUNCATED_NORMAL__MEAN = INITIALIZER_WITH_MEAN_STDDEV__MEAN;
+
+	/**
+	 * The feature id for the '<em><b>Stddev</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRUNCATED_NORMAL__STDDEV = INITIALIZER_WITH_MEAN_STDDEV__STDDEV;
+
+	/**
+	 * The number of structural features of the '<em>truncated normal</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRUNCATED_NORMAL_FEATURE_COUNT = INITIALIZER_WITH_MEAN_STDDEV_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>truncated normal</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRUNCATED_NORMAL_OPERATION_COUNT = INITIALIZER_WITH_MEAN_STDDEV_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.zerosImpl <em>zeros</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.zerosImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl#getzeros()
+	 * @generated
+	 */
+	int ZEROS = 5;
+
+	/**
+	 * The number of structural features of the '<em>zeros</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ZEROS_FEATURE_COUNT = 0;
+
+	/**
+	 * The number of operations of the '<em>zeros</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ZEROS_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.onesImpl <em>ones</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.onesImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl#getones()
+	 * @generated
+	 */
+	int ONES = 6;
+
+	/**
+	 * The number of structural features of the '<em>ones</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ONES_FEATURE_COUNT = 0;
+
+	/**
+	 * The number of operations of the '<em>ones</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ONES_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.glorot_normalImpl <em>glorot normal</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.glorot_normalImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl#getglorot_normal()
+	 * @generated
+	 */
+	int GLOROT_NORMAL = 7;
+
+	/**
+	 * The feature id for the '<em><b>Seed</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GLOROT_NORMAL__SEED = INITIALIZER_WITH_SEED__SEED;
+
+	/**
+	 * The number of structural features of the '<em>glorot normal</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GLOROT_NORMAL_FEATURE_COUNT = INITIALIZER_WITH_SEED_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>glorot normal</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GLOROT_NORMAL_OPERATION_COUNT = INITIALIZER_WITH_SEED_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.glorot_uniformImpl <em>glorot uniform</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.glorot_uniformImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl#getglorot_uniform()
+	 * @generated
+	 */
+	int GLOROT_UNIFORM = 8;
+
+	/**
+	 * The feature id for the '<em><b>Seed</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GLOROT_UNIFORM__SEED = INITIALIZER_WITH_SEED__SEED;
+
+	/**
+	 * The number of structural features of the '<em>glorot uniform</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GLOROT_UNIFORM_FEATURE_COUNT = INITIALIZER_WITH_SEED_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>glorot uniform</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GLOROT_UNIFORM_OPERATION_COUNT = INITIALIZER_WITH_SEED_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.initializer_with_gainImpl <em>initializer with gain</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.initializer_with_gainImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl#getinitializer_with_gain()
+	 * @generated
+	 */
+	int INITIALIZER_WITH_GAIN = 10;
+
+	/**
+	 * The feature id for the '<em><b>Gain</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INITIALIZER_WITH_GAIN__GAIN = 0;
+
+	/**
+	 * The number of structural features of the '<em>initializer with gain</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INITIALIZER_WITH_GAIN_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>initializer with gain</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INITIALIZER_WITH_GAIN_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.identityImpl <em>identity</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.identityImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl#getidentity()
+	 * @generated
+	 */
+	int IDENTITY = 9;
+
+	/**
+	 * The feature id for the '<em><b>Gain</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IDENTITY__GAIN = INITIALIZER_WITH_GAIN__GAIN;
+
+	/**
+	 * The number of structural features of the '<em>identity</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IDENTITY_FEATURE_COUNT = INITIALIZER_WITH_GAIN_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>identity</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IDENTITY_OPERATION_COUNT = INITIALIZER_WITH_GAIN_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.orthogonalImpl <em>orthogonal</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.orthogonalImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl#getorthogonal()
+	 * @generated
+	 */
+	int ORTHOGONAL = 11;
+
+	/**
+	 * The feature id for the '<em><b>Gain</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ORTHOGONAL__GAIN = INITIALIZER_WITH_GAIN__GAIN;
+
+	/**
+	 * The feature id for the '<em><b>Seed</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ORTHOGONAL__SEED = INITIALIZER_WITH_GAIN_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>orthogonal</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ORTHOGONAL_FEATURE_COUNT = INITIALIZER_WITH_GAIN_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>orthogonal</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ORTHOGONAL_OPERATION_COUNT = INITIALIZER_WITH_GAIN_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.constantImpl <em>constant</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.constantImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl#getconstant()
+	 * @generated
+	 */
+	int CONSTANT = 12;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTANT__VALUE = 0;
+
+	/**
+	 * The number of structural features of the '<em>constant</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTANT_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>constant</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTANT_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.variance_scalingImpl <em>variance scaling</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.variance_scalingImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl#getvariance_scaling()
+	 * @generated
+	 */
+	int VARIANCE_SCALING = 13;
+
+	/**
+	 * The feature id for the '<em><b>Seed</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VARIANCE_SCALING__SEED = INITIALIZER_WITH_SEED__SEED;
+
+	/**
+	 * The feature id for the '<em><b>Scale</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VARIANCE_SCALING__SCALE = INITIALIZER_WITH_SEED_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VARIANCE_SCALING__MODE = INITIALIZER_WITH_SEED_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Distribution</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VARIANCE_SCALING__DISTRIBUTION = INITIALIZER_WITH_SEED_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>variance scaling</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VARIANCE_SCALING_FEATURE_COUNT = INITIALIZER_WITH_SEED_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of operations of the '<em>variance scaling</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VARIANCE_SCALING_OPERATION_COUNT = INITIALIZER_WITH_SEED_OPERATION_COUNT + 0;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.random_normal <em>random normal</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>random normal</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.random_normal
+	 * @generated
+	 */
+	EClass getrandom_normal();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_mean_stddev <em>initializer with mean stddev</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>initializer with mean stddev</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_mean_stddev
+	 * @generated
+	 */
+	EClass getinitializer_with_mean_stddev();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_mean_stddev#getMean <em>Mean</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Mean</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_mean_stddev#getMean()
+	 * @see #getinitializer_with_mean_stddev()
+	 * @generated
+	 */
+	EAttribute getinitializer_with_mean_stddev_Mean();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_mean_stddev#getStddev <em>Stddev</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Stddev</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_mean_stddev#getStddev()
+	 * @see #getinitializer_with_mean_stddev()
+	 * @generated
+	 */
+	EAttribute getinitializer_with_mean_stddev_Stddev();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_seed <em>initializer with seed</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>initializer with seed</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_seed
+	 * @generated
+	 */
+	EClass getinitializer_with_seed();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_seed#getSeed <em>Seed</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Seed</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_seed#getSeed()
+	 * @see #getinitializer_with_seed()
+	 * @generated
+	 */
+	EAttribute getinitializer_with_seed_Seed();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.random_uniform <em>random uniform</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>random uniform</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.random_uniform
+	 * @generated
+	 */
+	EClass getrandom_uniform();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.random_uniform#getMinval <em>Minval</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Minval</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.random_uniform#getMinval()
+	 * @see #getrandom_uniform()
+	 * @generated
+	 */
+	EAttribute getrandom_uniform_Minval();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.random_uniform#getMaxval <em>Maxval</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Maxval</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.random_uniform#getMaxval()
+	 * @see #getrandom_uniform()
+	 * @generated
+	 */
+	EAttribute getrandom_uniform_Maxval();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.truncated_normal <em>truncated normal</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>truncated normal</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.truncated_normal
+	 * @generated
+	 */
+	EClass gettruncated_normal();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.zeros <em>zeros</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>zeros</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.zeros
+	 * @generated
+	 */
+	EClass getzeros();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.ones <em>ones</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>ones</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.ones
+	 * @generated
+	 */
+	EClass getones();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.glorot_normal <em>glorot normal</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>glorot normal</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.glorot_normal
+	 * @generated
+	 */
+	EClass getglorot_normal();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.glorot_uniform <em>glorot uniform</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>glorot uniform</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.glorot_uniform
+	 * @generated
+	 */
+	EClass getglorot_uniform();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.identity <em>identity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>identity</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.identity
+	 * @generated
+	 */
+	EClass getidentity();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_gain <em>initializer with gain</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>initializer with gain</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_gain
+	 * @generated
+	 */
+	EClass getinitializer_with_gain();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_gain#getGain <em>Gain</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Gain</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_gain#getGain()
+	 * @see #getinitializer_with_gain()
+	 * @generated
+	 */
+	EAttribute getinitializer_with_gain_Gain();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.orthogonal <em>orthogonal</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>orthogonal</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.orthogonal
+	 * @generated
+	 */
+	EClass getorthogonal();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.constant <em>constant</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>constant</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.constant
+	 * @generated
+	 */
+	EClass getconstant();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.constant#getValue <em>Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Value</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.constant#getValue()
+	 * @see #getconstant()
+	 * @generated
+	 */
+	EAttribute getconstant_Value();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.variance_scaling <em>variance scaling</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>variance scaling</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.variance_scaling
+	 * @generated
+	 */
+	EClass getvariance_scaling();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.variance_scaling#getScale <em>Scale</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Scale</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.variance_scaling#getScale()
+	 * @see #getvariance_scaling()
+	 * @generated
+	 */
+	EAttribute getvariance_scaling_Scale();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.variance_scaling#getMode <em>Mode</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Mode</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.variance_scaling#getMode()
+	 * @see #getvariance_scaling()
+	 * @generated
+	 */
+	EAttribute getvariance_scaling_Mode();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.variance_scaling#getDistribution <em>Distribution</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Distribution</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.variance_scaling#getDistribution()
+	 * @see #getvariance_scaling()
+	 * @generated
+	 */
+	EAttribute getvariance_scaling_Distribution();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	Layer_weight_initializersFactory getLayer_weight_initializersFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.random_normalImpl <em>random normal</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.random_normalImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl#getrandom_normal()
+		 * @generated
+		 */
+		EClass RANDOM_NORMAL = eINSTANCE.getrandom_normal();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.initializer_with_mean_stddevImpl <em>initializer with mean stddev</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.initializer_with_mean_stddevImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl#getinitializer_with_mean_stddev()
+		 * @generated
+		 */
+		EClass INITIALIZER_WITH_MEAN_STDDEV = eINSTANCE.getinitializer_with_mean_stddev();
+
+		/**
+		 * The meta object literal for the '<em><b>Mean</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute INITIALIZER_WITH_MEAN_STDDEV__MEAN = eINSTANCE.getinitializer_with_mean_stddev_Mean();
+
+		/**
+		 * The meta object literal for the '<em><b>Stddev</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute INITIALIZER_WITH_MEAN_STDDEV__STDDEV = eINSTANCE.getinitializer_with_mean_stddev_Stddev();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.initializer_with_seedImpl <em>initializer with seed</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.initializer_with_seedImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl#getinitializer_with_seed()
+		 * @generated
+		 */
+		EClass INITIALIZER_WITH_SEED = eINSTANCE.getinitializer_with_seed();
+
+		/**
+		 * The meta object literal for the '<em><b>Seed</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute INITIALIZER_WITH_SEED__SEED = eINSTANCE.getinitializer_with_seed_Seed();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.random_uniformImpl <em>random uniform</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.random_uniformImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl#getrandom_uniform()
+		 * @generated
+		 */
+		EClass RANDOM_UNIFORM = eINSTANCE.getrandom_uniform();
+
+		/**
+		 * The meta object literal for the '<em><b>Minval</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute RANDOM_UNIFORM__MINVAL = eINSTANCE.getrandom_uniform_Minval();
+
+		/**
+		 * The meta object literal for the '<em><b>Maxval</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute RANDOM_UNIFORM__MAXVAL = eINSTANCE.getrandom_uniform_Maxval();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.truncated_normalImpl <em>truncated normal</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.truncated_normalImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl#gettruncated_normal()
+		 * @generated
+		 */
+		EClass TRUNCATED_NORMAL = eINSTANCE.gettruncated_normal();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.zerosImpl <em>zeros</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.zerosImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl#getzeros()
+		 * @generated
+		 */
+		EClass ZEROS = eINSTANCE.getzeros();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.onesImpl <em>ones</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.onesImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl#getones()
+		 * @generated
+		 */
+		EClass ONES = eINSTANCE.getones();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.glorot_normalImpl <em>glorot normal</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.glorot_normalImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl#getglorot_normal()
+		 * @generated
+		 */
+		EClass GLOROT_NORMAL = eINSTANCE.getglorot_normal();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.glorot_uniformImpl <em>glorot uniform</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.glorot_uniformImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl#getglorot_uniform()
+		 * @generated
+		 */
+		EClass GLOROT_UNIFORM = eINSTANCE.getglorot_uniform();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.identityImpl <em>identity</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.identityImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl#getidentity()
+		 * @generated
+		 */
+		EClass IDENTITY = eINSTANCE.getidentity();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.initializer_with_gainImpl <em>initializer with gain</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.initializer_with_gainImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl#getinitializer_with_gain()
+		 * @generated
+		 */
+		EClass INITIALIZER_WITH_GAIN = eINSTANCE.getinitializer_with_gain();
+
+		/**
+		 * The meta object literal for the '<em><b>Gain</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute INITIALIZER_WITH_GAIN__GAIN = eINSTANCE.getinitializer_with_gain_Gain();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.orthogonalImpl <em>orthogonal</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.orthogonalImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl#getorthogonal()
+		 * @generated
+		 */
+		EClass ORTHOGONAL = eINSTANCE.getorthogonal();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.constantImpl <em>constant</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.constantImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl#getconstant()
+		 * @generated
+		 */
+		EClass CONSTANT = eINSTANCE.getconstant();
+
+		/**
+		 * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CONSTANT__VALUE = eINSTANCE.getconstant_Value();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.variance_scalingImpl <em>variance scaling</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.variance_scalingImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl#getvariance_scaling()
+		 * @generated
+		 */
+		EClass VARIANCE_SCALING = eINSTANCE.getvariance_scaling();
+
+		/**
+		 * The meta object literal for the '<em><b>Scale</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute VARIANCE_SCALING__SCALE = eINSTANCE.getvariance_scaling_Scale();
+
+		/**
+		 * The meta object literal for the '<em><b>Mode</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute VARIANCE_SCALING__MODE = eINSTANCE.getvariance_scaling_Mode();
+
+		/**
+		 * The meta object literal for the '<em><b>Distribution</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute VARIANCE_SCALING__DISTRIBUTION = eINSTANCE.getvariance_scaling_Distribution();
+
+	}
+
+} //Layer_weight_initializersPackage
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/constant.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/constant.java
new file mode 100644
index 0000000..94bd899
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/constant.java
@@ -0,0 +1,59 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>constant</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.constant#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage#getconstant()
+ * @model
+ * @generated
+ */
+public interface constant extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Value</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Value</em>' attribute.
+	 * @see #setValue(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage#getconstant_Value()
+	 * @model dataType="org.eclipse.uml2.types.Real" required="true" ordered="false"
+	 * @generated
+	 */
+	double getValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.constant#getValue <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Value</em>' attribute.
+	 * @see #getValue()
+	 * @generated
+	 */
+	void setValue(double value);
+
+} // constant
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/glorot_normal.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/glorot_normal.java
new file mode 100644
index 0000000..4649319
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/glorot_normal.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>glorot normal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage#getglorot_normal()
+ * @model
+ * @generated
+ */
+public interface glorot_normal extends initializer_with_seed {
+} // glorot_normal
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/glorot_uniform.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/glorot_uniform.java
new file mode 100644
index 0000000..bf7fac4
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/glorot_uniform.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>glorot uniform</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage#getglorot_uniform()
+ * @model
+ * @generated
+ */
+public interface glorot_uniform extends initializer_with_seed {
+} // glorot_uniform
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/identity.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/identity.java
new file mode 100644
index 0000000..0441baa
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/identity.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>identity</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage#getidentity()
+ * @model
+ * @generated
+ */
+public interface identity extends initializer_with_gain {
+} // identity
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/Layer_weight_initializersFactoryImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/Layer_weight_initializersFactoryImpl.java
new file mode 100644
index 0000000..9fb5ecb
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/Layer_weight_initializersFactoryImpl.java
@@ -0,0 +1,226 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class Layer_weight_initializersFactoryImpl extends EFactoryImpl implements Layer_weight_initializersFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static Layer_weight_initializersFactory init() {
+		try {
+			Layer_weight_initializersFactory theLayer_weight_initializersFactory = (Layer_weight_initializersFactory)EPackage.Registry.INSTANCE.getEFactory(Layer_weight_initializersPackage.eNS_URI);
+			if (theLayer_weight_initializersFactory != null) {
+				return theLayer_weight_initializersFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new Layer_weight_initializersFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Layer_weight_initializersFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case Layer_weight_initializersPackage.RANDOM_NORMAL: return createrandom_normal();
+			case Layer_weight_initializersPackage.RANDOM_UNIFORM: return createrandom_uniform();
+			case Layer_weight_initializersPackage.TRUNCATED_NORMAL: return createtruncated_normal();
+			case Layer_weight_initializersPackage.ZEROS: return createzeros();
+			case Layer_weight_initializersPackage.ONES: return createones();
+			case Layer_weight_initializersPackage.GLOROT_NORMAL: return createglorot_normal();
+			case Layer_weight_initializersPackage.GLOROT_UNIFORM: return createglorot_uniform();
+			case Layer_weight_initializersPackage.IDENTITY: return createidentity();
+			case Layer_weight_initializersPackage.ORTHOGONAL: return createorthogonal();
+			case Layer_weight_initializersPackage.CONSTANT: return createconstant();
+			case Layer_weight_initializersPackage.VARIANCE_SCALING: return createvariance_scaling();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public random_normal createrandom_normal() {
+		random_normalImpl random_normal = new random_normalImpl();
+		return random_normal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public random_uniform createrandom_uniform() {
+		random_uniformImpl random_uniform = new random_uniformImpl();
+		return random_uniform;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public truncated_normal createtruncated_normal() {
+		truncated_normalImpl truncated_normal = new truncated_normalImpl();
+		return truncated_normal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public zeros createzeros() {
+		zerosImpl zeros = new zerosImpl();
+		return zeros;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ones createones() {
+		onesImpl ones = new onesImpl();
+		return ones;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public glorot_normal createglorot_normal() {
+		glorot_normalImpl glorot_normal = new glorot_normalImpl();
+		return glorot_normal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public glorot_uniform createglorot_uniform() {
+		glorot_uniformImpl glorot_uniform = new glorot_uniformImpl();
+		return glorot_uniform;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public identity createidentity() {
+		identityImpl identity = new identityImpl();
+		return identity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public orthogonal createorthogonal() {
+		orthogonalImpl orthogonal = new orthogonalImpl();
+		return orthogonal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public constant createconstant() {
+		constantImpl constant = new constantImpl();
+		return constant;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public variance_scaling createvariance_scaling() {
+		variance_scalingImpl variance_scaling = new variance_scalingImpl();
+		return variance_scaling;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Layer_weight_initializersPackage getLayer_weight_initializersPackage() {
+		return (Layer_weight_initializersPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static Layer_weight_initializersPackage getPackage() {
+		return Layer_weight_initializersPackage.eINSTANCE;
+	}
+
+} //Layer_weight_initializersFactoryImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/Layer_weight_initializersPackageImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/Layer_weight_initializersPackageImpl.java
new file mode 100644
index 0000000..683ebb9
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/Layer_weight_initializersPackageImpl.java
@@ -0,0 +1,773 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.AIMLPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersFactory;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.constant;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.glorot_normal;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.glorot_uniform;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.identity;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_gain;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_mean_stddev;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_seed;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.ones;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.orthogonal;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.random_normal;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.random_uniform;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.truncated_normal;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.variance_scaling;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.zeros;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.Layer_weight_regularizersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModulePackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.DatatypesPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl.DatatypesPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.impl.AIMLPackageImpl;
+
+import org.eclipse.uml2.types.TypesPackage;
+
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class Layer_weight_initializersPackageImpl extends EPackageImpl implements Layer_weight_initializersPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass random_normalEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass initializer_with_mean_stddevEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass initializer_with_seedEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass random_uniformEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass truncated_normalEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass zerosEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass onesEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass glorot_normalEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass glorot_uniformEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass identityEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass initializer_with_gainEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass orthogonalEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass constantEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass variance_scalingEClass = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private Layer_weight_initializersPackageImpl() {
+		super(eNS_URI, Layer_weight_initializersFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>This method is used to initialize {@link Layer_weight_initializersPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static Layer_weight_initializersPackage init() {
+		if (isInited) return (Layer_weight_initializersPackage)EPackage.Registry.INSTANCE.getEPackage(Layer_weight_initializersPackage.eNS_URI);
+
+		// Obtain or create and register package
+		Object registeredLayer_weight_initializersPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		Layer_weight_initializersPackageImpl theLayer_weight_initializersPackage = registeredLayer_weight_initializersPackage instanceof Layer_weight_initializersPackageImpl ? (Layer_weight_initializersPackageImpl)registeredLayer_weight_initializersPackage : new Layer_weight_initializersPackageImpl();
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		EcorePackage.eINSTANCE.eClass();
+		TypesPackage.eINSTANCE.eClass();
+		UMLPackage.eINSTANCE.eClass();
+
+		// Obtain or create and register interdependencies
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AIMLPackage.eNS_URI);
+		AIMLPackageImpl theAIMLPackage = (AIMLPackageImpl)(registeredPackage instanceof AIMLPackageImpl ? registeredPackage : AIMLPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		ModulePackageImpl theModulePackage = (ModulePackageImpl)(registeredPackage instanceof ModulePackageImpl ? registeredPackage : ModulePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(TensorPackage.eNS_URI);
+		TensorPackageImpl theTensorPackage = (TensorPackageImpl)(registeredPackage instanceof TensorPackageImpl ? registeredPackage : TensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DatatypesPackage.eNS_URI);
+		DatatypesPackageImpl theDatatypesPackage = (DatatypesPackageImpl)(registeredPackage instanceof DatatypesPackageImpl ? registeredPackage : DatatypesPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Pooling_layersPackage.eNS_URI);
+		Pooling_layersPackageImpl thePooling_layersPackage = (Pooling_layersPackageImpl)(registeredPackage instanceof Pooling_layersPackageImpl ? registeredPackage : Pooling_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Convolution_layersPackage.eNS_URI);
+		Convolution_layersPackageImpl theConvolution_layersPackage = (Convolution_layersPackageImpl)(registeredPackage instanceof Convolution_layersPackageImpl ? registeredPackage : Convolution_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_constraintsPackage.eNS_URI);
+		Layer_weight_constraintsPackageImpl theLayer_weight_constraintsPackage = (Layer_weight_constraintsPackageImpl)(registeredPackage instanceof Layer_weight_constraintsPackageImpl ? registeredPackage : Layer_weight_constraintsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Padding_layersPackage.eNS_URI);
+		Padding_layersPackageImpl thePadding_layersPackage = (Padding_layersPackageImpl)(registeredPackage instanceof Padding_layersPackageImpl ? registeredPackage : Padding_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NonLinearActivationsPackage.eNS_URI);
+		NonLinearActivationsPackageImpl theNonLinearActivationsPackage = (NonLinearActivationsPackageImpl)(registeredPackage instanceof NonLinearActivationsPackageImpl ? registeredPackage : NonLinearActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftMinMaxActivationsPackage.eNS_URI);
+		SoftMinMaxActivationsPackageImpl theSoftMinMaxActivationsPackage = (SoftMinMaxActivationsPackageImpl)(registeredPackage instanceof SoftMinMaxActivationsPackageImpl ? registeredPackage : SoftMinMaxActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Normalization_layersPackage.eNS_URI);
+		Normalization_layersPackageImpl theNormalization_layersPackage = (Normalization_layersPackageImpl)(registeredPackage instanceof Normalization_layersPackageImpl ? registeredPackage : Normalization_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Recurrent_layersPackage.eNS_URI);
+		Recurrent_layersPackageImpl theRecurrent_layersPackage = (Recurrent_layersPackageImpl)(registeredPackage instanceof Recurrent_layersPackageImpl ? registeredPackage : Recurrent_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Transformer_layersPackage.eNS_URI);
+		Transformer_layersPackageImpl theTransformer_layersPackage = (Transformer_layersPackageImpl)(registeredPackage instanceof Transformer_layersPackageImpl ? registeredPackage : Transformer_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Linear_layersPackage.eNS_URI);
+		Linear_layersPackageImpl theLinear_layersPackage = (Linear_layersPackageImpl)(registeredPackage instanceof Linear_layersPackageImpl ? registeredPackage : Linear_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Dropout_layersPackage.eNS_URI);
+		Dropout_layersPackageImpl theDropout_layersPackage = (Dropout_layersPackageImpl)(registeredPackage instanceof Dropout_layersPackageImpl ? registeredPackage : Dropout_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Sparse_layersPackage.eNS_URI);
+		Sparse_layersPackageImpl theSparse_layersPackage = (Sparse_layersPackageImpl)(registeredPackage instanceof Sparse_layersPackageImpl ? registeredPackage : Sparse_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Distance_functionsPackage.eNS_URI);
+		Distance_functionsPackageImpl theDistance_functionsPackage = (Distance_functionsPackageImpl)(registeredPackage instanceof Distance_functionsPackageImpl ? registeredPackage : Distance_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Loss_functionsPackage.eNS_URI);
+		Loss_functionsPackageImpl theLoss_functionsPackage = (Loss_functionsPackageImpl)(registeredPackage instanceof Loss_functionsPackageImpl ? registeredPackage : Loss_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Vision_layersPackage.eNS_URI);
+		Vision_layersPackageImpl theVision_layersPackage = (Vision_layersPackageImpl)(registeredPackage instanceof Vision_layersPackageImpl ? registeredPackage : Vision_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DataParallel_layersPackage.eNS_URI);
+		DataParallel_layersPackageImpl theDataParallel_layersPackage = (DataParallel_layersPackageImpl)(registeredPackage instanceof DataParallel_layersPackageImpl ? registeredPackage : DataParallel_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_regularizersPackage.eNS_URI);
+		Layer_weight_regularizersPackageImpl theLayer_weight_regularizersPackage = (Layer_weight_regularizersPackageImpl)(registeredPackage instanceof Layer_weight_regularizersPackageImpl ? registeredPackage : Layer_weight_regularizersPackage.eINSTANCE);
+
+		// Create package meta-data objects
+		theLayer_weight_initializersPackage.createPackageContents();
+		theAIMLPackage.createPackageContents();
+		theModulePackage.createPackageContents();
+		theTensorPackage.createPackageContents();
+		theDatatypesPackage.createPackageContents();
+		thePooling_layersPackage.createPackageContents();
+		theConvolution_layersPackage.createPackageContents();
+		theLayer_weight_constraintsPackage.createPackageContents();
+		thePadding_layersPackage.createPackageContents();
+		theNonLinearActivationsPackage.createPackageContents();
+		theSoftMinMaxActivationsPackage.createPackageContents();
+		theNormalization_layersPackage.createPackageContents();
+		theRecurrent_layersPackage.createPackageContents();
+		theTransformer_layersPackage.createPackageContents();
+		theLinear_layersPackage.createPackageContents();
+		theDropout_layersPackage.createPackageContents();
+		theSparse_layersPackage.createPackageContents();
+		theDistance_functionsPackage.createPackageContents();
+		theLoss_functionsPackage.createPackageContents();
+		theVision_layersPackage.createPackageContents();
+		theDataParallel_layersPackage.createPackageContents();
+		theLayer_weight_regularizersPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theLayer_weight_initializersPackage.initializePackageContents();
+		theAIMLPackage.initializePackageContents();
+		theModulePackage.initializePackageContents();
+		theTensorPackage.initializePackageContents();
+		theDatatypesPackage.initializePackageContents();
+		thePooling_layersPackage.initializePackageContents();
+		theConvolution_layersPackage.initializePackageContents();
+		theLayer_weight_constraintsPackage.initializePackageContents();
+		thePadding_layersPackage.initializePackageContents();
+		theNonLinearActivationsPackage.initializePackageContents();
+		theSoftMinMaxActivationsPackage.initializePackageContents();
+		theNormalization_layersPackage.initializePackageContents();
+		theRecurrent_layersPackage.initializePackageContents();
+		theTransformer_layersPackage.initializePackageContents();
+		theLinear_layersPackage.initializePackageContents();
+		theDropout_layersPackage.initializePackageContents();
+		theSparse_layersPackage.initializePackageContents();
+		theDistance_functionsPackage.initializePackageContents();
+		theLoss_functionsPackage.initializePackageContents();
+		theVision_layersPackage.initializePackageContents();
+		theDataParallel_layersPackage.initializePackageContents();
+		theLayer_weight_regularizersPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theLayer_weight_initializersPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(Layer_weight_initializersPackage.eNS_URI, theLayer_weight_initializersPackage);
+		return theLayer_weight_initializersPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getrandom_normal() {
+		return random_normalEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getinitializer_with_mean_stddev() {
+		return initializer_with_mean_stddevEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getinitializer_with_mean_stddev_Mean() {
+		return (EAttribute)initializer_with_mean_stddevEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getinitializer_with_mean_stddev_Stddev() {
+		return (EAttribute)initializer_with_mean_stddevEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getinitializer_with_seed() {
+		return initializer_with_seedEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getinitializer_with_seed_Seed() {
+		return (EAttribute)initializer_with_seedEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getrandom_uniform() {
+		return random_uniformEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getrandom_uniform_Minval() {
+		return (EAttribute)random_uniformEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getrandom_uniform_Maxval() {
+		return (EAttribute)random_uniformEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass gettruncated_normal() {
+		return truncated_normalEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getzeros() {
+		return zerosEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getones() {
+		return onesEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getglorot_normal() {
+		return glorot_normalEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getglorot_uniform() {
+		return glorot_uniformEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getidentity() {
+		return identityEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getinitializer_with_gain() {
+		return initializer_with_gainEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getinitializer_with_gain_Gain() {
+		return (EAttribute)initializer_with_gainEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getorthogonal() {
+		return orthogonalEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getconstant() {
+		return constantEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getconstant_Value() {
+		return (EAttribute)constantEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getvariance_scaling() {
+		return variance_scalingEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getvariance_scaling_Scale() {
+		return (EAttribute)variance_scalingEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getvariance_scaling_Mode() {
+		return (EAttribute)variance_scalingEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getvariance_scaling_Distribution() {
+		return (EAttribute)variance_scalingEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Layer_weight_initializersFactory getLayer_weight_initializersFactory() {
+		return (Layer_weight_initializersFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		random_normalEClass = createEClass(RANDOM_NORMAL);
+
+		initializer_with_mean_stddevEClass = createEClass(INITIALIZER_WITH_MEAN_STDDEV);
+		createEAttribute(initializer_with_mean_stddevEClass, INITIALIZER_WITH_MEAN_STDDEV__MEAN);
+		createEAttribute(initializer_with_mean_stddevEClass, INITIALIZER_WITH_MEAN_STDDEV__STDDEV);
+
+		initializer_with_seedEClass = createEClass(INITIALIZER_WITH_SEED);
+		createEAttribute(initializer_with_seedEClass, INITIALIZER_WITH_SEED__SEED);
+
+		random_uniformEClass = createEClass(RANDOM_UNIFORM);
+		createEAttribute(random_uniformEClass, RANDOM_UNIFORM__MINVAL);
+		createEAttribute(random_uniformEClass, RANDOM_UNIFORM__MAXVAL);
+
+		truncated_normalEClass = createEClass(TRUNCATED_NORMAL);
+
+		zerosEClass = createEClass(ZEROS);
+
+		onesEClass = createEClass(ONES);
+
+		glorot_normalEClass = createEClass(GLOROT_NORMAL);
+
+		glorot_uniformEClass = createEClass(GLOROT_UNIFORM);
+
+		identityEClass = createEClass(IDENTITY);
+
+		initializer_with_gainEClass = createEClass(INITIALIZER_WITH_GAIN);
+		createEAttribute(initializer_with_gainEClass, INITIALIZER_WITH_GAIN__GAIN);
+
+		orthogonalEClass = createEClass(ORTHOGONAL);
+
+		constantEClass = createEClass(CONSTANT);
+		createEAttribute(constantEClass, CONSTANT__VALUE);
+
+		variance_scalingEClass = createEClass(VARIANCE_SCALING);
+		createEAttribute(variance_scalingEClass, VARIANCE_SCALING__SCALE);
+		createEAttribute(variance_scalingEClass, VARIANCE_SCALING__MODE);
+		createEAttribute(variance_scalingEClass, VARIANCE_SCALING__DISTRIBUTION);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		random_normalEClass.getESuperTypes().add(this.getinitializer_with_mean_stddev());
+		initializer_with_mean_stddevEClass.getESuperTypes().add(this.getinitializer_with_seed());
+		random_uniformEClass.getESuperTypes().add(this.getinitializer_with_seed());
+		truncated_normalEClass.getESuperTypes().add(this.getinitializer_with_mean_stddev());
+		glorot_normalEClass.getESuperTypes().add(this.getinitializer_with_seed());
+		glorot_uniformEClass.getESuperTypes().add(this.getinitializer_with_seed());
+		identityEClass.getESuperTypes().add(this.getinitializer_with_gain());
+		orthogonalEClass.getESuperTypes().add(this.getinitializer_with_gain());
+		orthogonalEClass.getESuperTypes().add(this.getinitializer_with_seed());
+		variance_scalingEClass.getESuperTypes().add(this.getinitializer_with_seed());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(random_normalEClass, random_normal.class, "random_normal", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(initializer_with_mean_stddevEClass, initializer_with_mean_stddev.class, "initializer_with_mean_stddev", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getinitializer_with_mean_stddev_Mean(), theTypesPackage.getReal(), "mean", null, 1, 1, initializer_with_mean_stddev.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getinitializer_with_mean_stddev_Stddev(), theTypesPackage.getReal(), "stddev", null, 1, 1, initializer_with_mean_stddev.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(initializer_with_seedEClass, initializer_with_seed.class, "initializer_with_seed", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getinitializer_with_seed_Seed(), theTypesPackage.getInteger(), "seed", null, 1, 1, initializer_with_seed.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(random_uniformEClass, random_uniform.class, "random_uniform", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getrandom_uniform_Minval(), theTypesPackage.getReal(), "minval", null, 1, 1, random_uniform.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getrandom_uniform_Maxval(), theTypesPackage.getReal(), "maxval", null, 1, 1, random_uniform.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(truncated_normalEClass, truncated_normal.class, "truncated_normal", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(zerosEClass, zeros.class, "zeros", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(onesEClass, ones.class, "ones", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(glorot_normalEClass, glorot_normal.class, "glorot_normal", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(glorot_uniformEClass, glorot_uniform.class, "glorot_uniform", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(identityEClass, identity.class, "identity", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(initializer_with_gainEClass, initializer_with_gain.class, "initializer_with_gain", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getinitializer_with_gain_Gain(), theTypesPackage.getReal(), "gain", null, 1, 1, initializer_with_gain.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(orthogonalEClass, orthogonal.class, "orthogonal", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(constantEClass, constant.class, "constant", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getconstant_Value(), theTypesPackage.getReal(), "value", null, 1, 1, constant.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(variance_scalingEClass, variance_scaling.class, "variance_scaling", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getvariance_scaling_Scale(), theTypesPackage.getReal(), "scale", null, 1, 1, variance_scaling.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getvariance_scaling_Mode(), theTypesPackage.getString(), "mode", null, 1, 1, variance_scaling.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getvariance_scaling_Distribution(), theTypesPackage.getString(), "distribution", null, 1, 1, variance_scaling.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+	}
+
+} //Layer_weight_initializersPackageImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/constantImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/constantImpl.java
new file mode 100644
index 0000000..052421f
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/constantImpl.java
@@ -0,0 +1,174 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.constant;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>constant</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.constantImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class constantImpl extends MinimalEObjectImpl.Container implements constant {
+	/**
+	 * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double VALUE_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected double value = VALUE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected constantImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Layer_weight_initializersPackage.Literals.CONSTANT;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setValue(double newValue) {
+		double oldValue = value;
+		value = newValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Layer_weight_initializersPackage.CONSTANT__VALUE, oldValue, value));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Layer_weight_initializersPackage.CONSTANT__VALUE:
+				return getValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Layer_weight_initializersPackage.CONSTANT__VALUE:
+				setValue((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Layer_weight_initializersPackage.CONSTANT__VALUE:
+				setValue(VALUE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Layer_weight_initializersPackage.CONSTANT__VALUE:
+				return value != VALUE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (value: "); //$NON-NLS-1$
+		result.append(value);
+		result.append(')');
+		return result.toString();
+	}
+
+} //constantImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/glorot_normalImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/glorot_normalImpl.java
new file mode 100644
index 0000000..d2cf3f7
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/glorot_normalImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.glorot_normal;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>glorot normal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class glorot_normalImpl extends initializer_with_seedImpl implements glorot_normal {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected glorot_normalImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Layer_weight_initializersPackage.Literals.GLOROT_NORMAL;
+	}
+
+} //glorot_normalImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/glorot_uniformImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/glorot_uniformImpl.java
new file mode 100644
index 0000000..70b7f23
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/glorot_uniformImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.glorot_uniform;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>glorot uniform</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class glorot_uniformImpl extends initializer_with_seedImpl implements glorot_uniform {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected glorot_uniformImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Layer_weight_initializersPackage.Literals.GLOROT_UNIFORM;
+	}
+
+} //glorot_uniformImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/identityImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/identityImpl.java
new file mode 100644
index 0000000..cc18810
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/identityImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.identity;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>identity</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class identityImpl extends initializer_with_gainImpl implements identity {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected identityImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Layer_weight_initializersPackage.Literals.IDENTITY;
+	}
+
+} //identityImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/initializer_with_gainImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/initializer_with_gainImpl.java
new file mode 100644
index 0000000..c36ef90
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/initializer_with_gainImpl.java
@@ -0,0 +1,174 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_gain;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>initializer with gain</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.initializer_with_gainImpl#getGain <em>Gain</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class initializer_with_gainImpl extends MinimalEObjectImpl.Container implements initializer_with_gain {
+	/**
+	 * The default value of the '{@link #getGain() <em>Gain</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGain()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double GAIN_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getGain() <em>Gain</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getGain()
+	 * @generated
+	 * @ordered
+	 */
+	protected double gain = GAIN_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected initializer_with_gainImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Layer_weight_initializersPackage.Literals.INITIALIZER_WITH_GAIN;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getGain() {
+		return gain;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setGain(double newGain) {
+		double oldGain = gain;
+		gain = newGain;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Layer_weight_initializersPackage.INITIALIZER_WITH_GAIN__GAIN, oldGain, gain));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Layer_weight_initializersPackage.INITIALIZER_WITH_GAIN__GAIN:
+				return getGain();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Layer_weight_initializersPackage.INITIALIZER_WITH_GAIN__GAIN:
+				setGain((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Layer_weight_initializersPackage.INITIALIZER_WITH_GAIN__GAIN:
+				setGain(GAIN_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Layer_weight_initializersPackage.INITIALIZER_WITH_GAIN__GAIN:
+				return gain != GAIN_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (gain: "); //$NON-NLS-1$
+		result.append(gain);
+		result.append(')');
+		return result.toString();
+	}
+
+} //initializer_with_gainImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/initializer_with_mean_stddevImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/initializer_with_mean_stddevImpl.java
new file mode 100644
index 0000000..315f9df
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/initializer_with_mean_stddevImpl.java
@@ -0,0 +1,229 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_mean_stddev;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>initializer with mean stddev</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.initializer_with_mean_stddevImpl#getMean <em>Mean</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.initializer_with_mean_stddevImpl#getStddev <em>Stddev</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class initializer_with_mean_stddevImpl extends initializer_with_seedImpl implements initializer_with_mean_stddev {
+	/**
+	 * The default value of the '{@link #getMean() <em>Mean</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMean()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double MEAN_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getMean() <em>Mean</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMean()
+	 * @generated
+	 * @ordered
+	 */
+	protected double mean = MEAN_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getStddev() <em>Stddev</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getStddev()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double STDDEV_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getStddev() <em>Stddev</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getStddev()
+	 * @generated
+	 * @ordered
+	 */
+	protected double stddev = STDDEV_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected initializer_with_mean_stddevImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Layer_weight_initializersPackage.Literals.INITIALIZER_WITH_MEAN_STDDEV;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getMean() {
+		return mean;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setMean(double newMean) {
+		double oldMean = mean;
+		mean = newMean;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Layer_weight_initializersPackage.INITIALIZER_WITH_MEAN_STDDEV__MEAN, oldMean, mean));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getStddev() {
+		return stddev;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setStddev(double newStddev) {
+		double oldStddev = stddev;
+		stddev = newStddev;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Layer_weight_initializersPackage.INITIALIZER_WITH_MEAN_STDDEV__STDDEV, oldStddev, stddev));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Layer_weight_initializersPackage.INITIALIZER_WITH_MEAN_STDDEV__MEAN:
+				return getMean();
+			case Layer_weight_initializersPackage.INITIALIZER_WITH_MEAN_STDDEV__STDDEV:
+				return getStddev();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Layer_weight_initializersPackage.INITIALIZER_WITH_MEAN_STDDEV__MEAN:
+				setMean((Double)newValue);
+				return;
+			case Layer_weight_initializersPackage.INITIALIZER_WITH_MEAN_STDDEV__STDDEV:
+				setStddev((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Layer_weight_initializersPackage.INITIALIZER_WITH_MEAN_STDDEV__MEAN:
+				setMean(MEAN_EDEFAULT);
+				return;
+			case Layer_weight_initializersPackage.INITIALIZER_WITH_MEAN_STDDEV__STDDEV:
+				setStddev(STDDEV_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Layer_weight_initializersPackage.INITIALIZER_WITH_MEAN_STDDEV__MEAN:
+				return mean != MEAN_EDEFAULT;
+			case Layer_weight_initializersPackage.INITIALIZER_WITH_MEAN_STDDEV__STDDEV:
+				return stddev != STDDEV_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (mean: "); //$NON-NLS-1$
+		result.append(mean);
+		result.append(", stddev: "); //$NON-NLS-1$
+		result.append(stddev);
+		result.append(')');
+		return result.toString();
+	}
+
+} //initializer_with_mean_stddevImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/initializer_with_seedImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/initializer_with_seedImpl.java
new file mode 100644
index 0000000..3654375
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/initializer_with_seedImpl.java
@@ -0,0 +1,174 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_seed;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>initializer with seed</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.initializer_with_seedImpl#getSeed <em>Seed</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class initializer_with_seedImpl extends MinimalEObjectImpl.Container implements initializer_with_seed {
+	/**
+	 * The default value of the '{@link #getSeed() <em>Seed</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeed()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int SEED_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getSeed() <em>Seed</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeed()
+	 * @generated
+	 * @ordered
+	 */
+	protected int seed = SEED_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected initializer_with_seedImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Layer_weight_initializersPackage.Literals.INITIALIZER_WITH_SEED;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getSeed() {
+		return seed;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setSeed(int newSeed) {
+		int oldSeed = seed;
+		seed = newSeed;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Layer_weight_initializersPackage.INITIALIZER_WITH_SEED__SEED, oldSeed, seed));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Layer_weight_initializersPackage.INITIALIZER_WITH_SEED__SEED:
+				return getSeed();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Layer_weight_initializersPackage.INITIALIZER_WITH_SEED__SEED:
+				setSeed((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Layer_weight_initializersPackage.INITIALIZER_WITH_SEED__SEED:
+				setSeed(SEED_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Layer_weight_initializersPackage.INITIALIZER_WITH_SEED__SEED:
+				return seed != SEED_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (seed: "); //$NON-NLS-1$
+		result.append(seed);
+		result.append(')');
+		return result.toString();
+	}
+
+} //initializer_with_seedImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/onesImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/onesImpl.java
new file mode 100644
index 0000000..c957c65
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/onesImpl.java
@@ -0,0 +1,48 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.ones;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>ones</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class onesImpl extends MinimalEObjectImpl.Container implements ones {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected onesImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Layer_weight_initializersPackage.Literals.ONES;
+	}
+
+} //onesImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/orthogonalImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/orthogonalImpl.java
new file mode 100644
index 0000000..87bd616
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/orthogonalImpl.java
@@ -0,0 +1,206 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_seed;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.orthogonal;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>orthogonal</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.orthogonalImpl#getSeed <em>Seed</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class orthogonalImpl extends initializer_with_gainImpl implements orthogonal {
+	/**
+	 * The default value of the '{@link #getSeed() <em>Seed</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeed()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int SEED_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getSeed() <em>Seed</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSeed()
+	 * @generated
+	 * @ordered
+	 */
+	protected int seed = SEED_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected orthogonalImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Layer_weight_initializersPackage.Literals.ORTHOGONAL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getSeed() {
+		return seed;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setSeed(int newSeed) {
+		int oldSeed = seed;
+		seed = newSeed;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Layer_weight_initializersPackage.ORTHOGONAL__SEED, oldSeed, seed));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Layer_weight_initializersPackage.ORTHOGONAL__SEED:
+				return getSeed();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Layer_weight_initializersPackage.ORTHOGONAL__SEED:
+				setSeed((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Layer_weight_initializersPackage.ORTHOGONAL__SEED:
+				setSeed(SEED_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Layer_weight_initializersPackage.ORTHOGONAL__SEED:
+				return seed != SEED_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == initializer_with_seed.class) {
+			switch (derivedFeatureID) {
+				case Layer_weight_initializersPackage.ORTHOGONAL__SEED: return Layer_weight_initializersPackage.INITIALIZER_WITH_SEED__SEED;
+				default: return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == initializer_with_seed.class) {
+			switch (baseFeatureID) {
+				case Layer_weight_initializersPackage.INITIALIZER_WITH_SEED__SEED: return Layer_weight_initializersPackage.ORTHOGONAL__SEED;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (seed: "); //$NON-NLS-1$
+		result.append(seed);
+		result.append(')');
+		return result.toString();
+	}
+
+} //orthogonalImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/random_normalImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/random_normalImpl.java
new file mode 100644
index 0000000..cac151a
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/random_normalImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.random_normal;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>random normal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class random_normalImpl extends initializer_with_mean_stddevImpl implements random_normal {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected random_normalImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Layer_weight_initializersPackage.Literals.RANDOM_NORMAL;
+	}
+
+} //random_normalImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/random_uniformImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/random_uniformImpl.java
new file mode 100644
index 0000000..c7ab8f0
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/random_uniformImpl.java
@@ -0,0 +1,229 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.random_uniform;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>random uniform</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.random_uniformImpl#getMinval <em>Minval</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.random_uniformImpl#getMaxval <em>Maxval</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class random_uniformImpl extends initializer_with_seedImpl implements random_uniform {
+	/**
+	 * The default value of the '{@link #getMinval() <em>Minval</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMinval()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double MINVAL_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getMinval() <em>Minval</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMinval()
+	 * @generated
+	 * @ordered
+	 */
+	protected double minval = MINVAL_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMaxval() <em>Maxval</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMaxval()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double MAXVAL_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getMaxval() <em>Maxval</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMaxval()
+	 * @generated
+	 * @ordered
+	 */
+	protected double maxval = MAXVAL_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected random_uniformImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Layer_weight_initializersPackage.Literals.RANDOM_UNIFORM;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getMinval() {
+		return minval;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setMinval(double newMinval) {
+		double oldMinval = minval;
+		minval = newMinval;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Layer_weight_initializersPackage.RANDOM_UNIFORM__MINVAL, oldMinval, minval));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getMaxval() {
+		return maxval;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setMaxval(double newMaxval) {
+		double oldMaxval = maxval;
+		maxval = newMaxval;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Layer_weight_initializersPackage.RANDOM_UNIFORM__MAXVAL, oldMaxval, maxval));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Layer_weight_initializersPackage.RANDOM_UNIFORM__MINVAL:
+				return getMinval();
+			case Layer_weight_initializersPackage.RANDOM_UNIFORM__MAXVAL:
+				return getMaxval();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Layer_weight_initializersPackage.RANDOM_UNIFORM__MINVAL:
+				setMinval((Double)newValue);
+				return;
+			case Layer_weight_initializersPackage.RANDOM_UNIFORM__MAXVAL:
+				setMaxval((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Layer_weight_initializersPackage.RANDOM_UNIFORM__MINVAL:
+				setMinval(MINVAL_EDEFAULT);
+				return;
+			case Layer_weight_initializersPackage.RANDOM_UNIFORM__MAXVAL:
+				setMaxval(MAXVAL_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Layer_weight_initializersPackage.RANDOM_UNIFORM__MINVAL:
+				return minval != MINVAL_EDEFAULT;
+			case Layer_weight_initializersPackage.RANDOM_UNIFORM__MAXVAL:
+				return maxval != MAXVAL_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (minval: "); //$NON-NLS-1$
+		result.append(minval);
+		result.append(", maxval: "); //$NON-NLS-1$
+		result.append(maxval);
+		result.append(')');
+		return result.toString();
+	}
+
+} //random_uniformImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/truncated_normalImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/truncated_normalImpl.java
new file mode 100644
index 0000000..ff9953c
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/truncated_normalImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.truncated_normal;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>truncated normal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class truncated_normalImpl extends initializer_with_mean_stddevImpl implements truncated_normal {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected truncated_normalImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Layer_weight_initializersPackage.Literals.TRUNCATED_NORMAL;
+	}
+
+} //truncated_normalImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/variance_scalingImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/variance_scalingImpl.java
new file mode 100644
index 0000000..cceaa7a
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/variance_scalingImpl.java
@@ -0,0 +1,285 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.variance_scaling;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>variance scaling</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.variance_scalingImpl#getScale <em>Scale</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.variance_scalingImpl#getMode <em>Mode</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.variance_scalingImpl#getDistribution <em>Distribution</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class variance_scalingImpl extends initializer_with_seedImpl implements variance_scaling {
+	/**
+	 * The default value of the '{@link #getScale() <em>Scale</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getScale()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double SCALE_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getScale() <em>Scale</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getScale()
+	 * @generated
+	 * @ordered
+	 */
+	protected double scale = SCALE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMode() <em>Mode</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMode()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MODE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMode() <em>Mode</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMode()
+	 * @generated
+	 * @ordered
+	 */
+	protected String mode = MODE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getDistribution() <em>Distribution</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDistribution()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String DISTRIBUTION_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getDistribution() <em>Distribution</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDistribution()
+	 * @generated
+	 * @ordered
+	 */
+	protected String distribution = DISTRIBUTION_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected variance_scalingImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Layer_weight_initializersPackage.Literals.VARIANCE_SCALING;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getScale() {
+		return scale;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setScale(double newScale) {
+		double oldScale = scale;
+		scale = newScale;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Layer_weight_initializersPackage.VARIANCE_SCALING__SCALE, oldScale, scale));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getMode() {
+		return mode;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setMode(String newMode) {
+		String oldMode = mode;
+		mode = newMode;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Layer_weight_initializersPackage.VARIANCE_SCALING__MODE, oldMode, mode));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getDistribution() {
+		return distribution;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDistribution(String newDistribution) {
+		String oldDistribution = distribution;
+		distribution = newDistribution;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Layer_weight_initializersPackage.VARIANCE_SCALING__DISTRIBUTION, oldDistribution, distribution));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Layer_weight_initializersPackage.VARIANCE_SCALING__SCALE:
+				return getScale();
+			case Layer_weight_initializersPackage.VARIANCE_SCALING__MODE:
+				return getMode();
+			case Layer_weight_initializersPackage.VARIANCE_SCALING__DISTRIBUTION:
+				return getDistribution();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Layer_weight_initializersPackage.VARIANCE_SCALING__SCALE:
+				setScale((Double)newValue);
+				return;
+			case Layer_weight_initializersPackage.VARIANCE_SCALING__MODE:
+				setMode((String)newValue);
+				return;
+			case Layer_weight_initializersPackage.VARIANCE_SCALING__DISTRIBUTION:
+				setDistribution((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Layer_weight_initializersPackage.VARIANCE_SCALING__SCALE:
+				setScale(SCALE_EDEFAULT);
+				return;
+			case Layer_weight_initializersPackage.VARIANCE_SCALING__MODE:
+				setMode(MODE_EDEFAULT);
+				return;
+			case Layer_weight_initializersPackage.VARIANCE_SCALING__DISTRIBUTION:
+				setDistribution(DISTRIBUTION_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Layer_weight_initializersPackage.VARIANCE_SCALING__SCALE:
+				return scale != SCALE_EDEFAULT;
+			case Layer_weight_initializersPackage.VARIANCE_SCALING__MODE:
+				return MODE_EDEFAULT == null ? mode != null : !MODE_EDEFAULT.equals(mode);
+			case Layer_weight_initializersPackage.VARIANCE_SCALING__DISTRIBUTION:
+				return DISTRIBUTION_EDEFAULT == null ? distribution != null : !DISTRIBUTION_EDEFAULT.equals(distribution);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (scale: "); //$NON-NLS-1$
+		result.append(scale);
+		result.append(", mode: "); //$NON-NLS-1$
+		result.append(mode);
+		result.append(", distribution: "); //$NON-NLS-1$
+		result.append(distribution);
+		result.append(')');
+		return result.toString();
+	}
+
+} //variance_scalingImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/zerosImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/zerosImpl.java
new file mode 100644
index 0000000..1231fa8
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/impl/zerosImpl.java
@@ -0,0 +1,48 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.zeros;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>zeros</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class zerosImpl extends MinimalEObjectImpl.Container implements zeros {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected zerosImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Layer_weight_initializersPackage.Literals.ZEROS;
+	}
+
+} //zerosImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/initializer_with_gain.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/initializer_with_gain.java
new file mode 100644
index 0000000..1ad5aa8
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/initializer_with_gain.java
@@ -0,0 +1,59 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>initializer with gain</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_gain#getGain <em>Gain</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage#getinitializer_with_gain()
+ * @model abstract="true"
+ * @generated
+ */
+public interface initializer_with_gain extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Gain</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Gain</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Gain</em>' attribute.
+	 * @see #setGain(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage#getinitializer_with_gain_Gain()
+	 * @model dataType="org.eclipse.uml2.types.Real" required="true" ordered="false"
+	 * @generated
+	 */
+	double getGain();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_gain#getGain <em>Gain</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Gain</em>' attribute.
+	 * @see #getGain()
+	 * @generated
+	 */
+	void setGain(double value);
+
+} // initializer_with_gain
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/initializer_with_mean_stddev.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/initializer_with_mean_stddev.java
new file mode 100644
index 0000000..480133b
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/initializer_with_mean_stddev.java
@@ -0,0 +1,85 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>initializer with mean stddev</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_mean_stddev#getMean <em>Mean</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_mean_stddev#getStddev <em>Stddev</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage#getinitializer_with_mean_stddev()
+ * @model abstract="true"
+ * @generated
+ */
+public interface initializer_with_mean_stddev extends initializer_with_seed {
+	/**
+	 * Returns the value of the '<em><b>Mean</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Mean</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Mean</em>' attribute.
+	 * @see #setMean(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage#getinitializer_with_mean_stddev_Mean()
+	 * @model dataType="org.eclipse.uml2.types.Real" required="true" ordered="false"
+	 * @generated
+	 */
+	double getMean();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_mean_stddev#getMean <em>Mean</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Mean</em>' attribute.
+	 * @see #getMean()
+	 * @generated
+	 */
+	void setMean(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Stddev</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Stddev</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Stddev</em>' attribute.
+	 * @see #setStddev(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage#getinitializer_with_mean_stddev_Stddev()
+	 * @model dataType="org.eclipse.uml2.types.Real" required="true" ordered="false"
+	 * @generated
+	 */
+	double getStddev();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_mean_stddev#getStddev <em>Stddev</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Stddev</em>' attribute.
+	 * @see #getStddev()
+	 * @generated
+	 */
+	void setStddev(double value);
+
+} // initializer_with_mean_stddev
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/initializer_with_seed.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/initializer_with_seed.java
new file mode 100644
index 0000000..268bf90
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/initializer_with_seed.java
@@ -0,0 +1,59 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>initializer with seed</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_seed#getSeed <em>Seed</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage#getinitializer_with_seed()
+ * @model abstract="true"
+ * @generated
+ */
+public interface initializer_with_seed extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Seed</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Seed</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Seed</em>' attribute.
+	 * @see #setSeed(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage#getinitializer_with_seed_Seed()
+	 * @model dataType="org.eclipse.uml2.types.Integer" required="true" ordered="false"
+	 * @generated
+	 */
+	int getSeed();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_seed#getSeed <em>Seed</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Seed</em>' attribute.
+	 * @see #getSeed()
+	 * @generated
+	 */
+	void setSeed(int value);
+
+} // initializer_with_seed
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/ones.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/ones.java
new file mode 100644
index 0000000..981cc3c
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/ones.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>ones</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage#getones()
+ * @model
+ * @generated
+ */
+public interface ones extends EObject {
+} // ones
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/orthogonal.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/orthogonal.java
new file mode 100644
index 0000000..c02c7c4
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/orthogonal.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>orthogonal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage#getorthogonal()
+ * @model
+ * @generated
+ */
+public interface orthogonal extends initializer_with_gain, initializer_with_seed {
+} // orthogonal
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/random_normal.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/random_normal.java
new file mode 100644
index 0000000..3854d89
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/random_normal.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>random normal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage#getrandom_normal()
+ * @model
+ * @generated
+ */
+public interface random_normal extends initializer_with_mean_stddev {
+} // random_normal
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/random_uniform.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/random_uniform.java
new file mode 100644
index 0000000..069ac58
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/random_uniform.java
@@ -0,0 +1,85 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>random uniform</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.random_uniform#getMinval <em>Minval</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.random_uniform#getMaxval <em>Maxval</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage#getrandom_uniform()
+ * @model
+ * @generated
+ */
+public interface random_uniform extends initializer_with_seed {
+	/**
+	 * Returns the value of the '<em><b>Minval</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Minval</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Minval</em>' attribute.
+	 * @see #setMinval(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage#getrandom_uniform_Minval()
+	 * @model dataType="org.eclipse.uml2.types.Real" required="true" ordered="false"
+	 * @generated
+	 */
+	double getMinval();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.random_uniform#getMinval <em>Minval</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Minval</em>' attribute.
+	 * @see #getMinval()
+	 * @generated
+	 */
+	void setMinval(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Maxval</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Maxval</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Maxval</em>' attribute.
+	 * @see #setMaxval(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage#getrandom_uniform_Maxval()
+	 * @model dataType="org.eclipse.uml2.types.Real" required="true" ordered="false"
+	 * @generated
+	 */
+	double getMaxval();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.random_uniform#getMaxval <em>Maxval</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Maxval</em>' attribute.
+	 * @see #getMaxval()
+	 * @generated
+	 */
+	void setMaxval(double value);
+
+} // random_uniform
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/truncated_normal.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/truncated_normal.java
new file mode 100644
index 0000000..b2626d8
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/truncated_normal.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>truncated normal</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage#gettruncated_normal()
+ * @model
+ * @generated
+ */
+public interface truncated_normal extends initializer_with_mean_stddev {
+} // truncated_normal
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/util/Layer_weight_initializersAdapterFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/util/Layer_weight_initializersAdapterFactory.java
new file mode 100644
index 0000000..e85fc24
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/util/Layer_weight_initializersAdapterFactory.java
@@ -0,0 +1,363 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage
+ * @generated
+ */
+public class Layer_weight_initializersAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static Layer_weight_initializersPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Layer_weight_initializersAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = Layer_weight_initializersPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Layer_weight_initializersSwitch<Adapter> modelSwitch =
+		new Layer_weight_initializersSwitch<Adapter>() {
+			@Override
+			public Adapter caserandom_normal(random_normal object) {
+				return createrandom_normalAdapter();
+			}
+			@Override
+			public Adapter caseinitializer_with_mean_stddev(initializer_with_mean_stddev object) {
+				return createinitializer_with_mean_stddevAdapter();
+			}
+			@Override
+			public Adapter caseinitializer_with_seed(initializer_with_seed object) {
+				return createinitializer_with_seedAdapter();
+			}
+			@Override
+			public Adapter caserandom_uniform(random_uniform object) {
+				return createrandom_uniformAdapter();
+			}
+			@Override
+			public Adapter casetruncated_normal(truncated_normal object) {
+				return createtruncated_normalAdapter();
+			}
+			@Override
+			public Adapter casezeros(zeros object) {
+				return createzerosAdapter();
+			}
+			@Override
+			public Adapter caseones(ones object) {
+				return createonesAdapter();
+			}
+			@Override
+			public Adapter caseglorot_normal(glorot_normal object) {
+				return createglorot_normalAdapter();
+			}
+			@Override
+			public Adapter caseglorot_uniform(glorot_uniform object) {
+				return createglorot_uniformAdapter();
+			}
+			@Override
+			public Adapter caseidentity(identity object) {
+				return createidentityAdapter();
+			}
+			@Override
+			public Adapter caseinitializer_with_gain(initializer_with_gain object) {
+				return createinitializer_with_gainAdapter();
+			}
+			@Override
+			public Adapter caseorthogonal(orthogonal object) {
+				return createorthogonalAdapter();
+			}
+			@Override
+			public Adapter caseconstant(constant object) {
+				return createconstantAdapter();
+			}
+			@Override
+			public Adapter casevariance_scaling(variance_scaling object) {
+				return createvariance_scalingAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.random_normal <em>random normal</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.random_normal
+	 * @generated
+	 */
+	public Adapter createrandom_normalAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_mean_stddev <em>initializer with mean stddev</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_mean_stddev
+	 * @generated
+	 */
+	public Adapter createinitializer_with_mean_stddevAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_seed <em>initializer with seed</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_seed
+	 * @generated
+	 */
+	public Adapter createinitializer_with_seedAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.random_uniform <em>random uniform</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.random_uniform
+	 * @generated
+	 */
+	public Adapter createrandom_uniformAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.truncated_normal <em>truncated normal</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.truncated_normal
+	 * @generated
+	 */
+	public Adapter createtruncated_normalAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.zeros <em>zeros</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.zeros
+	 * @generated
+	 */
+	public Adapter createzerosAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.ones <em>ones</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.ones
+	 * @generated
+	 */
+	public Adapter createonesAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.glorot_normal <em>glorot normal</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.glorot_normal
+	 * @generated
+	 */
+	public Adapter createglorot_normalAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.glorot_uniform <em>glorot uniform</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.glorot_uniform
+	 * @generated
+	 */
+	public Adapter createglorot_uniformAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.identity <em>identity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.identity
+	 * @generated
+	 */
+	public Adapter createidentityAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_gain <em>initializer with gain</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.initializer_with_gain
+	 * @generated
+	 */
+	public Adapter createinitializer_with_gainAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.orthogonal <em>orthogonal</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.orthogonal
+	 * @generated
+	 */
+	public Adapter createorthogonalAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.constant <em>constant</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.constant
+	 * @generated
+	 */
+	public Adapter createconstantAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.variance_scaling <em>variance scaling</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.variance_scaling
+	 * @generated
+	 */
+	public Adapter createvariance_scalingAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //Layer_weight_initializersAdapterFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/util/Layer_weight_initializersSwitch.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/util/Layer_weight_initializersSwitch.java
new file mode 100644
index 0000000..ad90c82
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/util/Layer_weight_initializersSwitch.java
@@ -0,0 +1,404 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage
+ * @generated
+ */
+public class Layer_weight_initializersSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static Layer_weight_initializersPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Layer_weight_initializersSwitch() {
+		if (modelPackage == null) {
+			modelPackage = Layer_weight_initializersPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case Layer_weight_initializersPackage.RANDOM_NORMAL: {
+				random_normal random_normal = (random_normal)theEObject;
+				T result = caserandom_normal(random_normal);
+				if (result == null) result = caseinitializer_with_mean_stddev(random_normal);
+				if (result == null) result = caseinitializer_with_seed(random_normal);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Layer_weight_initializersPackage.INITIALIZER_WITH_MEAN_STDDEV: {
+				initializer_with_mean_stddev initializer_with_mean_stddev = (initializer_with_mean_stddev)theEObject;
+				T result = caseinitializer_with_mean_stddev(initializer_with_mean_stddev);
+				if (result == null) result = caseinitializer_with_seed(initializer_with_mean_stddev);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Layer_weight_initializersPackage.INITIALIZER_WITH_SEED: {
+				initializer_with_seed initializer_with_seed = (initializer_with_seed)theEObject;
+				T result = caseinitializer_with_seed(initializer_with_seed);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Layer_weight_initializersPackage.RANDOM_UNIFORM: {
+				random_uniform random_uniform = (random_uniform)theEObject;
+				T result = caserandom_uniform(random_uniform);
+				if (result == null) result = caseinitializer_with_seed(random_uniform);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Layer_weight_initializersPackage.TRUNCATED_NORMAL: {
+				truncated_normal truncated_normal = (truncated_normal)theEObject;
+				T result = casetruncated_normal(truncated_normal);
+				if (result == null) result = caseinitializer_with_mean_stddev(truncated_normal);
+				if (result == null) result = caseinitializer_with_seed(truncated_normal);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Layer_weight_initializersPackage.ZEROS: {
+				zeros zeros = (zeros)theEObject;
+				T result = casezeros(zeros);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Layer_weight_initializersPackage.ONES: {
+				ones ones = (ones)theEObject;
+				T result = caseones(ones);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Layer_weight_initializersPackage.GLOROT_NORMAL: {
+				glorot_normal glorot_normal = (glorot_normal)theEObject;
+				T result = caseglorot_normal(glorot_normal);
+				if (result == null) result = caseinitializer_with_seed(glorot_normal);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Layer_weight_initializersPackage.GLOROT_UNIFORM: {
+				glorot_uniform glorot_uniform = (glorot_uniform)theEObject;
+				T result = caseglorot_uniform(glorot_uniform);
+				if (result == null) result = caseinitializer_with_seed(glorot_uniform);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Layer_weight_initializersPackage.IDENTITY: {
+				identity identity = (identity)theEObject;
+				T result = caseidentity(identity);
+				if (result == null) result = caseinitializer_with_gain(identity);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Layer_weight_initializersPackage.INITIALIZER_WITH_GAIN: {
+				initializer_with_gain initializer_with_gain = (initializer_with_gain)theEObject;
+				T result = caseinitializer_with_gain(initializer_with_gain);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Layer_weight_initializersPackage.ORTHOGONAL: {
+				orthogonal orthogonal = (orthogonal)theEObject;
+				T result = caseorthogonal(orthogonal);
+				if (result == null) result = caseinitializer_with_gain(orthogonal);
+				if (result == null) result = caseinitializer_with_seed(orthogonal);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Layer_weight_initializersPackage.CONSTANT: {
+				constant constant = (constant)theEObject;
+				T result = caseconstant(constant);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Layer_weight_initializersPackage.VARIANCE_SCALING: {
+				variance_scaling variance_scaling = (variance_scaling)theEObject;
+				T result = casevariance_scaling(variance_scaling);
+				if (result == null) result = caseinitializer_with_seed(variance_scaling);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>random normal</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>random normal</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caserandom_normal(random_normal object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>initializer with mean stddev</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>initializer with mean stddev</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseinitializer_with_mean_stddev(initializer_with_mean_stddev object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>initializer with seed</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>initializer with seed</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseinitializer_with_seed(initializer_with_seed object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>random uniform</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>random uniform</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caserandom_uniform(random_uniform object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>truncated normal</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>truncated normal</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casetruncated_normal(truncated_normal object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>zeros</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>zeros</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casezeros(zeros object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>ones</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>ones</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseones(ones object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>glorot normal</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>glorot normal</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseglorot_normal(glorot_normal object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>glorot uniform</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>glorot uniform</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseglorot_uniform(glorot_uniform object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>identity</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>identity</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseidentity(identity object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>initializer with gain</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>initializer with gain</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseinitializer_with_gain(initializer_with_gain object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>orthogonal</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>orthogonal</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseorthogonal(orthogonal object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>constant</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>constant</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseconstant(constant object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>variance scaling</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>variance scaling</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casevariance_scaling(variance_scaling object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //Layer_weight_initializersSwitch
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/variance_scaling.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/variance_scaling.java
new file mode 100644
index 0000000..ac7d2f5
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/variance_scaling.java
@@ -0,0 +1,112 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>variance scaling</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.variance_scaling#getScale <em>Scale</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.variance_scaling#getMode <em>Mode</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.variance_scaling#getDistribution <em>Distribution</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage#getvariance_scaling()
+ * @model
+ * @generated
+ */
+public interface variance_scaling extends initializer_with_seed {
+	/**
+	 * Returns the value of the '<em><b>Scale</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Scale</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Scale</em>' attribute.
+	 * @see #setScale(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage#getvariance_scaling_Scale()
+	 * @model dataType="org.eclipse.uml2.types.Real" required="true" ordered="false"
+	 * @generated
+	 */
+	double getScale();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.variance_scaling#getScale <em>Scale</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Scale</em>' attribute.
+	 * @see #getScale()
+	 * @generated
+	 */
+	void setScale(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Mode</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Mode</em>' attribute.
+	 * @see #setMode(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage#getvariance_scaling_Mode()
+	 * @model dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getMode();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.variance_scaling#getMode <em>Mode</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Mode</em>' attribute.
+	 * @see #getMode()
+	 * @generated
+	 */
+	void setMode(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Distribution</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Distribution</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Distribution</em>' attribute.
+	 * @see #setDistribution(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage#getvariance_scaling_Distribution()
+	 * @model dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getDistribution();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.variance_scaling#getDistribution <em>Distribution</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Distribution</em>' attribute.
+	 * @see #getDistribution()
+	 * @generated
+	 */
+	void setDistribution(String value);
+
+} // variance_scaling
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/zeros.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/zeros.java
new file mode 100644
index 0000000..652e090
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_initializers/zeros.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>zeros</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage#getzeros()
+ * @model
+ * @generated
+ */
+public interface zeros extends EObject {
+} // zeros
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/Layer_weight_regularizersFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/Layer_weight_regularizersFactory.java
new file mode 100644
index 0000000..aeea1f7
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/Layer_weight_regularizersFactory.java
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage
+ * @generated
+ */
+public interface Layer_weight_regularizersFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	Layer_weight_regularizersFactory eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.Layer_weight_regularizersFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>l1</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>l1</em>'.
+	 * @generated
+	 */
+	l1 createl1();
+
+	/**
+	 * Returns a new object of class '<em>l2</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>l2</em>'.
+	 * @generated
+	 */
+	l2 createl2();
+
+	/**
+	 * Returns a new object of class '<em>l1 l2</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>l1 l2</em>'.
+	 * @generated
+	 */
+	l1_l2 createl1_l2();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	Layer_weight_regularizersPackage getLayer_weight_regularizersPackage();
+
+} //Layer_weight_regularizersFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/Layer_weight_regularizersPackage.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/Layer_weight_regularizersPackage.java
new file mode 100644
index 0000000..6473634
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/Layer_weight_regularizersPackage.java
@@ -0,0 +1,425 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface Layer_weight_regularizersPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "Layer_weight_regularizers"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http:///AIML/Layer_weight_regularizers.ecore"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "AIML.Layer_weight_regularizers"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	Layer_weight_regularizersPackage eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.Layer_weight_regularizersPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.ReguWithl1Impl <em>Regu Withl1</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.ReguWithl1Impl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.Layer_weight_regularizersPackageImpl#getReguWithl1()
+	 * @generated
+	 */
+	int REGU_WITHL1 = 1;
+
+	/**
+	 * The feature id for the '<em><b>L1</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REGU_WITHL1__L1 = 0;
+
+	/**
+	 * The number of structural features of the '<em>Regu Withl1</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REGU_WITHL1_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Regu Withl1</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REGU_WITHL1_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.l1Impl <em>l1</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.l1Impl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.Layer_weight_regularizersPackageImpl#getl1()
+	 * @generated
+	 */
+	int L1 = 0;
+
+	/**
+	 * The feature id for the '<em><b>L1</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int L1__L1 = REGU_WITHL1__L1;
+
+	/**
+	 * The number of structural features of the '<em>l1</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int L1_FEATURE_COUNT = REGU_WITHL1_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>l1</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int L1_OPERATION_COUNT = REGU_WITHL1_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.ReguWithl2Impl <em>Regu Withl2</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.ReguWithl2Impl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.Layer_weight_regularizersPackageImpl#getReguWithl2()
+	 * @generated
+	 */
+	int REGU_WITHL2 = 3;
+
+	/**
+	 * The feature id for the '<em><b>L2</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REGU_WITHL2__L2 = 0;
+
+	/**
+	 * The number of structural features of the '<em>Regu Withl2</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REGU_WITHL2_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Regu Withl2</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REGU_WITHL2_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.l2Impl <em>l2</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.l2Impl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.Layer_weight_regularizersPackageImpl#getl2()
+	 * @generated
+	 */
+	int L2 = 2;
+
+	/**
+	 * The feature id for the '<em><b>L2</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int L2__L2 = REGU_WITHL2__L2;
+
+	/**
+	 * The number of structural features of the '<em>l2</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int L2_FEATURE_COUNT = REGU_WITHL2_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>l2</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int L2_OPERATION_COUNT = REGU_WITHL2_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.l1_l2Impl <em>l1 l2</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.l1_l2Impl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.Layer_weight_regularizersPackageImpl#getl1_l2()
+	 * @generated
+	 */
+	int L1_L2 = 4;
+
+	/**
+	 * The feature id for the '<em><b>L1</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int L1_L2__L1 = REGU_WITHL1__L1;
+
+	/**
+	 * The feature id for the '<em><b>L2</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int L1_L2__L2 = REGU_WITHL1_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>l1 l2</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int L1_L2_FEATURE_COUNT = REGU_WITHL1_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>l1 l2</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int L1_L2_OPERATION_COUNT = REGU_WITHL1_OPERATION_COUNT + 0;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.l1 <em>l1</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>l1</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.l1
+	 * @generated
+	 */
+	EClass getl1();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.ReguWithl1 <em>Regu Withl1</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Regu Withl1</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.ReguWithl1
+	 * @generated
+	 */
+	EClass getReguWithl1();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.ReguWithl1#getL1 <em>L1</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>L1</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.ReguWithl1#getL1()
+	 * @see #getReguWithl1()
+	 * @generated
+	 */
+	EAttribute getReguWithl1_L1();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.l2 <em>l2</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>l2</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.l2
+	 * @generated
+	 */
+	EClass getl2();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.ReguWithl2 <em>Regu Withl2</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Regu Withl2</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.ReguWithl2
+	 * @generated
+	 */
+	EClass getReguWithl2();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.ReguWithl2#getL2 <em>L2</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>L2</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.ReguWithl2#getL2()
+	 * @see #getReguWithl2()
+	 * @generated
+	 */
+	EAttribute getReguWithl2_L2();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.l1_l2 <em>l1 l2</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>l1 l2</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.l1_l2
+	 * @generated
+	 */
+	EClass getl1_l2();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	Layer_weight_regularizersFactory getLayer_weight_regularizersFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.l1Impl <em>l1</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.l1Impl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.Layer_weight_regularizersPackageImpl#getl1()
+		 * @generated
+		 */
+		EClass L1 = eINSTANCE.getl1();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.ReguWithl1Impl <em>Regu Withl1</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.ReguWithl1Impl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.Layer_weight_regularizersPackageImpl#getReguWithl1()
+		 * @generated
+		 */
+		EClass REGU_WITHL1 = eINSTANCE.getReguWithl1();
+
+		/**
+		 * The meta object literal for the '<em><b>L1</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute REGU_WITHL1__L1 = eINSTANCE.getReguWithl1_L1();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.l2Impl <em>l2</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.l2Impl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.Layer_weight_regularizersPackageImpl#getl2()
+		 * @generated
+		 */
+		EClass L2 = eINSTANCE.getl2();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.ReguWithl2Impl <em>Regu Withl2</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.ReguWithl2Impl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.Layer_weight_regularizersPackageImpl#getReguWithl2()
+		 * @generated
+		 */
+		EClass REGU_WITHL2 = eINSTANCE.getReguWithl2();
+
+		/**
+		 * The meta object literal for the '<em><b>L2</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute REGU_WITHL2__L2 = eINSTANCE.getReguWithl2_L2();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.l1_l2Impl <em>l1 l2</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.l1_l2Impl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.Layer_weight_regularizersPackageImpl#getl1_l2()
+		 * @generated
+		 */
+		EClass L1_L2 = eINSTANCE.getl1_l2();
+
+	}
+
+} //Layer_weight_regularizersPackage
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/ReguWithl1.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/ReguWithl1.java
new file mode 100644
index 0000000..a29f8b5
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/ReguWithl1.java
@@ -0,0 +1,59 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Regu Withl1</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.ReguWithl1#getL1 <em>L1</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage#getReguWithl1()
+ * @model abstract="true"
+ * @generated
+ */
+public interface ReguWithl1 extends EObject {
+	/**
+	 * Returns the value of the '<em><b>L1</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>L1</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>L1</em>' attribute.
+	 * @see #setL1(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage#getReguWithl1_L1()
+	 * @model dataType="org.eclipse.uml2.types.Real" ordered="false"
+	 * @generated
+	 */
+	double getL1();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.ReguWithl1#getL1 <em>L1</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>L1</em>' attribute.
+	 * @see #getL1()
+	 * @generated
+	 */
+	void setL1(double value);
+
+} // ReguWithl1
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/ReguWithl2.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/ReguWithl2.java
new file mode 100644
index 0000000..8d9b7cd
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/ReguWithl2.java
@@ -0,0 +1,59 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Regu Withl2</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.ReguWithl2#getL2 <em>L2</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage#getReguWithl2()
+ * @model abstract="true"
+ * @generated
+ */
+public interface ReguWithl2 extends EObject {
+	/**
+	 * Returns the value of the '<em><b>L2</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>L2</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>L2</em>' attribute.
+	 * @see #setL2(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage#getReguWithl2_L2()
+	 * @model dataType="org.eclipse.uml2.types.Real" ordered="false"
+	 * @generated
+	 */
+	double getL2();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.ReguWithl2#getL2 <em>L2</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>L2</em>' attribute.
+	 * @see #getL2()
+	 * @generated
+	 */
+	void setL2(double value);
+
+} // ReguWithl2
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/impl/Layer_weight_regularizersFactoryImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/impl/Layer_weight_regularizersFactoryImpl.java
new file mode 100644
index 0000000..524866e
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/impl/Layer_weight_regularizersFactoryImpl.java
@@ -0,0 +1,130 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class Layer_weight_regularizersFactoryImpl extends EFactoryImpl implements Layer_weight_regularizersFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static Layer_weight_regularizersFactory init() {
+		try {
+			Layer_weight_regularizersFactory theLayer_weight_regularizersFactory = (Layer_weight_regularizersFactory)EPackage.Registry.INSTANCE.getEFactory(Layer_weight_regularizersPackage.eNS_URI);
+			if (theLayer_weight_regularizersFactory != null) {
+				return theLayer_weight_regularizersFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new Layer_weight_regularizersFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Layer_weight_regularizersFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case Layer_weight_regularizersPackage.L1: return createl1();
+			case Layer_weight_regularizersPackage.L2: return createl2();
+			case Layer_weight_regularizersPackage.L1_L2: return createl1_l2();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public l1 createl1() {
+		l1Impl l1 = new l1Impl();
+		return l1;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public l2 createl2() {
+		l2Impl l2 = new l2Impl();
+		return l2;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public l1_l2 createl1_l2() {
+		l1_l2Impl l1_l2 = new l1_l2Impl();
+		return l1_l2;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Layer_weight_regularizersPackage getLayer_weight_regularizersPackage() {
+		return (Layer_weight_regularizersPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static Layer_weight_regularizersPackage getPackage() {
+		return Layer_weight_regularizersPackage.eINSTANCE;
+	}
+
+} //Layer_weight_regularizersFactoryImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/impl/Layer_weight_regularizersPackageImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/impl/Layer_weight_regularizersPackageImpl.java
new file mode 100644
index 0000000..854d9fa
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/impl/Layer_weight_regularizersPackageImpl.java
@@ -0,0 +1,473 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.AIMLPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersFactory;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.ReguWithl1;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.ReguWithl2;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.l1;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.l1_l2;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.l2;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModulePackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.DatatypesPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl.DatatypesPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.impl.AIMLPackageImpl;
+
+import org.eclipse.uml2.types.TypesPackage;
+
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class Layer_weight_regularizersPackageImpl extends EPackageImpl implements Layer_weight_regularizersPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass l1EClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass reguWithl1EClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass l2EClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass reguWithl2EClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass l1_l2EClass = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private Layer_weight_regularizersPackageImpl() {
+		super(eNS_URI, Layer_weight_regularizersFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>This method is used to initialize {@link Layer_weight_regularizersPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static Layer_weight_regularizersPackage init() {
+		if (isInited) return (Layer_weight_regularizersPackage)EPackage.Registry.INSTANCE.getEPackage(Layer_weight_regularizersPackage.eNS_URI);
+
+		// Obtain or create and register package
+		Object registeredLayer_weight_regularizersPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		Layer_weight_regularizersPackageImpl theLayer_weight_regularizersPackage = registeredLayer_weight_regularizersPackage instanceof Layer_weight_regularizersPackageImpl ? (Layer_weight_regularizersPackageImpl)registeredLayer_weight_regularizersPackage : new Layer_weight_regularizersPackageImpl();
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		EcorePackage.eINSTANCE.eClass();
+		TypesPackage.eINSTANCE.eClass();
+		UMLPackage.eINSTANCE.eClass();
+
+		// Obtain or create and register interdependencies
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AIMLPackage.eNS_URI);
+		AIMLPackageImpl theAIMLPackage = (AIMLPackageImpl)(registeredPackage instanceof AIMLPackageImpl ? registeredPackage : AIMLPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		ModulePackageImpl theModulePackage = (ModulePackageImpl)(registeredPackage instanceof ModulePackageImpl ? registeredPackage : ModulePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(TensorPackage.eNS_URI);
+		TensorPackageImpl theTensorPackage = (TensorPackageImpl)(registeredPackage instanceof TensorPackageImpl ? registeredPackage : TensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DatatypesPackage.eNS_URI);
+		DatatypesPackageImpl theDatatypesPackage = (DatatypesPackageImpl)(registeredPackage instanceof DatatypesPackageImpl ? registeredPackage : DatatypesPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Pooling_layersPackage.eNS_URI);
+		Pooling_layersPackageImpl thePooling_layersPackage = (Pooling_layersPackageImpl)(registeredPackage instanceof Pooling_layersPackageImpl ? registeredPackage : Pooling_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Convolution_layersPackage.eNS_URI);
+		Convolution_layersPackageImpl theConvolution_layersPackage = (Convolution_layersPackageImpl)(registeredPackage instanceof Convolution_layersPackageImpl ? registeredPackage : Convolution_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_constraintsPackage.eNS_URI);
+		Layer_weight_constraintsPackageImpl theLayer_weight_constraintsPackage = (Layer_weight_constraintsPackageImpl)(registeredPackage instanceof Layer_weight_constraintsPackageImpl ? registeredPackage : Layer_weight_constraintsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Padding_layersPackage.eNS_URI);
+		Padding_layersPackageImpl thePadding_layersPackage = (Padding_layersPackageImpl)(registeredPackage instanceof Padding_layersPackageImpl ? registeredPackage : Padding_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NonLinearActivationsPackage.eNS_URI);
+		NonLinearActivationsPackageImpl theNonLinearActivationsPackage = (NonLinearActivationsPackageImpl)(registeredPackage instanceof NonLinearActivationsPackageImpl ? registeredPackage : NonLinearActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftMinMaxActivationsPackage.eNS_URI);
+		SoftMinMaxActivationsPackageImpl theSoftMinMaxActivationsPackage = (SoftMinMaxActivationsPackageImpl)(registeredPackage instanceof SoftMinMaxActivationsPackageImpl ? registeredPackage : SoftMinMaxActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Normalization_layersPackage.eNS_URI);
+		Normalization_layersPackageImpl theNormalization_layersPackage = (Normalization_layersPackageImpl)(registeredPackage instanceof Normalization_layersPackageImpl ? registeredPackage : Normalization_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Recurrent_layersPackage.eNS_URI);
+		Recurrent_layersPackageImpl theRecurrent_layersPackage = (Recurrent_layersPackageImpl)(registeredPackage instanceof Recurrent_layersPackageImpl ? registeredPackage : Recurrent_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Transformer_layersPackage.eNS_URI);
+		Transformer_layersPackageImpl theTransformer_layersPackage = (Transformer_layersPackageImpl)(registeredPackage instanceof Transformer_layersPackageImpl ? registeredPackage : Transformer_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Linear_layersPackage.eNS_URI);
+		Linear_layersPackageImpl theLinear_layersPackage = (Linear_layersPackageImpl)(registeredPackage instanceof Linear_layersPackageImpl ? registeredPackage : Linear_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Dropout_layersPackage.eNS_URI);
+		Dropout_layersPackageImpl theDropout_layersPackage = (Dropout_layersPackageImpl)(registeredPackage instanceof Dropout_layersPackageImpl ? registeredPackage : Dropout_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Sparse_layersPackage.eNS_URI);
+		Sparse_layersPackageImpl theSparse_layersPackage = (Sparse_layersPackageImpl)(registeredPackage instanceof Sparse_layersPackageImpl ? registeredPackage : Sparse_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Distance_functionsPackage.eNS_URI);
+		Distance_functionsPackageImpl theDistance_functionsPackage = (Distance_functionsPackageImpl)(registeredPackage instanceof Distance_functionsPackageImpl ? registeredPackage : Distance_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Loss_functionsPackage.eNS_URI);
+		Loss_functionsPackageImpl theLoss_functionsPackage = (Loss_functionsPackageImpl)(registeredPackage instanceof Loss_functionsPackageImpl ? registeredPackage : Loss_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Vision_layersPackage.eNS_URI);
+		Vision_layersPackageImpl theVision_layersPackage = (Vision_layersPackageImpl)(registeredPackage instanceof Vision_layersPackageImpl ? registeredPackage : Vision_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DataParallel_layersPackage.eNS_URI);
+		DataParallel_layersPackageImpl theDataParallel_layersPackage = (DataParallel_layersPackageImpl)(registeredPackage instanceof DataParallel_layersPackageImpl ? registeredPackage : DataParallel_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_initializersPackage.eNS_URI);
+		Layer_weight_initializersPackageImpl theLayer_weight_initializersPackage = (Layer_weight_initializersPackageImpl)(registeredPackage instanceof Layer_weight_initializersPackageImpl ? registeredPackage : Layer_weight_initializersPackage.eINSTANCE);
+
+		// Create package meta-data objects
+		theLayer_weight_regularizersPackage.createPackageContents();
+		theAIMLPackage.createPackageContents();
+		theModulePackage.createPackageContents();
+		theTensorPackage.createPackageContents();
+		theDatatypesPackage.createPackageContents();
+		thePooling_layersPackage.createPackageContents();
+		theConvolution_layersPackage.createPackageContents();
+		theLayer_weight_constraintsPackage.createPackageContents();
+		thePadding_layersPackage.createPackageContents();
+		theNonLinearActivationsPackage.createPackageContents();
+		theSoftMinMaxActivationsPackage.createPackageContents();
+		theNormalization_layersPackage.createPackageContents();
+		theRecurrent_layersPackage.createPackageContents();
+		theTransformer_layersPackage.createPackageContents();
+		theLinear_layersPackage.createPackageContents();
+		theDropout_layersPackage.createPackageContents();
+		theSparse_layersPackage.createPackageContents();
+		theDistance_functionsPackage.createPackageContents();
+		theLoss_functionsPackage.createPackageContents();
+		theVision_layersPackage.createPackageContents();
+		theDataParallel_layersPackage.createPackageContents();
+		theLayer_weight_initializersPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theLayer_weight_regularizersPackage.initializePackageContents();
+		theAIMLPackage.initializePackageContents();
+		theModulePackage.initializePackageContents();
+		theTensorPackage.initializePackageContents();
+		theDatatypesPackage.initializePackageContents();
+		thePooling_layersPackage.initializePackageContents();
+		theConvolution_layersPackage.initializePackageContents();
+		theLayer_weight_constraintsPackage.initializePackageContents();
+		thePadding_layersPackage.initializePackageContents();
+		theNonLinearActivationsPackage.initializePackageContents();
+		theSoftMinMaxActivationsPackage.initializePackageContents();
+		theNormalization_layersPackage.initializePackageContents();
+		theRecurrent_layersPackage.initializePackageContents();
+		theTransformer_layersPackage.initializePackageContents();
+		theLinear_layersPackage.initializePackageContents();
+		theDropout_layersPackage.initializePackageContents();
+		theSparse_layersPackage.initializePackageContents();
+		theDistance_functionsPackage.initializePackageContents();
+		theLoss_functionsPackage.initializePackageContents();
+		theVision_layersPackage.initializePackageContents();
+		theDataParallel_layersPackage.initializePackageContents();
+		theLayer_weight_initializersPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theLayer_weight_regularizersPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(Layer_weight_regularizersPackage.eNS_URI, theLayer_weight_regularizersPackage);
+		return theLayer_weight_regularizersPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getl1() {
+		return l1EClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getReguWithl1() {
+		return reguWithl1EClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getReguWithl1_L1() {
+		return (EAttribute)reguWithl1EClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getl2() {
+		return l2EClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getReguWithl2() {
+		return reguWithl2EClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getReguWithl2_L2() {
+		return (EAttribute)reguWithl2EClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getl1_l2() {
+		return l1_l2EClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Layer_weight_regularizersFactory getLayer_weight_regularizersFactory() {
+		return (Layer_weight_regularizersFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		l1EClass = createEClass(L1);
+
+		reguWithl1EClass = createEClass(REGU_WITHL1);
+		createEAttribute(reguWithl1EClass, REGU_WITHL1__L1);
+
+		l2EClass = createEClass(L2);
+
+		reguWithl2EClass = createEClass(REGU_WITHL2);
+		createEAttribute(reguWithl2EClass, REGU_WITHL2__L2);
+
+		l1_l2EClass = createEClass(L1_L2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		l1EClass.getESuperTypes().add(this.getReguWithl1());
+		l2EClass.getESuperTypes().add(this.getReguWithl2());
+		l1_l2EClass.getESuperTypes().add(this.getReguWithl1());
+		l1_l2EClass.getESuperTypes().add(this.getReguWithl2());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(l1EClass, l1.class, "l1", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(reguWithl1EClass, ReguWithl1.class, "ReguWithl1", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getReguWithl1_L1(), theTypesPackage.getReal(), "l1", null, 0, 1, ReguWithl1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(l2EClass, l2.class, "l2", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(reguWithl2EClass, ReguWithl2.class, "ReguWithl2", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getReguWithl2_L2(), theTypesPackage.getReal(), "l2", null, 0, 1, ReguWithl2.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(l1_l2EClass, l1_l2.class, "l1_l2", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+	}
+
+} //Layer_weight_regularizersPackageImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/impl/ReguWithl1Impl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/impl/ReguWithl1Impl.java
new file mode 100644
index 0000000..a84802d
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/impl/ReguWithl1Impl.java
@@ -0,0 +1,174 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.ReguWithl1;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Regu Withl1</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.ReguWithl1Impl#getL1 <em>L1</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class ReguWithl1Impl extends MinimalEObjectImpl.Container implements ReguWithl1 {
+	/**
+	 * The default value of the '{@link #getL1() <em>L1</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getL1()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double L1_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getL1() <em>L1</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getL1()
+	 * @generated
+	 * @ordered
+	 */
+	protected double l1 = L1_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ReguWithl1Impl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Layer_weight_regularizersPackage.Literals.REGU_WITHL1;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getL1() {
+		return l1;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setL1(double newL1) {
+		double oldL1 = l1;
+		l1 = newL1;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Layer_weight_regularizersPackage.REGU_WITHL1__L1, oldL1, l1));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Layer_weight_regularizersPackage.REGU_WITHL1__L1:
+				return getL1();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Layer_weight_regularizersPackage.REGU_WITHL1__L1:
+				setL1((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Layer_weight_regularizersPackage.REGU_WITHL1__L1:
+				setL1(L1_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Layer_weight_regularizersPackage.REGU_WITHL1__L1:
+				return l1 != L1_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (l1: "); //$NON-NLS-1$
+		result.append(l1);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ReguWithl1Impl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/impl/ReguWithl2Impl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/impl/ReguWithl2Impl.java
new file mode 100644
index 0000000..076efe7
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/impl/ReguWithl2Impl.java
@@ -0,0 +1,174 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.ReguWithl2;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Regu Withl2</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.ReguWithl2Impl#getL2 <em>L2</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class ReguWithl2Impl extends MinimalEObjectImpl.Container implements ReguWithl2 {
+	/**
+	 * The default value of the '{@link #getL2() <em>L2</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getL2()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double L2_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getL2() <em>L2</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getL2()
+	 * @generated
+	 * @ordered
+	 */
+	protected double l2 = L2_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ReguWithl2Impl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Layer_weight_regularizersPackage.Literals.REGU_WITHL2;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getL2() {
+		return l2;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setL2(double newL2) {
+		double oldL2 = l2;
+		l2 = newL2;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Layer_weight_regularizersPackage.REGU_WITHL2__L2, oldL2, l2));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Layer_weight_regularizersPackage.REGU_WITHL2__L2:
+				return getL2();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Layer_weight_regularizersPackage.REGU_WITHL2__L2:
+				setL2((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Layer_weight_regularizersPackage.REGU_WITHL2__L2:
+				setL2(L2_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Layer_weight_regularizersPackage.REGU_WITHL2__L2:
+				return l2 != L2_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (l2: "); //$NON-NLS-1$
+		result.append(l2);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ReguWithl2Impl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/impl/l1Impl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/impl/l1Impl.java
new file mode 100644
index 0000000..30c8b00
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/impl/l1Impl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.l1;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>l1</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class l1Impl extends ReguWithl1Impl implements l1 {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected l1Impl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Layer_weight_regularizersPackage.Literals.L1;
+	}
+
+} //l1Impl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/impl/l1_l2Impl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/impl/l1_l2Impl.java
new file mode 100644
index 0000000..3b76c2c
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/impl/l1_l2Impl.java
@@ -0,0 +1,206 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.ReguWithl2;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.l1_l2;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>l1 l2</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.l1_l2Impl#getL2 <em>L2</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class l1_l2Impl extends ReguWithl1Impl implements l1_l2 {
+	/**
+	 * The default value of the '{@link #getL2() <em>L2</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getL2()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double L2_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getL2() <em>L2</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getL2()
+	 * @generated
+	 * @ordered
+	 */
+	protected double l2 = L2_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected l1_l2Impl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Layer_weight_regularizersPackage.Literals.L1_L2;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getL2() {
+		return l2;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setL2(double newL2) {
+		double oldL2 = l2;
+		l2 = newL2;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Layer_weight_regularizersPackage.L1_L2__L2, oldL2, l2));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Layer_weight_regularizersPackage.L1_L2__L2:
+				return getL2();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Layer_weight_regularizersPackage.L1_L2__L2:
+				setL2((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Layer_weight_regularizersPackage.L1_L2__L2:
+				setL2(L2_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Layer_weight_regularizersPackage.L1_L2__L2:
+				return l2 != L2_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eBaseStructuralFeatureID(int derivedFeatureID, Class<?> baseClass) {
+		if (baseClass == ReguWithl2.class) {
+			switch (derivedFeatureID) {
+				case Layer_weight_regularizersPackage.L1_L2__L2: return Layer_weight_regularizersPackage.REGU_WITHL2__L2;
+				default: return -1;
+			}
+		}
+		return super.eBaseStructuralFeatureID(derivedFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int eDerivedStructuralFeatureID(int baseFeatureID, Class<?> baseClass) {
+		if (baseClass == ReguWithl2.class) {
+			switch (baseFeatureID) {
+				case Layer_weight_regularizersPackage.REGU_WITHL2__L2: return Layer_weight_regularizersPackage.L1_L2__L2;
+				default: return -1;
+			}
+		}
+		return super.eDerivedStructuralFeatureID(baseFeatureID, baseClass);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (l2: "); //$NON-NLS-1$
+		result.append(l2);
+		result.append(')');
+		return result.toString();
+	}
+
+} //l1_l2Impl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/impl/l2Impl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/impl/l2Impl.java
new file mode 100644
index 0000000..214b6c3
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/impl/l2Impl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.l2;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>l2</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class l2Impl extends ReguWithl2Impl implements l2 {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected l2Impl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Layer_weight_regularizersPackage.Literals.L2;
+	}
+
+} //l2Impl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/l1.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/l1.java
new file mode 100644
index 0000000..94bb60f
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/l1.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>l1</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage#getl1()
+ * @model
+ * @generated
+ */
+public interface l1 extends ReguWithl1 {
+} // l1
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/l1_l2.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/l1_l2.java
new file mode 100644
index 0000000..d291416
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/l1_l2.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>l1 l2</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage#getl1_l2()
+ * @model
+ * @generated
+ */
+public interface l1_l2 extends ReguWithl1, ReguWithl2 {
+} // l1_l2
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/l2.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/l2.java
new file mode 100644
index 0000000..57cfcfb
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/l2.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>l2</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage#getl2()
+ * @model
+ * @generated
+ */
+public interface l2 extends ReguWithl2 {
+} // l2
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/util/Layer_weight_regularizersAdapterFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/util/Layer_weight_regularizersAdapterFactory.java
new file mode 100644
index 0000000..3986cff
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/util/Layer_weight_regularizersAdapterFactory.java
@@ -0,0 +1,201 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage
+ * @generated
+ */
+public class Layer_weight_regularizersAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static Layer_weight_regularizersPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Layer_weight_regularizersAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = Layer_weight_regularizersPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Layer_weight_regularizersSwitch<Adapter> modelSwitch =
+		new Layer_weight_regularizersSwitch<Adapter>() {
+			@Override
+			public Adapter casel1(l1 object) {
+				return createl1Adapter();
+			}
+			@Override
+			public Adapter caseReguWithl1(ReguWithl1 object) {
+				return createReguWithl1Adapter();
+			}
+			@Override
+			public Adapter casel2(l2 object) {
+				return createl2Adapter();
+			}
+			@Override
+			public Adapter caseReguWithl2(ReguWithl2 object) {
+				return createReguWithl2Adapter();
+			}
+			@Override
+			public Adapter casel1_l2(l1_l2 object) {
+				return createl1_l2Adapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.l1 <em>l1</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.l1
+	 * @generated
+	 */
+	public Adapter createl1Adapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.ReguWithl1 <em>Regu Withl1</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.ReguWithl1
+	 * @generated
+	 */
+	public Adapter createReguWithl1Adapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.l2 <em>l2</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.l2
+	 * @generated
+	 */
+	public Adapter createl2Adapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.ReguWithl2 <em>Regu Withl2</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.ReguWithl2
+	 * @generated
+	 */
+	public Adapter createReguWithl2Adapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.l1_l2 <em>l1 l2</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.l1_l2
+	 * @generated
+	 */
+	public Adapter createl1_l2Adapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //Layer_weight_regularizersAdapterFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/util/Layer_weight_regularizersSwitch.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/util/Layer_weight_regularizersSwitch.java
new file mode 100644
index 0000000..9e2c36b
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Layer_weight_regularizers/util/Layer_weight_regularizersSwitch.java
@@ -0,0 +1,207 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage
+ * @generated
+ */
+public class Layer_weight_regularizersSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static Layer_weight_regularizersPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Layer_weight_regularizersSwitch() {
+		if (modelPackage == null) {
+			modelPackage = Layer_weight_regularizersPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case Layer_weight_regularizersPackage.L1: {
+				l1 l1 = (l1)theEObject;
+				T result = casel1(l1);
+				if (result == null) result = caseReguWithl1(l1);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Layer_weight_regularizersPackage.REGU_WITHL1: {
+				ReguWithl1 reguWithl1 = (ReguWithl1)theEObject;
+				T result = caseReguWithl1(reguWithl1);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Layer_weight_regularizersPackage.L2: {
+				l2 l2 = (l2)theEObject;
+				T result = casel2(l2);
+				if (result == null) result = caseReguWithl2(l2);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Layer_weight_regularizersPackage.REGU_WITHL2: {
+				ReguWithl2 reguWithl2 = (ReguWithl2)theEObject;
+				T result = caseReguWithl2(reguWithl2);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Layer_weight_regularizersPackage.L1_L2: {
+				l1_l2 l1_l2 = (l1_l2)theEObject;
+				T result = casel1_l2(l1_l2);
+				if (result == null) result = caseReguWithl1(l1_l2);
+				if (result == null) result = caseReguWithl2(l1_l2);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>l1</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>l1</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casel1(l1 object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Regu Withl1</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Regu Withl1</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseReguWithl1(ReguWithl1 object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>l2</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>l2</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casel2(l2 object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Regu Withl2</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Regu Withl2</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseReguWithl2(ReguWithl2 object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>l1 l2</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>l1 l2</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casel1_l2(l1_l2 object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //Layer_weight_regularizersSwitch
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/Bilinear.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/Bilinear.java
new file mode 100644
index 0000000..849f723
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/Bilinear.java
@@ -0,0 +1,85 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Linear_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Bilinear</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Bilinear#getIn1_features <em>In1 features</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Bilinear#getIn2_features <em>In2 features</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage#getBilinear()
+ * @model
+ * @generated
+ */
+public interface Bilinear extends Linear_layers_1 {
+	/**
+	 * Returns the value of the '<em><b>In1 features</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>In1 features</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>In1 features</em>' attribute.
+	 * @see #setIn1_features(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage#getBilinear_In1_features()
+	 * @model dataType="org.eclipse.uml2.types.Integer" required="true" ordered="false"
+	 * @generated
+	 */
+	int getIn1_features();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Bilinear#getIn1_features <em>In1 features</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>In1 features</em>' attribute.
+	 * @see #getIn1_features()
+	 * @generated
+	 */
+	void setIn1_features(int value);
+
+	/**
+	 * Returns the value of the '<em><b>In2 features</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>In2 features</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>In2 features</em>' attribute.
+	 * @see #setIn2_features(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage#getBilinear_In2_features()
+	 * @model dataType="org.eclipse.uml2.types.Integer" required="true" ordered="false"
+	 * @generated
+	 */
+	int getIn2_features();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Bilinear#getIn2_features <em>In2 features</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>In2 features</em>' attribute.
+	 * @see #getIn2_features()
+	 * @generated
+	 */
+	void setIn2_features(int value);
+
+} // Bilinear
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/Identity.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/Identity.java
new file mode 100644
index 0000000..0b01802
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/Identity.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Linear_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Identity</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage#getIdentity()
+ * @model
+ * @generated
+ */
+public interface Identity extends Linear_layers {
+} // Identity
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/Linear.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/Linear.java
new file mode 100644
index 0000000..1b74378
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/Linear.java
@@ -0,0 +1,139 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Linear_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Linear</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear#getIn_features <em>In features</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear#getActivation <em>Activation</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear#getKernel_initializer <em>Kernel initializer</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear#getBias_initializer <em>Bias initializer</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage#getLinear()
+ * @model
+ * @generated
+ */
+public interface Linear extends Linear_layers_1 {
+	/**
+	 * Returns the value of the '<em><b>In features</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>In features</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>In features</em>' attribute.
+	 * @see #setIn_features(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage#getLinear_In_features()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	int getIn_features();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear#getIn_features <em>In features</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>In features</em>' attribute.
+	 * @see #getIn_features()
+	 * @generated
+	 */
+	void setIn_features(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Activation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Activation</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Activation</em>' attribute.
+	 * @see #setActivation(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage#getLinear_Activation()
+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+	 * @generated
+	 */
+	String getActivation();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear#getActivation <em>Activation</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Activation</em>' attribute.
+	 * @see #getActivation()
+	 * @generated
+	 */
+	void setActivation(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Kernel initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Kernel initializer</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Kernel initializer</em>' attribute.
+	 * @see #setKernel_initializer(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage#getLinear_Kernel_initializer()
+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+	 * @generated
+	 */
+	String getKernel_initializer();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear#getKernel_initializer <em>Kernel initializer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Kernel initializer</em>' attribute.
+	 * @see #getKernel_initializer()
+	 * @generated
+	 */
+	void setKernel_initializer(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Bias initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Bias initializer</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Bias initializer</em>' attribute.
+	 * @see #setBias_initializer(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage#getLinear_Bias_initializer()
+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+	 * @generated
+	 */
+	String getBias_initializer();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear#getBias_initializer <em>Bias initializer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Bias initializer</em>' attribute.
+	 * @see #getBias_initializer()
+	 * @generated
+	 */
+	void setBias_initializer(String value);
+
+} // Linear
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/Linear_layers.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/Linear_layers.java
new file mode 100644
index 0000000..f45c99d
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/Linear_layers.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Linear_layers;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Linear layers</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage#getLinear_layers()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Linear_layers extends Model {
+} // Linear_layers
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/Linear_layersFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/Linear_layersFactory.java
new file mode 100644
index 0000000..2c63d18
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/Linear_layersFactory.java
@@ -0,0 +1,69 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Linear_layers;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage
+ * @generated
+ */
+public interface Linear_layersFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	Linear_layersFactory eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Identity</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Identity</em>'.
+	 * @generated
+	 */
+	Identity createIdentity();
+
+	/**
+	 * Returns a new object of class '<em>Linear</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Linear</em>'.
+	 * @generated
+	 */
+	Linear createLinear();
+
+	/**
+	 * Returns a new object of class '<em>Bilinear</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Bilinear</em>'.
+	 * @generated
+	 */
+	Bilinear createBilinear();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	Linear_layersPackage getLinear_layersPackage();
+
+} //Linear_layersFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/Linear_layersPackage.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/Linear_layersPackage.java
new file mode 100644
index 0000000..f9f33cd
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/Linear_layersPackage.java
@@ -0,0 +1,910 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Linear_layers;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface Linear_layersPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "Linear_layers"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://www.eclipse.org/papyrus/AIML/linear/1"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "AIML.Linear_layers"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	Linear_layersPackage eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersImpl <em>Linear layers</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersPackageImpl#getLinear_layers()
+	 * @generated
+	 */
+	int LINEAR_LAYERS = 0;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR_LAYERS__BASE_CLASS = ModulePackage.MODEL__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR_LAYERS__NAME = ModulePackage.MODEL__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR_LAYERS__DATA = ModulePackage.MODEL__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR_LAYERS__REQUIRES_GRAD = ModulePackage.MODEL__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR_LAYERS__SUB_MODULE = ModulePackage.MODEL__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR_LAYERS__OPTIMIZER = ModulePackage.MODEL__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR_LAYERS__LOSS = ModulePackage.MODEL__LOSS;
+
+	/**
+	 * The number of structural features of the '<em>Linear layers</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR_LAYERS_FEATURE_COUNT = ModulePackage.MODEL_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Linear layers</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR_LAYERS_OPERATION_COUNT = ModulePackage.MODEL_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.IdentityImpl <em>Identity</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.IdentityImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersPackageImpl#getIdentity()
+	 * @generated
+	 */
+	int IDENTITY = 1;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IDENTITY__BASE_CLASS = LINEAR_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IDENTITY__NAME = LINEAR_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IDENTITY__DATA = LINEAR_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IDENTITY__REQUIRES_GRAD = LINEAR_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IDENTITY__SUB_MODULE = LINEAR_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IDENTITY__OPTIMIZER = LINEAR_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IDENTITY__LOSS = LINEAR_LAYERS__LOSS;
+
+	/**
+	 * The number of structural features of the '<em>Identity</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IDENTITY_FEATURE_COUNT = LINEAR_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Identity</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int IDENTITY_OPERATION_COUNT = LINEAR_LAYERS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layers_1Impl <em>Linear layers 1</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layers_1Impl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersPackageImpl#getLinear_layers_1()
+	 * @generated
+	 */
+	int LINEAR_LAYERS_1 = 2;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR_LAYERS_1__BASE_CLASS = LINEAR_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR_LAYERS_1__NAME = LINEAR_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR_LAYERS_1__DATA = LINEAR_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR_LAYERS_1__REQUIRES_GRAD = LINEAR_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR_LAYERS_1__SUB_MODULE = LINEAR_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR_LAYERS_1__OPTIMIZER = LINEAR_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR_LAYERS_1__LOSS = LINEAR_LAYERS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Out features</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR_LAYERS_1__OUT_FEATURES = LINEAR_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Bias</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR_LAYERS_1__BIAS = LINEAR_LAYERS_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Linear layers 1</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR_LAYERS_1_FEATURE_COUNT = LINEAR_LAYERS_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Linear layers 1</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR_LAYERS_1_OPERATION_COUNT = LINEAR_LAYERS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.LinearImpl <em>Linear</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.LinearImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersPackageImpl#getLinear()
+	 * @generated
+	 */
+	int LINEAR = 3;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR__BASE_CLASS = LINEAR_LAYERS_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR__NAME = LINEAR_LAYERS_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR__DATA = LINEAR_LAYERS_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR__REQUIRES_GRAD = LINEAR_LAYERS_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR__SUB_MODULE = LINEAR_LAYERS_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR__OPTIMIZER = LINEAR_LAYERS_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR__LOSS = LINEAR_LAYERS_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Out features</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR__OUT_FEATURES = LINEAR_LAYERS_1__OUT_FEATURES;
+
+	/**
+	 * The feature id for the '<em><b>Bias</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR__BIAS = LINEAR_LAYERS_1__BIAS;
+
+	/**
+	 * The feature id for the '<em><b>In features</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR__IN_FEATURES = LINEAR_LAYERS_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Activation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR__ACTIVATION = LINEAR_LAYERS_1_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Kernel initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR__KERNEL_INITIALIZER = LINEAR_LAYERS_1_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Bias initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR__BIAS_INITIALIZER = LINEAR_LAYERS_1_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the '<em>Linear</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR_FEATURE_COUNT = LINEAR_LAYERS_1_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of operations of the '<em>Linear</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LINEAR_OPERATION_COUNT = LINEAR_LAYERS_1_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.BilinearImpl <em>Bilinear</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.BilinearImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersPackageImpl#getBilinear()
+	 * @generated
+	 */
+	int BILINEAR = 4;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BILINEAR__BASE_CLASS = LINEAR_LAYERS_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BILINEAR__NAME = LINEAR_LAYERS_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BILINEAR__DATA = LINEAR_LAYERS_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BILINEAR__REQUIRES_GRAD = LINEAR_LAYERS_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BILINEAR__SUB_MODULE = LINEAR_LAYERS_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BILINEAR__OPTIMIZER = LINEAR_LAYERS_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BILINEAR__LOSS = LINEAR_LAYERS_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Out features</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BILINEAR__OUT_FEATURES = LINEAR_LAYERS_1__OUT_FEATURES;
+
+	/**
+	 * The feature id for the '<em><b>Bias</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BILINEAR__BIAS = LINEAR_LAYERS_1__BIAS;
+
+	/**
+	 * The feature id for the '<em><b>In1 features</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BILINEAR__IN1_FEATURES = LINEAR_LAYERS_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>In2 features</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BILINEAR__IN2_FEATURES = LINEAR_LAYERS_1_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Bilinear</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BILINEAR_FEATURE_COUNT = LINEAR_LAYERS_1_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Bilinear</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BILINEAR_OPERATION_COUNT = LINEAR_LAYERS_1_OPERATION_COUNT + 0;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layers <em>Linear layers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Linear layers</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layers
+	 * @generated
+	 */
+	EClass getLinear_layers();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Identity <em>Identity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Identity</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Identity
+	 * @generated
+	 */
+	EClass getIdentity();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layers_1 <em>Linear layers 1</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Linear layers 1</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layers_1
+	 * @generated
+	 */
+	EClass getLinear_layers_1();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layers_1#getOut_features <em>Out features</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Out features</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layers_1#getOut_features()
+	 * @see #getLinear_layers_1()
+	 * @generated
+	 */
+	EAttribute getLinear_layers_1_Out_features();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layers_1#isBias <em>Bias</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Bias</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layers_1#isBias()
+	 * @see #getLinear_layers_1()
+	 * @generated
+	 */
+	EAttribute getLinear_layers_1_Bias();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear <em>Linear</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Linear</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear
+	 * @generated
+	 */
+	EClass getLinear();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear#getIn_features <em>In features</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>In features</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear#getIn_features()
+	 * @see #getLinear()
+	 * @generated
+	 */
+	EAttribute getLinear_In_features();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear#getActivation <em>Activation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Activation</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear#getActivation()
+	 * @see #getLinear()
+	 * @generated
+	 */
+	EAttribute getLinear_Activation();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear#getKernel_initializer <em>Kernel initializer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Kernel initializer</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear#getKernel_initializer()
+	 * @see #getLinear()
+	 * @generated
+	 */
+	EAttribute getLinear_Kernel_initializer();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear#getBias_initializer <em>Bias initializer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Bias initializer</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear#getBias_initializer()
+	 * @see #getLinear()
+	 * @generated
+	 */
+	EAttribute getLinear_Bias_initializer();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Bilinear <em>Bilinear</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Bilinear</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Bilinear
+	 * @generated
+	 */
+	EClass getBilinear();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Bilinear#getIn1_features <em>In1 features</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>In1 features</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Bilinear#getIn1_features()
+	 * @see #getBilinear()
+	 * @generated
+	 */
+	EAttribute getBilinear_In1_features();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Bilinear#getIn2_features <em>In2 features</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>In2 features</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Bilinear#getIn2_features()
+	 * @see #getBilinear()
+	 * @generated
+	 */
+	EAttribute getBilinear_In2_features();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	Linear_layersFactory getLinear_layersFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersImpl <em>Linear layers</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersPackageImpl#getLinear_layers()
+		 * @generated
+		 */
+		EClass LINEAR_LAYERS = eINSTANCE.getLinear_layers();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.IdentityImpl <em>Identity</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.IdentityImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersPackageImpl#getIdentity()
+		 * @generated
+		 */
+		EClass IDENTITY = eINSTANCE.getIdentity();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layers_1Impl <em>Linear layers 1</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layers_1Impl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersPackageImpl#getLinear_layers_1()
+		 * @generated
+		 */
+		EClass LINEAR_LAYERS_1 = eINSTANCE.getLinear_layers_1();
+
+		/**
+		 * The meta object literal for the '<em><b>Out features</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LINEAR_LAYERS_1__OUT_FEATURES = eINSTANCE.getLinear_layers_1_Out_features();
+
+		/**
+		 * The meta object literal for the '<em><b>Bias</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LINEAR_LAYERS_1__BIAS = eINSTANCE.getLinear_layers_1_Bias();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.LinearImpl <em>Linear</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.LinearImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersPackageImpl#getLinear()
+		 * @generated
+		 */
+		EClass LINEAR = eINSTANCE.getLinear();
+
+		/**
+		 * The meta object literal for the '<em><b>In features</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LINEAR__IN_FEATURES = eINSTANCE.getLinear_In_features();
+
+		/**
+		 * The meta object literal for the '<em><b>Activation</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LINEAR__ACTIVATION = eINSTANCE.getLinear_Activation();
+
+		/**
+		 * The meta object literal for the '<em><b>Kernel initializer</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LINEAR__KERNEL_INITIALIZER = eINSTANCE.getLinear_Kernel_initializer();
+
+		/**
+		 * The meta object literal for the '<em><b>Bias initializer</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LINEAR__BIAS_INITIALIZER = eINSTANCE.getLinear_Bias_initializer();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.BilinearImpl <em>Bilinear</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.BilinearImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersPackageImpl#getBilinear()
+		 * @generated
+		 */
+		EClass BILINEAR = eINSTANCE.getBilinear();
+
+		/**
+		 * The meta object literal for the '<em><b>In1 features</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute BILINEAR__IN1_FEATURES = eINSTANCE.getBilinear_In1_features();
+
+		/**
+		 * The meta object literal for the '<em><b>In2 features</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute BILINEAR__IN2_FEATURES = eINSTANCE.getBilinear_In2_features();
+
+	}
+
+} //Linear_layersPackage
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/Linear_layers_1.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/Linear_layers_1.java
new file mode 100644
index 0000000..7a4ec71
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/Linear_layers_1.java
@@ -0,0 +1,85 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Linear_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Linear layers 1</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layers_1#getOut_features <em>Out features</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layers_1#isBias <em>Bias</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage#getLinear_layers_1()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Linear_layers_1 extends Linear_layers {
+	/**
+	 * Returns the value of the '<em><b>Out features</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Out features</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Out features</em>' attribute.
+	 * @see #setOut_features(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage#getLinear_layers_1_Out_features()
+	 * @model dataType="org.eclipse.uml2.types.Integer" required="true" ordered="false"
+	 * @generated
+	 */
+	int getOut_features();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layers_1#getOut_features <em>Out features</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Out features</em>' attribute.
+	 * @see #getOut_features()
+	 * @generated
+	 */
+	void setOut_features(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Bias</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Bias</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Bias</em>' attribute.
+	 * @see #setBias(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage#getLinear_layers_1_Bias()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isBias();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layers_1#isBias <em>Bias</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Bias</em>' attribute.
+	 * @see #isBias()
+	 * @generated
+	 */
+	void setBias(boolean value);
+
+} // Linear_layers_1
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/impl/BilinearImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/impl/BilinearImpl.java
new file mode 100644
index 0000000..a57b91b
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/impl/BilinearImpl.java
@@ -0,0 +1,229 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Bilinear;
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Bilinear</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.BilinearImpl#getIn1_features <em>In1 features</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.BilinearImpl#getIn2_features <em>In2 features</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class BilinearImpl extends Linear_layers_1Impl implements Bilinear {
+	/**
+	 * The default value of the '{@link #getIn1_features() <em>In1 features</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIn1_features()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int IN1_FEATURES_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getIn1_features() <em>In1 features</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIn1_features()
+	 * @generated
+	 * @ordered
+	 */
+	protected int in1_features = IN1_FEATURES_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getIn2_features() <em>In2 features</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIn2_features()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int IN2_FEATURES_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getIn2_features() <em>In2 features</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIn2_features()
+	 * @generated
+	 * @ordered
+	 */
+	protected int in2_features = IN2_FEATURES_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected BilinearImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Linear_layersPackage.Literals.BILINEAR;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getIn1_features() {
+		return in1_features;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setIn1_features(int newIn1_features) {
+		int oldIn1_features = in1_features;
+		in1_features = newIn1_features;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Linear_layersPackage.BILINEAR__IN1_FEATURES, oldIn1_features, in1_features));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getIn2_features() {
+		return in2_features;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setIn2_features(int newIn2_features) {
+		int oldIn2_features = in2_features;
+		in2_features = newIn2_features;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Linear_layersPackage.BILINEAR__IN2_FEATURES, oldIn2_features, in2_features));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Linear_layersPackage.BILINEAR__IN1_FEATURES:
+				return getIn1_features();
+			case Linear_layersPackage.BILINEAR__IN2_FEATURES:
+				return getIn2_features();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Linear_layersPackage.BILINEAR__IN1_FEATURES:
+				setIn1_features((Integer)newValue);
+				return;
+			case Linear_layersPackage.BILINEAR__IN2_FEATURES:
+				setIn2_features((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Linear_layersPackage.BILINEAR__IN1_FEATURES:
+				setIn1_features(IN1_FEATURES_EDEFAULT);
+				return;
+			case Linear_layersPackage.BILINEAR__IN2_FEATURES:
+				setIn2_features(IN2_FEATURES_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Linear_layersPackage.BILINEAR__IN1_FEATURES:
+				return in1_features != IN1_FEATURES_EDEFAULT;
+			case Linear_layersPackage.BILINEAR__IN2_FEATURES:
+				return in2_features != IN2_FEATURES_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (in1_features: "); //$NON-NLS-1$
+		result.append(in1_features);
+		result.append(", in2_features: "); //$NON-NLS-1$
+		result.append(in2_features);
+		result.append(')');
+		return result.toString();
+	}
+
+} //BilinearImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/impl/IdentityImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/impl/IdentityImpl.java
new file mode 100644
index 0000000..62f2cda
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/impl/IdentityImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Identity;
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Identity</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class IdentityImpl extends Linear_layersImpl implements Identity {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected IdentityImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Linear_layersPackage.Literals.IDENTITY;
+	}
+
+} //IdentityImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/impl/LinearImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/impl/LinearImpl.java
new file mode 100644
index 0000000..3760b67
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/impl/LinearImpl.java
@@ -0,0 +1,341 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear;
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Linear</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.LinearImpl#getIn_features <em>In features</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.LinearImpl#getActivation <em>Activation</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.LinearImpl#getKernel_initializer <em>Kernel initializer</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.LinearImpl#getBias_initializer <em>Bias initializer</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class LinearImpl extends Linear_layers_1Impl implements Linear {
+	/**
+	 * The default value of the '{@link #getIn_features() <em>In features</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIn_features()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int IN_FEATURES_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getIn_features() <em>In features</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIn_features()
+	 * @generated
+	 * @ordered
+	 */
+	protected int in_features = IN_FEATURES_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getActivation() <em>Activation</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getActivation()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ACTIVATION_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getActivation() <em>Activation</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getActivation()
+	 * @generated
+	 * @ordered
+	 */
+	protected String activation = ACTIVATION_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getKernel_initializer() <em>Kernel initializer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKernel_initializer()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String KERNEL_INITIALIZER_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getKernel_initializer() <em>Kernel initializer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKernel_initializer()
+	 * @generated
+	 * @ordered
+	 */
+	protected String kernel_initializer = KERNEL_INITIALIZER_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getBias_initializer() <em>Bias initializer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBias_initializer()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String BIAS_INITIALIZER_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getBias_initializer() <em>Bias initializer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBias_initializer()
+	 * @generated
+	 * @ordered
+	 */
+	protected String bias_initializer = BIAS_INITIALIZER_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LinearImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Linear_layersPackage.Literals.LINEAR;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getIn_features() {
+		return in_features;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setIn_features(int newIn_features) {
+		int oldIn_features = in_features;
+		in_features = newIn_features;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Linear_layersPackage.LINEAR__IN_FEATURES, oldIn_features, in_features));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getActivation() {
+		return activation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setActivation(String newActivation) {
+		String oldActivation = activation;
+		activation = newActivation;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Linear_layersPackage.LINEAR__ACTIVATION, oldActivation, activation));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getKernel_initializer() {
+		return kernel_initializer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setKernel_initializer(String newKernel_initializer) {
+		String oldKernel_initializer = kernel_initializer;
+		kernel_initializer = newKernel_initializer;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Linear_layersPackage.LINEAR__KERNEL_INITIALIZER, oldKernel_initializer, kernel_initializer));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getBias_initializer() {
+		return bias_initializer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBias_initializer(String newBias_initializer) {
+		String oldBias_initializer = bias_initializer;
+		bias_initializer = newBias_initializer;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Linear_layersPackage.LINEAR__BIAS_INITIALIZER, oldBias_initializer, bias_initializer));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Linear_layersPackage.LINEAR__IN_FEATURES:
+				return getIn_features();
+			case Linear_layersPackage.LINEAR__ACTIVATION:
+				return getActivation();
+			case Linear_layersPackage.LINEAR__KERNEL_INITIALIZER:
+				return getKernel_initializer();
+			case Linear_layersPackage.LINEAR__BIAS_INITIALIZER:
+				return getBias_initializer();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Linear_layersPackage.LINEAR__IN_FEATURES:
+				setIn_features((Integer)newValue);
+				return;
+			case Linear_layersPackage.LINEAR__ACTIVATION:
+				setActivation((String)newValue);
+				return;
+			case Linear_layersPackage.LINEAR__KERNEL_INITIALIZER:
+				setKernel_initializer((String)newValue);
+				return;
+			case Linear_layersPackage.LINEAR__BIAS_INITIALIZER:
+				setBias_initializer((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Linear_layersPackage.LINEAR__IN_FEATURES:
+				setIn_features(IN_FEATURES_EDEFAULT);
+				return;
+			case Linear_layersPackage.LINEAR__ACTIVATION:
+				setActivation(ACTIVATION_EDEFAULT);
+				return;
+			case Linear_layersPackage.LINEAR__KERNEL_INITIALIZER:
+				setKernel_initializer(KERNEL_INITIALIZER_EDEFAULT);
+				return;
+			case Linear_layersPackage.LINEAR__BIAS_INITIALIZER:
+				setBias_initializer(BIAS_INITIALIZER_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Linear_layersPackage.LINEAR__IN_FEATURES:
+				return in_features != IN_FEATURES_EDEFAULT;
+			case Linear_layersPackage.LINEAR__ACTIVATION:
+				return ACTIVATION_EDEFAULT == null ? activation != null : !ACTIVATION_EDEFAULT.equals(activation);
+			case Linear_layersPackage.LINEAR__KERNEL_INITIALIZER:
+				return KERNEL_INITIALIZER_EDEFAULT == null ? kernel_initializer != null : !KERNEL_INITIALIZER_EDEFAULT.equals(kernel_initializer);
+			case Linear_layersPackage.LINEAR__BIAS_INITIALIZER:
+				return BIAS_INITIALIZER_EDEFAULT == null ? bias_initializer != null : !BIAS_INITIALIZER_EDEFAULT.equals(bias_initializer);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (in_features: "); //$NON-NLS-1$
+		result.append(in_features);
+		result.append(", activation: "); //$NON-NLS-1$
+		result.append(activation);
+		result.append(", kernel_initializer: "); //$NON-NLS-1$
+		result.append(kernel_initializer);
+		result.append(", bias_initializer: "); //$NON-NLS-1$
+		result.append(bias_initializer);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LinearImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/impl/Linear_layersFactoryImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/impl/Linear_layersFactoryImpl.java
new file mode 100644
index 0000000..ff946d3
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/impl/Linear_layersFactoryImpl.java
@@ -0,0 +1,130 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class Linear_layersFactoryImpl extends EFactoryImpl implements Linear_layersFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static Linear_layersFactory init() {
+		try {
+			Linear_layersFactory theLinear_layersFactory = (Linear_layersFactory)EPackage.Registry.INSTANCE.getEFactory(Linear_layersPackage.eNS_URI);
+			if (theLinear_layersFactory != null) {
+				return theLinear_layersFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new Linear_layersFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Linear_layersFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case Linear_layersPackage.IDENTITY: return createIdentity();
+			case Linear_layersPackage.LINEAR: return createLinear();
+			case Linear_layersPackage.BILINEAR: return createBilinear();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Identity createIdentity() {
+		IdentityImpl identity = new IdentityImpl();
+		return identity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Linear createLinear() {
+		LinearImpl linear = new LinearImpl();
+		return linear;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Bilinear createBilinear() {
+		BilinearImpl bilinear = new BilinearImpl();
+		return bilinear;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Linear_layersPackage getLinear_layersPackage() {
+		return (Linear_layersPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static Linear_layersPackage getPackage() {
+		return Linear_layersPackage.eINSTANCE;
+	}
+
+} //Linear_layersFactoryImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/impl/Linear_layersImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/impl/Linear_layersImpl.java
new file mode 100644
index 0000000..5bdfd96
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/impl/Linear_layersImpl.java
@@ -0,0 +1,47 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layers;
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModelImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Linear layers</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public abstract class Linear_layersImpl extends ModelImpl implements Linear_layers {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Linear_layersImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Linear_layersPackage.Literals.LINEAR_LAYERS;
+	}
+
+} //Linear_layersImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/impl/Linear_layersPackageImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/impl/Linear_layersPackageImpl.java
new file mode 100644
index 0000000..747b643
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/impl/Linear_layersPackageImpl.java
@@ -0,0 +1,547 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.AIMLPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.Layer_weight_regularizersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Bilinear;
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Identity;
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear;
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layers;
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersFactory;
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layers_1;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModulePackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.DatatypesPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl.DatatypesPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.impl.AIMLPackageImpl;
+
+import org.eclipse.uml2.types.TypesPackage;
+
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class Linear_layersPackageImpl extends EPackageImpl implements Linear_layersPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass linear_layersEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass identityEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass linear_layers_1EClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass linearEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass bilinearEClass = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private Linear_layersPackageImpl() {
+		super(eNS_URI, Linear_layersFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>This method is used to initialize {@link Linear_layersPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static Linear_layersPackage init() {
+		if (isInited) return (Linear_layersPackage)EPackage.Registry.INSTANCE.getEPackage(Linear_layersPackage.eNS_URI);
+
+		// Obtain or create and register package
+		Object registeredLinear_layersPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		Linear_layersPackageImpl theLinear_layersPackage = registeredLinear_layersPackage instanceof Linear_layersPackageImpl ? (Linear_layersPackageImpl)registeredLinear_layersPackage : new Linear_layersPackageImpl();
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		EcorePackage.eINSTANCE.eClass();
+		TypesPackage.eINSTANCE.eClass();
+		UMLPackage.eINSTANCE.eClass();
+
+		// Obtain or create and register interdependencies
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AIMLPackage.eNS_URI);
+		AIMLPackageImpl theAIMLPackage = (AIMLPackageImpl)(registeredPackage instanceof AIMLPackageImpl ? registeredPackage : AIMLPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		ModulePackageImpl theModulePackage = (ModulePackageImpl)(registeredPackage instanceof ModulePackageImpl ? registeredPackage : ModulePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(TensorPackage.eNS_URI);
+		TensorPackageImpl theTensorPackage = (TensorPackageImpl)(registeredPackage instanceof TensorPackageImpl ? registeredPackage : TensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DatatypesPackage.eNS_URI);
+		DatatypesPackageImpl theDatatypesPackage = (DatatypesPackageImpl)(registeredPackage instanceof DatatypesPackageImpl ? registeredPackage : DatatypesPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Pooling_layersPackage.eNS_URI);
+		Pooling_layersPackageImpl thePooling_layersPackage = (Pooling_layersPackageImpl)(registeredPackage instanceof Pooling_layersPackageImpl ? registeredPackage : Pooling_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Convolution_layersPackage.eNS_URI);
+		Convolution_layersPackageImpl theConvolution_layersPackage = (Convolution_layersPackageImpl)(registeredPackage instanceof Convolution_layersPackageImpl ? registeredPackage : Convolution_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_constraintsPackage.eNS_URI);
+		Layer_weight_constraintsPackageImpl theLayer_weight_constraintsPackage = (Layer_weight_constraintsPackageImpl)(registeredPackage instanceof Layer_weight_constraintsPackageImpl ? registeredPackage : Layer_weight_constraintsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Padding_layersPackage.eNS_URI);
+		Padding_layersPackageImpl thePadding_layersPackage = (Padding_layersPackageImpl)(registeredPackage instanceof Padding_layersPackageImpl ? registeredPackage : Padding_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NonLinearActivationsPackage.eNS_URI);
+		NonLinearActivationsPackageImpl theNonLinearActivationsPackage = (NonLinearActivationsPackageImpl)(registeredPackage instanceof NonLinearActivationsPackageImpl ? registeredPackage : NonLinearActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftMinMaxActivationsPackage.eNS_URI);
+		SoftMinMaxActivationsPackageImpl theSoftMinMaxActivationsPackage = (SoftMinMaxActivationsPackageImpl)(registeredPackage instanceof SoftMinMaxActivationsPackageImpl ? registeredPackage : SoftMinMaxActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Normalization_layersPackage.eNS_URI);
+		Normalization_layersPackageImpl theNormalization_layersPackage = (Normalization_layersPackageImpl)(registeredPackage instanceof Normalization_layersPackageImpl ? registeredPackage : Normalization_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Recurrent_layersPackage.eNS_URI);
+		Recurrent_layersPackageImpl theRecurrent_layersPackage = (Recurrent_layersPackageImpl)(registeredPackage instanceof Recurrent_layersPackageImpl ? registeredPackage : Recurrent_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Transformer_layersPackage.eNS_URI);
+		Transformer_layersPackageImpl theTransformer_layersPackage = (Transformer_layersPackageImpl)(registeredPackage instanceof Transformer_layersPackageImpl ? registeredPackage : Transformer_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Dropout_layersPackage.eNS_URI);
+		Dropout_layersPackageImpl theDropout_layersPackage = (Dropout_layersPackageImpl)(registeredPackage instanceof Dropout_layersPackageImpl ? registeredPackage : Dropout_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Sparse_layersPackage.eNS_URI);
+		Sparse_layersPackageImpl theSparse_layersPackage = (Sparse_layersPackageImpl)(registeredPackage instanceof Sparse_layersPackageImpl ? registeredPackage : Sparse_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Distance_functionsPackage.eNS_URI);
+		Distance_functionsPackageImpl theDistance_functionsPackage = (Distance_functionsPackageImpl)(registeredPackage instanceof Distance_functionsPackageImpl ? registeredPackage : Distance_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Loss_functionsPackage.eNS_URI);
+		Loss_functionsPackageImpl theLoss_functionsPackage = (Loss_functionsPackageImpl)(registeredPackage instanceof Loss_functionsPackageImpl ? registeredPackage : Loss_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Vision_layersPackage.eNS_URI);
+		Vision_layersPackageImpl theVision_layersPackage = (Vision_layersPackageImpl)(registeredPackage instanceof Vision_layersPackageImpl ? registeredPackage : Vision_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DataParallel_layersPackage.eNS_URI);
+		DataParallel_layersPackageImpl theDataParallel_layersPackage = (DataParallel_layersPackageImpl)(registeredPackage instanceof DataParallel_layersPackageImpl ? registeredPackage : DataParallel_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_regularizersPackage.eNS_URI);
+		Layer_weight_regularizersPackageImpl theLayer_weight_regularizersPackage = (Layer_weight_regularizersPackageImpl)(registeredPackage instanceof Layer_weight_regularizersPackageImpl ? registeredPackage : Layer_weight_regularizersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_initializersPackage.eNS_URI);
+		Layer_weight_initializersPackageImpl theLayer_weight_initializersPackage = (Layer_weight_initializersPackageImpl)(registeredPackage instanceof Layer_weight_initializersPackageImpl ? registeredPackage : Layer_weight_initializersPackage.eINSTANCE);
+
+		// Create package meta-data objects
+		theLinear_layersPackage.createPackageContents();
+		theAIMLPackage.createPackageContents();
+		theModulePackage.createPackageContents();
+		theTensorPackage.createPackageContents();
+		theDatatypesPackage.createPackageContents();
+		thePooling_layersPackage.createPackageContents();
+		theConvolution_layersPackage.createPackageContents();
+		theLayer_weight_constraintsPackage.createPackageContents();
+		thePadding_layersPackage.createPackageContents();
+		theNonLinearActivationsPackage.createPackageContents();
+		theSoftMinMaxActivationsPackage.createPackageContents();
+		theNormalization_layersPackage.createPackageContents();
+		theRecurrent_layersPackage.createPackageContents();
+		theTransformer_layersPackage.createPackageContents();
+		theDropout_layersPackage.createPackageContents();
+		theSparse_layersPackage.createPackageContents();
+		theDistance_functionsPackage.createPackageContents();
+		theLoss_functionsPackage.createPackageContents();
+		theVision_layersPackage.createPackageContents();
+		theDataParallel_layersPackage.createPackageContents();
+		theLayer_weight_regularizersPackage.createPackageContents();
+		theLayer_weight_initializersPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theLinear_layersPackage.initializePackageContents();
+		theAIMLPackage.initializePackageContents();
+		theModulePackage.initializePackageContents();
+		theTensorPackage.initializePackageContents();
+		theDatatypesPackage.initializePackageContents();
+		thePooling_layersPackage.initializePackageContents();
+		theConvolution_layersPackage.initializePackageContents();
+		theLayer_weight_constraintsPackage.initializePackageContents();
+		thePadding_layersPackage.initializePackageContents();
+		theNonLinearActivationsPackage.initializePackageContents();
+		theSoftMinMaxActivationsPackage.initializePackageContents();
+		theNormalization_layersPackage.initializePackageContents();
+		theRecurrent_layersPackage.initializePackageContents();
+		theTransformer_layersPackage.initializePackageContents();
+		theDropout_layersPackage.initializePackageContents();
+		theSparse_layersPackage.initializePackageContents();
+		theDistance_functionsPackage.initializePackageContents();
+		theLoss_functionsPackage.initializePackageContents();
+		theVision_layersPackage.initializePackageContents();
+		theDataParallel_layersPackage.initializePackageContents();
+		theLayer_weight_regularizersPackage.initializePackageContents();
+		theLayer_weight_initializersPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theLinear_layersPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(Linear_layersPackage.eNS_URI, theLinear_layersPackage);
+		return theLinear_layersPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getLinear_layers() {
+		return linear_layersEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getIdentity() {
+		return identityEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getLinear_layers_1() {
+		return linear_layers_1EClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLinear_layers_1_Out_features() {
+		return (EAttribute)linear_layers_1EClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLinear_layers_1_Bias() {
+		return (EAttribute)linear_layers_1EClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getLinear() {
+		return linearEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLinear_In_features() {
+		return (EAttribute)linearEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLinear_Activation() {
+		return (EAttribute)linearEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLinear_Kernel_initializer() {
+		return (EAttribute)linearEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLinear_Bias_initializer() {
+		return (EAttribute)linearEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getBilinear() {
+		return bilinearEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getBilinear_In1_features() {
+		return (EAttribute)bilinearEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getBilinear_In2_features() {
+		return (EAttribute)bilinearEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Linear_layersFactory getLinear_layersFactory() {
+		return (Linear_layersFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		linear_layersEClass = createEClass(LINEAR_LAYERS);
+
+		identityEClass = createEClass(IDENTITY);
+
+		linear_layers_1EClass = createEClass(LINEAR_LAYERS_1);
+		createEAttribute(linear_layers_1EClass, LINEAR_LAYERS_1__OUT_FEATURES);
+		createEAttribute(linear_layers_1EClass, LINEAR_LAYERS_1__BIAS);
+
+		linearEClass = createEClass(LINEAR);
+		createEAttribute(linearEClass, LINEAR__IN_FEATURES);
+		createEAttribute(linearEClass, LINEAR__ACTIVATION);
+		createEAttribute(linearEClass, LINEAR__KERNEL_INITIALIZER);
+		createEAttribute(linearEClass, LINEAR__BIAS_INITIALIZER);
+
+		bilinearEClass = createEClass(BILINEAR);
+		createEAttribute(bilinearEClass, BILINEAR__IN1_FEATURES);
+		createEAttribute(bilinearEClass, BILINEAR__IN2_FEATURES);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		ModulePackage theModulePackage = (ModulePackage)EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		linear_layersEClass.getESuperTypes().add(theModulePackage.getModel());
+		identityEClass.getESuperTypes().add(this.getLinear_layers());
+		linear_layers_1EClass.getESuperTypes().add(this.getLinear_layers());
+		linearEClass.getESuperTypes().add(this.getLinear_layers_1());
+		bilinearEClass.getESuperTypes().add(this.getLinear_layers_1());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(linear_layersEClass, Linear_layers.class, "Linear_layers", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(identityEClass, Identity.class, "Identity", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(linear_layers_1EClass, Linear_layers_1.class, "Linear_layers_1", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getLinear_layers_1_Out_features(), theTypesPackage.getInteger(), "out_features", null, 1, 1, Linear_layers_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getLinear_layers_1_Bias(), theTypesPackage.getBoolean(), "bias", null, 0, 1, Linear_layers_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(linearEClass, Linear.class, "Linear", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getLinear_In_features(), theTypesPackage.getInteger(), "in_features", null, 0, 1, Linear.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getLinear_Activation(), theTypesPackage.getString(), "activation", null, 0, 1, Linear.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getLinear_Kernel_initializer(), theTypesPackage.getString(), "kernel_initializer", null, 0, 1, Linear.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getLinear_Bias_initializer(), theTypesPackage.getString(), "bias_initializer", null, 0, 1, Linear.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(bilinearEClass, Bilinear.class, "Bilinear", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getBilinear_In1_features(), theTypesPackage.getInteger(), "in1_features", null, 1, 1, Bilinear.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getBilinear_In2_features(), theTypesPackage.getInteger(), "in2_features", null, 1, 1, Bilinear.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+	}
+
+} //Linear_layersPackageImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/impl/Linear_layers_1Impl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/impl/Linear_layers_1Impl.java
new file mode 100644
index 0000000..a07819d
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/impl/Linear_layers_1Impl.java
@@ -0,0 +1,229 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layers_1;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Linear layers 1</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layers_1Impl#getOut_features <em>Out features</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layers_1Impl#isBias <em>Bias</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class Linear_layers_1Impl extends Linear_layersImpl implements Linear_layers_1 {
+	/**
+	 * The default value of the '{@link #getOut_features() <em>Out features</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOut_features()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int OUT_FEATURES_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getOut_features() <em>Out features</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOut_features()
+	 * @generated
+	 * @ordered
+	 */
+	protected int out_features = OUT_FEATURES_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isBias() <em>Bias</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isBias()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean BIAS_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isBias() <em>Bias</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isBias()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean bias = BIAS_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Linear_layers_1Impl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Linear_layersPackage.Literals.LINEAR_LAYERS_1;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getOut_features() {
+		return out_features;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setOut_features(int newOut_features) {
+		int oldOut_features = out_features;
+		out_features = newOut_features;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Linear_layersPackage.LINEAR_LAYERS_1__OUT_FEATURES, oldOut_features, out_features));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isBias() {
+		return bias;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBias(boolean newBias) {
+		boolean oldBias = bias;
+		bias = newBias;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Linear_layersPackage.LINEAR_LAYERS_1__BIAS, oldBias, bias));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Linear_layersPackage.LINEAR_LAYERS_1__OUT_FEATURES:
+				return getOut_features();
+			case Linear_layersPackage.LINEAR_LAYERS_1__BIAS:
+				return isBias();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Linear_layersPackage.LINEAR_LAYERS_1__OUT_FEATURES:
+				setOut_features((Integer)newValue);
+				return;
+			case Linear_layersPackage.LINEAR_LAYERS_1__BIAS:
+				setBias((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Linear_layersPackage.LINEAR_LAYERS_1__OUT_FEATURES:
+				setOut_features(OUT_FEATURES_EDEFAULT);
+				return;
+			case Linear_layersPackage.LINEAR_LAYERS_1__BIAS:
+				setBias(BIAS_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Linear_layersPackage.LINEAR_LAYERS_1__OUT_FEATURES:
+				return out_features != OUT_FEATURES_EDEFAULT;
+			case Linear_layersPackage.LINEAR_LAYERS_1__BIAS:
+				return bias != BIAS_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (out_features: "); //$NON-NLS-1$
+		result.append(out_features);
+		result.append(", bias: "); //$NON-NLS-1$
+		result.append(bias);
+		result.append(')');
+		return result.toString();
+	}
+
+} //Linear_layers_1Impl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/util/Linear_layersAdapterFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/util/Linear_layersAdapterFactory.java
new file mode 100644
index 0000000..d3b2272
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/util/Linear_layersAdapterFactory.java
@@ -0,0 +1,220 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.*;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage
+ * @generated
+ */
+public class Linear_layersAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static Linear_layersPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Linear_layersAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = Linear_layersPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Linear_layersSwitch<Adapter> modelSwitch =
+		new Linear_layersSwitch<Adapter>() {
+			@Override
+			public Adapter caseLinear_layers(Linear_layers object) {
+				return createLinear_layersAdapter();
+			}
+			@Override
+			public Adapter caseIdentity(Identity object) {
+				return createIdentityAdapter();
+			}
+			@Override
+			public Adapter caseLinear_layers_1(Linear_layers_1 object) {
+				return createLinear_layers_1Adapter();
+			}
+			@Override
+			public Adapter caseLinear(Linear object) {
+				return createLinearAdapter();
+			}
+			@Override
+			public Adapter caseBilinear(Bilinear object) {
+				return createBilinearAdapter();
+			}
+			@Override
+			public Adapter caseModel(Model object) {
+				return createModelAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layers <em>Linear layers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layers
+	 * @generated
+	 */
+	public Adapter createLinear_layersAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Identity <em>Identity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Identity
+	 * @generated
+	 */
+	public Adapter createIdentityAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layers_1 <em>Linear layers 1</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layers_1
+	 * @generated
+	 */
+	public Adapter createLinear_layers_1Adapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear <em>Linear</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear
+	 * @generated
+	 */
+	public Adapter createLinearAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Bilinear <em>Bilinear</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Bilinear
+	 * @generated
+	 */
+	public Adapter createBilinearAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model <em>Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.Model
+	 * @generated
+	 */
+	public Adapter createModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //Linear_layersAdapterFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/util/Linear_layersSwitch.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/util/Linear_layersSwitch.java
new file mode 100644
index 0000000..4f3e661
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Linear_layers/util/Linear_layersSwitch.java
@@ -0,0 +1,230 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.*;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage
+ * @generated
+ */
+public class Linear_layersSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static Linear_layersPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Linear_layersSwitch() {
+		if (modelPackage == null) {
+			modelPackage = Linear_layersPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case Linear_layersPackage.LINEAR_LAYERS: {
+				Linear_layers linear_layers = (Linear_layers)theEObject;
+				T result = caseLinear_layers(linear_layers);
+				if (result == null) result = caseModel(linear_layers);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Linear_layersPackage.IDENTITY: {
+				Identity identity = (Identity)theEObject;
+				T result = caseIdentity(identity);
+				if (result == null) result = caseLinear_layers(identity);
+				if (result == null) result = caseModel(identity);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Linear_layersPackage.LINEAR_LAYERS_1: {
+				Linear_layers_1 linear_layers_1 = (Linear_layers_1)theEObject;
+				T result = caseLinear_layers_1(linear_layers_1);
+				if (result == null) result = caseLinear_layers(linear_layers_1);
+				if (result == null) result = caseModel(linear_layers_1);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Linear_layersPackage.LINEAR: {
+				Linear linear = (Linear)theEObject;
+				T result = caseLinear(linear);
+				if (result == null) result = caseLinear_layers_1(linear);
+				if (result == null) result = caseLinear_layers(linear);
+				if (result == null) result = caseModel(linear);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Linear_layersPackage.BILINEAR: {
+				Bilinear bilinear = (Bilinear)theEObject;
+				T result = caseBilinear(bilinear);
+				if (result == null) result = caseLinear_layers_1(bilinear);
+				if (result == null) result = caseLinear_layers(bilinear);
+				if (result == null) result = caseModel(bilinear);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Linear layers</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Linear layers</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLinear_layers(Linear_layers object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Identity</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Identity</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseIdentity(Identity object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Linear layers 1</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Linear layers 1</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLinear_layers_1(Linear_layers_1 object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Linear</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Linear</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLinear(Linear object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Bilinear</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Bilinear</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseBilinear(Bilinear object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseModel(Model object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //Linear_layersSwitch
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/BCELoss.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/BCELoss.java
new file mode 100644
index 0000000..51f1891
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/BCELoss.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>BCE Loss</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getBCELoss()
+ * @model
+ * @generated
+ */
+public interface BCELoss extends Loss_functions_1_2 {
+} // BCELoss
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/BCEWithLogitsLoss.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/BCEWithLogitsLoss.java
new file mode 100644
index 0000000..116ef52
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/BCEWithLogitsLoss.java
@@ -0,0 +1,59 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>BCE With Logits Loss</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.BCEWithLogitsLoss#getPos_weight <em>Pos weight</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getBCEWithLogitsLoss()
+ * @model
+ * @generated
+ */
+public interface BCEWithLogitsLoss extends Loss_functions_1_2 {
+	/**
+	 * Returns the value of the '<em><b>Pos weight</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Pos weight</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Pos weight</em>' reference.
+	 * @see #setPos_weight(Tensor)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getBCEWithLogitsLoss_Pos_weight()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	Tensor getPos_weight();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.BCEWithLogitsLoss#getPos_weight <em>Pos weight</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Pos weight</em>' reference.
+	 * @see #getPos_weight()
+	 * @generated
+	 */
+	void setPos_weight(Tensor value);
+
+} // BCEWithLogitsLoss
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/CTCLoss.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/CTCLoss.java
new file mode 100644
index 0000000..2ef7c84
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/CTCLoss.java
@@ -0,0 +1,85 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>CTC Loss</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.CTCLoss#getBlank <em>Blank</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.CTCLoss#isZero_infinity <em>Zero infinity</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getCTCLoss()
+ * @model
+ * @generated
+ */
+public interface CTCLoss extends Loss_functions {
+	/**
+	 * Returns the value of the '<em><b>Blank</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Blank</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Blank</em>' attribute.
+	 * @see #setBlank(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getCTCLoss_Blank()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	int getBlank();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.CTCLoss#getBlank <em>Blank</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Blank</em>' attribute.
+	 * @see #getBlank()
+	 * @generated
+	 */
+	void setBlank(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Zero infinity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Zero infinity</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Zero infinity</em>' attribute.
+	 * @see #setZero_infinity(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getCTCLoss_Zero_infinity()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isZero_infinity();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.CTCLoss#isZero_infinity <em>Zero infinity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Zero infinity</em>' attribute.
+	 * @see #isZero_infinity()
+	 * @generated
+	 */
+	void setZero_infinity(boolean value);
+
+} // CTCLoss
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/CosineEmbeddingLoss.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/CosineEmbeddingLoss.java
new file mode 100644
index 0000000..093229c
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/CosineEmbeddingLoss.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Cosine Embedding Loss</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getCosineEmbeddingLoss()
+ * @model
+ * @generated
+ */
+public interface CosineEmbeddingLoss extends Loss_functions_1_1 {
+} // CosineEmbeddingLoss
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/CrossEntropyLoss.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/CrossEntropyLoss.java
new file mode 100644
index 0000000..512723f
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/CrossEntropyLoss.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Cross Entropy Loss</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getCrossEntropyLoss()
+ * @model
+ * @generated
+ */
+public interface CrossEntropyLoss extends Loss_functions_1_2_1 {
+} // CrossEntropyLoss
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/HingeEmbeddingLoss.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/HingeEmbeddingLoss.java
new file mode 100644
index 0000000..9af4a0c
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/HingeEmbeddingLoss.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Hinge Embedding Loss</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getHingeEmbeddingLoss()
+ * @model
+ * @generated
+ */
+public interface HingeEmbeddingLoss extends Loss_functions_1_1 {
+} // HingeEmbeddingLoss
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/KLDivLoss.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/KLDivLoss.java
new file mode 100644
index 0000000..0dfa10e
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/KLDivLoss.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>KL Div Loss</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getKLDivLoss()
+ * @model
+ * @generated
+ */
+public interface KLDivLoss extends Loss_functions_1 {
+} // KLDivLoss
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/L1Loss.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/L1Loss.java
new file mode 100644
index 0000000..ad57e4f
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/L1Loss.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>L1 Loss</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getL1Loss()
+ * @model
+ * @generated
+ */
+public interface L1Loss extends Loss_functions_1 {
+} // L1Loss
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/Loss_functions.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/Loss_functions.java
new file mode 100644
index 0000000..ccc5edc
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/Loss_functions.java
@@ -0,0 +1,59 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Loss functions</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions#getReduction <em>Reduction</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getLoss_functions()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Loss_functions extends Model {
+	/**
+	 * Returns the value of the '<em><b>Reduction</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Reduction</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Reduction</em>' attribute.
+	 * @see #setReduction(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getLoss_functions_Reduction()
+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+	 * @generated
+	 */
+	String getReduction();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions#getReduction <em>Reduction</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Reduction</em>' attribute.
+	 * @see #getReduction()
+	 * @generated
+	 */
+	void setReduction(String value);
+
+} // Loss_functions
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/Loss_functionsFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/Loss_functionsFactory.java
new file mode 100644
index 0000000..409b196
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/Loss_functionsFactory.java
@@ -0,0 +1,195 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage
+ * @generated
+ */
+public interface Loss_functionsFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	Loss_functionsFactory eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>L1 Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>L1 Loss</em>'.
+	 * @generated
+	 */
+	L1Loss createL1Loss();
+
+	/**
+	 * Returns a new object of class '<em>MSE Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>MSE Loss</em>'.
+	 * @generated
+	 */
+	MSELoss createMSELoss();
+
+	/**
+	 * Returns a new object of class '<em>CTC Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>CTC Loss</em>'.
+	 * @generated
+	 */
+	CTCLoss createCTCLoss();
+
+	/**
+	 * Returns a new object of class '<em>KL Div Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>KL Div Loss</em>'.
+	 * @generated
+	 */
+	KLDivLoss createKLDivLoss();
+
+	/**
+	 * Returns a new object of class '<em>Multi Label Margin Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Multi Label Margin Loss</em>'.
+	 * @generated
+	 */
+	MultiLabelMarginLoss createMultiLabelMarginLoss();
+
+	/**
+	 * Returns a new object of class '<em>Loss functions 11</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Loss functions 11</em>'.
+	 * @generated
+	 */
+	Loss_functions_1_1 createLoss_functions_1_1();
+
+	/**
+	 * Returns a new object of class '<em>Loss functions 12</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Loss functions 12</em>'.
+	 * @generated
+	 */
+	Loss_functions_1_2 createLoss_functions_1_2();
+
+	/**
+	 * Returns a new object of class '<em>Cosine Embedding Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Cosine Embedding Loss</em>'.
+	 * @generated
+	 */
+	CosineEmbeddingLoss createCosineEmbeddingLoss();
+
+	/**
+	 * Returns a new object of class '<em>Margin Ranking Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Margin Ranking Loss</em>'.
+	 * @generated
+	 */
+	MarginRankingLoss createMarginRankingLoss();
+
+	/**
+	 * Returns a new object of class '<em>Hinge Embedding Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Hinge Embedding Loss</em>'.
+	 * @generated
+	 */
+	HingeEmbeddingLoss createHingeEmbeddingLoss();
+
+	/**
+	 * Returns a new object of class '<em>BCE Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>BCE Loss</em>'.
+	 * @generated
+	 */
+	BCELoss createBCELoss();
+
+	/**
+	 * Returns a new object of class '<em>Multi Margin Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Multi Margin Loss</em>'.
+	 * @generated
+	 */
+	MultiMarginLoss createMultiMarginLoss();
+
+	/**
+	 * Returns a new object of class '<em>Triplet Margin Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Triplet Margin Loss</em>'.
+	 * @generated
+	 */
+	TripletMarginLoss createTripletMarginLoss();
+
+	/**
+	 * Returns a new object of class '<em>Cross Entropy Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Cross Entropy Loss</em>'.
+	 * @generated
+	 */
+	CrossEntropyLoss createCrossEntropyLoss();
+
+	/**
+	 * Returns a new object of class '<em>NLL Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>NLL Loss</em>'.
+	 * @generated
+	 */
+	NLLLoss createNLLLoss();
+
+	/**
+	 * Returns a new object of class '<em>Poisson NLL Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Poisson NLL Loss</em>'.
+	 * @generated
+	 */
+	PoissonNLLLoss createPoissonNLLLoss();
+
+	/**
+	 * Returns a new object of class '<em>BCE With Logits Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>BCE With Logits Loss</em>'.
+	 * @generated
+	 */
+	BCEWithLogitsLoss createBCEWithLogitsLoss();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	Loss_functionsPackage getLoss_functionsPackage();
+
+} //Loss_functionsFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/Loss_functionsPackage.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/Loss_functionsPackage.java
new file mode 100644
index 0000000..d84e07c
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/Loss_functionsPackage.java
@@ -0,0 +1,3495 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface Loss_functionsPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "Loss_functions"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://www.eclipse.org/papyrus/AIML/loss/1"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "AIML.Loss_functions"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	Loss_functionsPackage eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsImpl <em>Loss functions</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getLoss_functions()
+	 * @generated
+	 */
+	int LOSS_FUNCTIONS = 0;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS__BASE_CLASS = ModulePackage.MODEL__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS__NAME = ModulePackage.MODEL__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS__DATA = ModulePackage.MODEL__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS__REQUIRES_GRAD = ModulePackage.MODEL__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS__SUB_MODULE = ModulePackage.MODEL__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS__OPTIMIZER = ModulePackage.MODEL__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS__LOSS = ModulePackage.MODEL__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Reduction</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS__REDUCTION = ModulePackage.MODEL_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Loss functions</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_FEATURE_COUNT = ModulePackage.MODEL_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Loss functions</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_OPERATION_COUNT = ModulePackage.MODEL_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functions_1Impl <em>Loss functions 1</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functions_1Impl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getLoss_functions_1()
+	 * @generated
+	 */
+	int LOSS_FUNCTIONS_1 = 1;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_1__BASE_CLASS = LOSS_FUNCTIONS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_1__NAME = LOSS_FUNCTIONS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_1__DATA = LOSS_FUNCTIONS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_1__REQUIRES_GRAD = LOSS_FUNCTIONS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_1__SUB_MODULE = LOSS_FUNCTIONS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_1__OPTIMIZER = LOSS_FUNCTIONS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_1__LOSS = LOSS_FUNCTIONS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Reduction</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_1__REDUCTION = LOSS_FUNCTIONS__REDUCTION;
+
+	/**
+	 * The feature id for the '<em><b>Size average</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_1__SIZE_AVERAGE = LOSS_FUNCTIONS_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Reduce</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_1__REDUCE = LOSS_FUNCTIONS_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Loss functions 1</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_1_FEATURE_COUNT = LOSS_FUNCTIONS_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Loss functions 1</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_1_OPERATION_COUNT = LOSS_FUNCTIONS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.L1LossImpl <em>L1 Loss</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.L1LossImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getL1Loss()
+	 * @generated
+	 */
+	int L1_LOSS = 2;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int L1_LOSS__BASE_CLASS = LOSS_FUNCTIONS_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int L1_LOSS__NAME = LOSS_FUNCTIONS_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int L1_LOSS__DATA = LOSS_FUNCTIONS_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int L1_LOSS__REQUIRES_GRAD = LOSS_FUNCTIONS_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int L1_LOSS__SUB_MODULE = LOSS_FUNCTIONS_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int L1_LOSS__OPTIMIZER = LOSS_FUNCTIONS_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int L1_LOSS__LOSS = LOSS_FUNCTIONS_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Reduction</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int L1_LOSS__REDUCTION = LOSS_FUNCTIONS_1__REDUCTION;
+
+	/**
+	 * The feature id for the '<em><b>Size average</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int L1_LOSS__SIZE_AVERAGE = LOSS_FUNCTIONS_1__SIZE_AVERAGE;
+
+	/**
+	 * The feature id for the '<em><b>Reduce</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int L1_LOSS__REDUCE = LOSS_FUNCTIONS_1__REDUCE;
+
+	/**
+	 * The number of structural features of the '<em>L1 Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int L1_LOSS_FEATURE_COUNT = LOSS_FUNCTIONS_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>L1 Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int L1_LOSS_OPERATION_COUNT = LOSS_FUNCTIONS_1_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.MSELossImpl <em>MSE Loss</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.MSELossImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getMSELoss()
+	 * @generated
+	 */
+	int MSE_LOSS = 3;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MSE_LOSS__BASE_CLASS = LOSS_FUNCTIONS_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MSE_LOSS__NAME = LOSS_FUNCTIONS_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MSE_LOSS__DATA = LOSS_FUNCTIONS_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MSE_LOSS__REQUIRES_GRAD = LOSS_FUNCTIONS_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MSE_LOSS__SUB_MODULE = LOSS_FUNCTIONS_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MSE_LOSS__OPTIMIZER = LOSS_FUNCTIONS_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MSE_LOSS__LOSS = LOSS_FUNCTIONS_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Reduction</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MSE_LOSS__REDUCTION = LOSS_FUNCTIONS_1__REDUCTION;
+
+	/**
+	 * The feature id for the '<em><b>Size average</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MSE_LOSS__SIZE_AVERAGE = LOSS_FUNCTIONS_1__SIZE_AVERAGE;
+
+	/**
+	 * The feature id for the '<em><b>Reduce</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MSE_LOSS__REDUCE = LOSS_FUNCTIONS_1__REDUCE;
+
+	/**
+	 * The number of structural features of the '<em>MSE Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MSE_LOSS_FEATURE_COUNT = LOSS_FUNCTIONS_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>MSE Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MSE_LOSS_OPERATION_COUNT = LOSS_FUNCTIONS_1_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.CTCLossImpl <em>CTC Loss</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.CTCLossImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getCTCLoss()
+	 * @generated
+	 */
+	int CTC_LOSS = 4;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CTC_LOSS__BASE_CLASS = LOSS_FUNCTIONS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CTC_LOSS__NAME = LOSS_FUNCTIONS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CTC_LOSS__DATA = LOSS_FUNCTIONS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CTC_LOSS__REQUIRES_GRAD = LOSS_FUNCTIONS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CTC_LOSS__SUB_MODULE = LOSS_FUNCTIONS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CTC_LOSS__OPTIMIZER = LOSS_FUNCTIONS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CTC_LOSS__LOSS = LOSS_FUNCTIONS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Reduction</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CTC_LOSS__REDUCTION = LOSS_FUNCTIONS__REDUCTION;
+
+	/**
+	 * The feature id for the '<em><b>Blank</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CTC_LOSS__BLANK = LOSS_FUNCTIONS_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Zero infinity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CTC_LOSS__ZERO_INFINITY = LOSS_FUNCTIONS_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>CTC Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CTC_LOSS_FEATURE_COUNT = LOSS_FUNCTIONS_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>CTC Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CTC_LOSS_OPERATION_COUNT = LOSS_FUNCTIONS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.KLDivLossImpl <em>KL Div Loss</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.KLDivLossImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getKLDivLoss()
+	 * @generated
+	 */
+	int KL_DIV_LOSS = 5;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int KL_DIV_LOSS__BASE_CLASS = LOSS_FUNCTIONS_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int KL_DIV_LOSS__NAME = LOSS_FUNCTIONS_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int KL_DIV_LOSS__DATA = LOSS_FUNCTIONS_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int KL_DIV_LOSS__REQUIRES_GRAD = LOSS_FUNCTIONS_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int KL_DIV_LOSS__SUB_MODULE = LOSS_FUNCTIONS_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int KL_DIV_LOSS__OPTIMIZER = LOSS_FUNCTIONS_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int KL_DIV_LOSS__LOSS = LOSS_FUNCTIONS_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Reduction</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int KL_DIV_LOSS__REDUCTION = LOSS_FUNCTIONS_1__REDUCTION;
+
+	/**
+	 * The feature id for the '<em><b>Size average</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int KL_DIV_LOSS__SIZE_AVERAGE = LOSS_FUNCTIONS_1__SIZE_AVERAGE;
+
+	/**
+	 * The feature id for the '<em><b>Reduce</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int KL_DIV_LOSS__REDUCE = LOSS_FUNCTIONS_1__REDUCE;
+
+	/**
+	 * The number of structural features of the '<em>KL Div Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int KL_DIV_LOSS_FEATURE_COUNT = LOSS_FUNCTIONS_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>KL Div Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int KL_DIV_LOSS_OPERATION_COUNT = LOSS_FUNCTIONS_1_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.MultiLabelMarginLossImpl <em>Multi Label Margin Loss</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.MultiLabelMarginLossImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getMultiLabelMarginLoss()
+	 * @generated
+	 */
+	int MULTI_LABEL_MARGIN_LOSS = 6;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_LABEL_MARGIN_LOSS__BASE_CLASS = LOSS_FUNCTIONS_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_LABEL_MARGIN_LOSS__NAME = LOSS_FUNCTIONS_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_LABEL_MARGIN_LOSS__DATA = LOSS_FUNCTIONS_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_LABEL_MARGIN_LOSS__REQUIRES_GRAD = LOSS_FUNCTIONS_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_LABEL_MARGIN_LOSS__SUB_MODULE = LOSS_FUNCTIONS_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_LABEL_MARGIN_LOSS__OPTIMIZER = LOSS_FUNCTIONS_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_LABEL_MARGIN_LOSS__LOSS = LOSS_FUNCTIONS_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Reduction</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_LABEL_MARGIN_LOSS__REDUCTION = LOSS_FUNCTIONS_1__REDUCTION;
+
+	/**
+	 * The feature id for the '<em><b>Size average</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_LABEL_MARGIN_LOSS__SIZE_AVERAGE = LOSS_FUNCTIONS_1__SIZE_AVERAGE;
+
+	/**
+	 * The feature id for the '<em><b>Reduce</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_LABEL_MARGIN_LOSS__REDUCE = LOSS_FUNCTIONS_1__REDUCE;
+
+	/**
+	 * The number of structural features of the '<em>Multi Label Margin Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_LABEL_MARGIN_LOSS_FEATURE_COUNT = LOSS_FUNCTIONS_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Multi Label Margin Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_LABEL_MARGIN_LOSS_OPERATION_COUNT = LOSS_FUNCTIONS_1_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functions_1_1Impl <em>Loss functions 11</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functions_1_1Impl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getLoss_functions_1_1()
+	 * @generated
+	 */
+	int LOSS_FUNCTIONS_11 = 7;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_11__BASE_CLASS = LOSS_FUNCTIONS_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_11__NAME = LOSS_FUNCTIONS_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_11__DATA = LOSS_FUNCTIONS_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_11__REQUIRES_GRAD = LOSS_FUNCTIONS_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_11__SUB_MODULE = LOSS_FUNCTIONS_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_11__OPTIMIZER = LOSS_FUNCTIONS_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_11__LOSS = LOSS_FUNCTIONS_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Reduction</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_11__REDUCTION = LOSS_FUNCTIONS_1__REDUCTION;
+
+	/**
+	 * The feature id for the '<em><b>Size average</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_11__SIZE_AVERAGE = LOSS_FUNCTIONS_1__SIZE_AVERAGE;
+
+	/**
+	 * The feature id for the '<em><b>Reduce</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_11__REDUCE = LOSS_FUNCTIONS_1__REDUCE;
+
+	/**
+	 * The feature id for the '<em><b>Margin</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_11__MARGIN = LOSS_FUNCTIONS_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Loss functions 11</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_11_FEATURE_COUNT = LOSS_FUNCTIONS_1_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Loss functions 11</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_11_OPERATION_COUNT = LOSS_FUNCTIONS_1_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functions_1_2Impl <em>Loss functions 12</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functions_1_2Impl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getLoss_functions_1_2()
+	 * @generated
+	 */
+	int LOSS_FUNCTIONS_12 = 8;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_12__BASE_CLASS = LOSS_FUNCTIONS_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_12__NAME = LOSS_FUNCTIONS_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_12__DATA = LOSS_FUNCTIONS_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_12__REQUIRES_GRAD = LOSS_FUNCTIONS_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_12__SUB_MODULE = LOSS_FUNCTIONS_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_12__OPTIMIZER = LOSS_FUNCTIONS_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_12__LOSS = LOSS_FUNCTIONS_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Reduction</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_12__REDUCTION = LOSS_FUNCTIONS_1__REDUCTION;
+
+	/**
+	 * The feature id for the '<em><b>Size average</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_12__SIZE_AVERAGE = LOSS_FUNCTIONS_1__SIZE_AVERAGE;
+
+	/**
+	 * The feature id for the '<em><b>Reduce</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_12__REDUCE = LOSS_FUNCTIONS_1__REDUCE;
+
+	/**
+	 * The feature id for the '<em><b>Weight</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_12__WEIGHT = LOSS_FUNCTIONS_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Loss functions 12</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_12_FEATURE_COUNT = LOSS_FUNCTIONS_1_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Loss functions 12</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_12_OPERATION_COUNT = LOSS_FUNCTIONS_1_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.CosineEmbeddingLossImpl <em>Cosine Embedding Loss</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.CosineEmbeddingLossImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getCosineEmbeddingLoss()
+	 * @generated
+	 */
+	int COSINE_EMBEDDING_LOSS = 9;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COSINE_EMBEDDING_LOSS__BASE_CLASS = LOSS_FUNCTIONS_11__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COSINE_EMBEDDING_LOSS__NAME = LOSS_FUNCTIONS_11__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COSINE_EMBEDDING_LOSS__DATA = LOSS_FUNCTIONS_11__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COSINE_EMBEDDING_LOSS__REQUIRES_GRAD = LOSS_FUNCTIONS_11__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COSINE_EMBEDDING_LOSS__SUB_MODULE = LOSS_FUNCTIONS_11__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COSINE_EMBEDDING_LOSS__OPTIMIZER = LOSS_FUNCTIONS_11__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COSINE_EMBEDDING_LOSS__LOSS = LOSS_FUNCTIONS_11__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Reduction</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COSINE_EMBEDDING_LOSS__REDUCTION = LOSS_FUNCTIONS_11__REDUCTION;
+
+	/**
+	 * The feature id for the '<em><b>Size average</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COSINE_EMBEDDING_LOSS__SIZE_AVERAGE = LOSS_FUNCTIONS_11__SIZE_AVERAGE;
+
+	/**
+	 * The feature id for the '<em><b>Reduce</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COSINE_EMBEDDING_LOSS__REDUCE = LOSS_FUNCTIONS_11__REDUCE;
+
+	/**
+	 * The feature id for the '<em><b>Margin</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COSINE_EMBEDDING_LOSS__MARGIN = LOSS_FUNCTIONS_11__MARGIN;
+
+	/**
+	 * The number of structural features of the '<em>Cosine Embedding Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COSINE_EMBEDDING_LOSS_FEATURE_COUNT = LOSS_FUNCTIONS_11_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Cosine Embedding Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int COSINE_EMBEDDING_LOSS_OPERATION_COUNT = LOSS_FUNCTIONS_11_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.MarginRankingLossImpl <em>Margin Ranking Loss</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.MarginRankingLossImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getMarginRankingLoss()
+	 * @generated
+	 */
+	int MARGIN_RANKING_LOSS = 10;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MARGIN_RANKING_LOSS__BASE_CLASS = LOSS_FUNCTIONS_11__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MARGIN_RANKING_LOSS__NAME = LOSS_FUNCTIONS_11__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MARGIN_RANKING_LOSS__DATA = LOSS_FUNCTIONS_11__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MARGIN_RANKING_LOSS__REQUIRES_GRAD = LOSS_FUNCTIONS_11__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MARGIN_RANKING_LOSS__SUB_MODULE = LOSS_FUNCTIONS_11__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MARGIN_RANKING_LOSS__OPTIMIZER = LOSS_FUNCTIONS_11__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MARGIN_RANKING_LOSS__LOSS = LOSS_FUNCTIONS_11__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Reduction</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MARGIN_RANKING_LOSS__REDUCTION = LOSS_FUNCTIONS_11__REDUCTION;
+
+	/**
+	 * The feature id for the '<em><b>Size average</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MARGIN_RANKING_LOSS__SIZE_AVERAGE = LOSS_FUNCTIONS_11__SIZE_AVERAGE;
+
+	/**
+	 * The feature id for the '<em><b>Reduce</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MARGIN_RANKING_LOSS__REDUCE = LOSS_FUNCTIONS_11__REDUCE;
+
+	/**
+	 * The feature id for the '<em><b>Margin</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MARGIN_RANKING_LOSS__MARGIN = LOSS_FUNCTIONS_11__MARGIN;
+
+	/**
+	 * The number of structural features of the '<em>Margin Ranking Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MARGIN_RANKING_LOSS_FEATURE_COUNT = LOSS_FUNCTIONS_11_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Margin Ranking Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MARGIN_RANKING_LOSS_OPERATION_COUNT = LOSS_FUNCTIONS_11_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.HingeEmbeddingLossImpl <em>Hinge Embedding Loss</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.HingeEmbeddingLossImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getHingeEmbeddingLoss()
+	 * @generated
+	 */
+	int HINGE_EMBEDDING_LOSS = 11;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HINGE_EMBEDDING_LOSS__BASE_CLASS = LOSS_FUNCTIONS_11__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HINGE_EMBEDDING_LOSS__NAME = LOSS_FUNCTIONS_11__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HINGE_EMBEDDING_LOSS__DATA = LOSS_FUNCTIONS_11__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HINGE_EMBEDDING_LOSS__REQUIRES_GRAD = LOSS_FUNCTIONS_11__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HINGE_EMBEDDING_LOSS__SUB_MODULE = LOSS_FUNCTIONS_11__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HINGE_EMBEDDING_LOSS__OPTIMIZER = LOSS_FUNCTIONS_11__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HINGE_EMBEDDING_LOSS__LOSS = LOSS_FUNCTIONS_11__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Reduction</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HINGE_EMBEDDING_LOSS__REDUCTION = LOSS_FUNCTIONS_11__REDUCTION;
+
+	/**
+	 * The feature id for the '<em><b>Size average</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HINGE_EMBEDDING_LOSS__SIZE_AVERAGE = LOSS_FUNCTIONS_11__SIZE_AVERAGE;
+
+	/**
+	 * The feature id for the '<em><b>Reduce</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HINGE_EMBEDDING_LOSS__REDUCE = LOSS_FUNCTIONS_11__REDUCE;
+
+	/**
+	 * The feature id for the '<em><b>Margin</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HINGE_EMBEDDING_LOSS__MARGIN = LOSS_FUNCTIONS_11__MARGIN;
+
+	/**
+	 * The number of structural features of the '<em>Hinge Embedding Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HINGE_EMBEDDING_LOSS_FEATURE_COUNT = LOSS_FUNCTIONS_11_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Hinge Embedding Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HINGE_EMBEDDING_LOSS_OPERATION_COUNT = LOSS_FUNCTIONS_11_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.BCELossImpl <em>BCE Loss</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.BCELossImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getBCELoss()
+	 * @generated
+	 */
+	int BCE_LOSS = 12;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BCE_LOSS__BASE_CLASS = LOSS_FUNCTIONS_12__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BCE_LOSS__NAME = LOSS_FUNCTIONS_12__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BCE_LOSS__DATA = LOSS_FUNCTIONS_12__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BCE_LOSS__REQUIRES_GRAD = LOSS_FUNCTIONS_12__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BCE_LOSS__SUB_MODULE = LOSS_FUNCTIONS_12__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BCE_LOSS__OPTIMIZER = LOSS_FUNCTIONS_12__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BCE_LOSS__LOSS = LOSS_FUNCTIONS_12__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Reduction</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BCE_LOSS__REDUCTION = LOSS_FUNCTIONS_12__REDUCTION;
+
+	/**
+	 * The feature id for the '<em><b>Size average</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BCE_LOSS__SIZE_AVERAGE = LOSS_FUNCTIONS_12__SIZE_AVERAGE;
+
+	/**
+	 * The feature id for the '<em><b>Reduce</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BCE_LOSS__REDUCE = LOSS_FUNCTIONS_12__REDUCE;
+
+	/**
+	 * The feature id for the '<em><b>Weight</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BCE_LOSS__WEIGHT = LOSS_FUNCTIONS_12__WEIGHT;
+
+	/**
+	 * The number of structural features of the '<em>BCE Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BCE_LOSS_FEATURE_COUNT = LOSS_FUNCTIONS_12_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>BCE Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BCE_LOSS_OPERATION_COUNT = LOSS_FUNCTIONS_12_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functions_1_1_1Impl <em>Loss functions 111</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functions_1_1_1Impl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getLoss_functions_1_1_1()
+	 * @generated
+	 */
+	int LOSS_FUNCTIONS_111 = 13;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_111__BASE_CLASS = LOSS_FUNCTIONS_11__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_111__NAME = LOSS_FUNCTIONS_11__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_111__DATA = LOSS_FUNCTIONS_11__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_111__REQUIRES_GRAD = LOSS_FUNCTIONS_11__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_111__SUB_MODULE = LOSS_FUNCTIONS_11__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_111__OPTIMIZER = LOSS_FUNCTIONS_11__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_111__LOSS = LOSS_FUNCTIONS_11__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Reduction</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_111__REDUCTION = LOSS_FUNCTIONS_11__REDUCTION;
+
+	/**
+	 * The feature id for the '<em><b>Size average</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_111__SIZE_AVERAGE = LOSS_FUNCTIONS_11__SIZE_AVERAGE;
+
+	/**
+	 * The feature id for the '<em><b>Reduce</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_111__REDUCE = LOSS_FUNCTIONS_11__REDUCE;
+
+	/**
+	 * The feature id for the '<em><b>Margin</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_111__MARGIN = LOSS_FUNCTIONS_11__MARGIN;
+
+	/**
+	 * The feature id for the '<em><b>P</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_111__P = LOSS_FUNCTIONS_11_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Loss functions 111</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_111_FEATURE_COUNT = LOSS_FUNCTIONS_11_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Loss functions 111</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_111_OPERATION_COUNT = LOSS_FUNCTIONS_11_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.MultiMarginLossImpl <em>Multi Margin Loss</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.MultiMarginLossImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getMultiMarginLoss()
+	 * @generated
+	 */
+	int MULTI_MARGIN_LOSS = 14;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_MARGIN_LOSS__BASE_CLASS = LOSS_FUNCTIONS_111__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_MARGIN_LOSS__NAME = LOSS_FUNCTIONS_111__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_MARGIN_LOSS__DATA = LOSS_FUNCTIONS_111__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_MARGIN_LOSS__REQUIRES_GRAD = LOSS_FUNCTIONS_111__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_MARGIN_LOSS__SUB_MODULE = LOSS_FUNCTIONS_111__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_MARGIN_LOSS__OPTIMIZER = LOSS_FUNCTIONS_111__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_MARGIN_LOSS__LOSS = LOSS_FUNCTIONS_111__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Reduction</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_MARGIN_LOSS__REDUCTION = LOSS_FUNCTIONS_111__REDUCTION;
+
+	/**
+	 * The feature id for the '<em><b>Size average</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_MARGIN_LOSS__SIZE_AVERAGE = LOSS_FUNCTIONS_111__SIZE_AVERAGE;
+
+	/**
+	 * The feature id for the '<em><b>Reduce</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_MARGIN_LOSS__REDUCE = LOSS_FUNCTIONS_111__REDUCE;
+
+	/**
+	 * The feature id for the '<em><b>Margin</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_MARGIN_LOSS__MARGIN = LOSS_FUNCTIONS_111__MARGIN;
+
+	/**
+	 * The feature id for the '<em><b>P</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_MARGIN_LOSS__P = LOSS_FUNCTIONS_111__P;
+
+	/**
+	 * The feature id for the '<em><b>Weight</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_MARGIN_LOSS__WEIGHT = LOSS_FUNCTIONS_111_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Multi Margin Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_MARGIN_LOSS_FEATURE_COUNT = LOSS_FUNCTIONS_111_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Multi Margin Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTI_MARGIN_LOSS_OPERATION_COUNT = LOSS_FUNCTIONS_111_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.TripletMarginLossImpl <em>Triplet Margin Loss</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.TripletMarginLossImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getTripletMarginLoss()
+	 * @generated
+	 */
+	int TRIPLET_MARGIN_LOSS = 15;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRIPLET_MARGIN_LOSS__BASE_CLASS = LOSS_FUNCTIONS_111__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRIPLET_MARGIN_LOSS__NAME = LOSS_FUNCTIONS_111__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRIPLET_MARGIN_LOSS__DATA = LOSS_FUNCTIONS_111__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRIPLET_MARGIN_LOSS__REQUIRES_GRAD = LOSS_FUNCTIONS_111__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRIPLET_MARGIN_LOSS__SUB_MODULE = LOSS_FUNCTIONS_111__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRIPLET_MARGIN_LOSS__OPTIMIZER = LOSS_FUNCTIONS_111__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRIPLET_MARGIN_LOSS__LOSS = LOSS_FUNCTIONS_111__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Reduction</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRIPLET_MARGIN_LOSS__REDUCTION = LOSS_FUNCTIONS_111__REDUCTION;
+
+	/**
+	 * The feature id for the '<em><b>Size average</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRIPLET_MARGIN_LOSS__SIZE_AVERAGE = LOSS_FUNCTIONS_111__SIZE_AVERAGE;
+
+	/**
+	 * The feature id for the '<em><b>Reduce</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRIPLET_MARGIN_LOSS__REDUCE = LOSS_FUNCTIONS_111__REDUCE;
+
+	/**
+	 * The feature id for the '<em><b>Margin</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRIPLET_MARGIN_LOSS__MARGIN = LOSS_FUNCTIONS_111__MARGIN;
+
+	/**
+	 * The feature id for the '<em><b>P</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRIPLET_MARGIN_LOSS__P = LOSS_FUNCTIONS_111__P;
+
+	/**
+	 * The feature id for the '<em><b>Swap</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRIPLET_MARGIN_LOSS__SWAP = LOSS_FUNCTIONS_111_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Triplet Margin Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRIPLET_MARGIN_LOSS_FEATURE_COUNT = LOSS_FUNCTIONS_111_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Triplet Margin Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRIPLET_MARGIN_LOSS_OPERATION_COUNT = LOSS_FUNCTIONS_111_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functions_1_2_1Impl <em>Loss functions 121</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functions_1_2_1Impl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getLoss_functions_1_2_1()
+	 * @generated
+	 */
+	int LOSS_FUNCTIONS_121 = 16;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_121__BASE_CLASS = LOSS_FUNCTIONS_12__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_121__NAME = LOSS_FUNCTIONS_12__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_121__DATA = LOSS_FUNCTIONS_12__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_121__REQUIRES_GRAD = LOSS_FUNCTIONS_12__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_121__SUB_MODULE = LOSS_FUNCTIONS_12__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_121__OPTIMIZER = LOSS_FUNCTIONS_12__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_121__LOSS = LOSS_FUNCTIONS_12__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Reduction</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_121__REDUCTION = LOSS_FUNCTIONS_12__REDUCTION;
+
+	/**
+	 * The feature id for the '<em><b>Size average</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_121__SIZE_AVERAGE = LOSS_FUNCTIONS_12__SIZE_AVERAGE;
+
+	/**
+	 * The feature id for the '<em><b>Reduce</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_121__REDUCE = LOSS_FUNCTIONS_12__REDUCE;
+
+	/**
+	 * The feature id for the '<em><b>Weight</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_121__WEIGHT = LOSS_FUNCTIONS_12__WEIGHT;
+
+	/**
+	 * The feature id for the '<em><b>Ignore index</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_121__IGNORE_INDEX = LOSS_FUNCTIONS_12_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Loss functions 121</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_121_FEATURE_COUNT = LOSS_FUNCTIONS_12_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Loss functions 121</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOSS_FUNCTIONS_121_OPERATION_COUNT = LOSS_FUNCTIONS_12_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.CrossEntropyLossImpl <em>Cross Entropy Loss</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.CrossEntropyLossImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getCrossEntropyLoss()
+	 * @generated
+	 */
+	int CROSS_ENTROPY_LOSS = 17;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CROSS_ENTROPY_LOSS__BASE_CLASS = LOSS_FUNCTIONS_121__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CROSS_ENTROPY_LOSS__NAME = LOSS_FUNCTIONS_121__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CROSS_ENTROPY_LOSS__DATA = LOSS_FUNCTIONS_121__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CROSS_ENTROPY_LOSS__REQUIRES_GRAD = LOSS_FUNCTIONS_121__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CROSS_ENTROPY_LOSS__SUB_MODULE = LOSS_FUNCTIONS_121__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CROSS_ENTROPY_LOSS__OPTIMIZER = LOSS_FUNCTIONS_121__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CROSS_ENTROPY_LOSS__LOSS = LOSS_FUNCTIONS_121__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Reduction</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CROSS_ENTROPY_LOSS__REDUCTION = LOSS_FUNCTIONS_121__REDUCTION;
+
+	/**
+	 * The feature id for the '<em><b>Size average</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CROSS_ENTROPY_LOSS__SIZE_AVERAGE = LOSS_FUNCTIONS_121__SIZE_AVERAGE;
+
+	/**
+	 * The feature id for the '<em><b>Reduce</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CROSS_ENTROPY_LOSS__REDUCE = LOSS_FUNCTIONS_121__REDUCE;
+
+	/**
+	 * The feature id for the '<em><b>Weight</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CROSS_ENTROPY_LOSS__WEIGHT = LOSS_FUNCTIONS_121__WEIGHT;
+
+	/**
+	 * The feature id for the '<em><b>Ignore index</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CROSS_ENTROPY_LOSS__IGNORE_INDEX = LOSS_FUNCTIONS_121__IGNORE_INDEX;
+
+	/**
+	 * The number of structural features of the '<em>Cross Entropy Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CROSS_ENTROPY_LOSS_FEATURE_COUNT = LOSS_FUNCTIONS_121_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Cross Entropy Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CROSS_ENTROPY_LOSS_OPERATION_COUNT = LOSS_FUNCTIONS_121_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.NLLLossImpl <em>NLL Loss</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.NLLLossImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getNLLLoss()
+	 * @generated
+	 */
+	int NLL_LOSS = 18;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NLL_LOSS__BASE_CLASS = LOSS_FUNCTIONS_121__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NLL_LOSS__NAME = LOSS_FUNCTIONS_121__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NLL_LOSS__DATA = LOSS_FUNCTIONS_121__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NLL_LOSS__REQUIRES_GRAD = LOSS_FUNCTIONS_121__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NLL_LOSS__SUB_MODULE = LOSS_FUNCTIONS_121__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NLL_LOSS__OPTIMIZER = LOSS_FUNCTIONS_121__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NLL_LOSS__LOSS = LOSS_FUNCTIONS_121__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Reduction</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NLL_LOSS__REDUCTION = LOSS_FUNCTIONS_121__REDUCTION;
+
+	/**
+	 * The feature id for the '<em><b>Size average</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NLL_LOSS__SIZE_AVERAGE = LOSS_FUNCTIONS_121__SIZE_AVERAGE;
+
+	/**
+	 * The feature id for the '<em><b>Reduce</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NLL_LOSS__REDUCE = LOSS_FUNCTIONS_121__REDUCE;
+
+	/**
+	 * The feature id for the '<em><b>Weight</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NLL_LOSS__WEIGHT = LOSS_FUNCTIONS_121__WEIGHT;
+
+	/**
+	 * The feature id for the '<em><b>Ignore index</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NLL_LOSS__IGNORE_INDEX = LOSS_FUNCTIONS_121__IGNORE_INDEX;
+
+	/**
+	 * The number of structural features of the '<em>NLL Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NLL_LOSS_FEATURE_COUNT = LOSS_FUNCTIONS_121_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>NLL Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NLL_LOSS_OPERATION_COUNT = LOSS_FUNCTIONS_121_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.PoissonNLLLossImpl <em>Poisson NLL Loss</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.PoissonNLLLossImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getPoissonNLLLoss()
+	 * @generated
+	 */
+	int POISSON_NLL_LOSS = 19;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POISSON_NLL_LOSS__BASE_CLASS = LOSS_FUNCTIONS_12__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POISSON_NLL_LOSS__NAME = LOSS_FUNCTIONS_12__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POISSON_NLL_LOSS__DATA = LOSS_FUNCTIONS_12__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POISSON_NLL_LOSS__REQUIRES_GRAD = LOSS_FUNCTIONS_12__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POISSON_NLL_LOSS__SUB_MODULE = LOSS_FUNCTIONS_12__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POISSON_NLL_LOSS__OPTIMIZER = LOSS_FUNCTIONS_12__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POISSON_NLL_LOSS__LOSS = LOSS_FUNCTIONS_12__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Reduction</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POISSON_NLL_LOSS__REDUCTION = LOSS_FUNCTIONS_12__REDUCTION;
+
+	/**
+	 * The feature id for the '<em><b>Size average</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POISSON_NLL_LOSS__SIZE_AVERAGE = LOSS_FUNCTIONS_12__SIZE_AVERAGE;
+
+	/**
+	 * The feature id for the '<em><b>Reduce</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POISSON_NLL_LOSS__REDUCE = LOSS_FUNCTIONS_12__REDUCE;
+
+	/**
+	 * The feature id for the '<em><b>Weight</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POISSON_NLL_LOSS__WEIGHT = LOSS_FUNCTIONS_12__WEIGHT;
+
+	/**
+	 * The feature id for the '<em><b>Log input</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POISSON_NLL_LOSS__LOG_INPUT = LOSS_FUNCTIONS_12_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Full</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POISSON_NLL_LOSS__FULL = LOSS_FUNCTIONS_12_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Eps</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POISSON_NLL_LOSS__EPS = LOSS_FUNCTIONS_12_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Poisson NLL Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POISSON_NLL_LOSS_FEATURE_COUNT = LOSS_FUNCTIONS_12_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of operations of the '<em>Poisson NLL Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POISSON_NLL_LOSS_OPERATION_COUNT = LOSS_FUNCTIONS_12_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.BCEWithLogitsLossImpl <em>BCE With Logits Loss</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.BCEWithLogitsLossImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getBCEWithLogitsLoss()
+	 * @generated
+	 */
+	int BCE_WITH_LOGITS_LOSS = 20;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BCE_WITH_LOGITS_LOSS__BASE_CLASS = LOSS_FUNCTIONS_12__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BCE_WITH_LOGITS_LOSS__NAME = LOSS_FUNCTIONS_12__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BCE_WITH_LOGITS_LOSS__DATA = LOSS_FUNCTIONS_12__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BCE_WITH_LOGITS_LOSS__REQUIRES_GRAD = LOSS_FUNCTIONS_12__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BCE_WITH_LOGITS_LOSS__SUB_MODULE = LOSS_FUNCTIONS_12__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BCE_WITH_LOGITS_LOSS__OPTIMIZER = LOSS_FUNCTIONS_12__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BCE_WITH_LOGITS_LOSS__LOSS = LOSS_FUNCTIONS_12__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Reduction</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BCE_WITH_LOGITS_LOSS__REDUCTION = LOSS_FUNCTIONS_12__REDUCTION;
+
+	/**
+	 * The feature id for the '<em><b>Size average</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BCE_WITH_LOGITS_LOSS__SIZE_AVERAGE = LOSS_FUNCTIONS_12__SIZE_AVERAGE;
+
+	/**
+	 * The feature id for the '<em><b>Reduce</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BCE_WITH_LOGITS_LOSS__REDUCE = LOSS_FUNCTIONS_12__REDUCE;
+
+	/**
+	 * The feature id for the '<em><b>Weight</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BCE_WITH_LOGITS_LOSS__WEIGHT = LOSS_FUNCTIONS_12__WEIGHT;
+
+	/**
+	 * The feature id for the '<em><b>Pos weight</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BCE_WITH_LOGITS_LOSS__POS_WEIGHT = LOSS_FUNCTIONS_12_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>BCE With Logits Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BCE_WITH_LOGITS_LOSS_FEATURE_COUNT = LOSS_FUNCTIONS_12_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>BCE With Logits Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BCE_WITH_LOGITS_LOSS_OPERATION_COUNT = LOSS_FUNCTIONS_12_OPERATION_COUNT + 0;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions <em>Loss functions</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Loss functions</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions
+	 * @generated
+	 */
+	EClass getLoss_functions();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions#getReduction <em>Reduction</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Reduction</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions#getReduction()
+	 * @see #getLoss_functions()
+	 * @generated
+	 */
+	EAttribute getLoss_functions_Reduction();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1 <em>Loss functions 1</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Loss functions 1</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1
+	 * @generated
+	 */
+	EClass getLoss_functions_1();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1#isSize_average <em>Size average</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Size average</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1#isSize_average()
+	 * @see #getLoss_functions_1()
+	 * @generated
+	 */
+	EAttribute getLoss_functions_1_Size_average();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1#isReduce <em>Reduce</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Reduce</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1#isReduce()
+	 * @see #getLoss_functions_1()
+	 * @generated
+	 */
+	EAttribute getLoss_functions_1_Reduce();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.L1Loss <em>L1 Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>L1 Loss</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.L1Loss
+	 * @generated
+	 */
+	EClass getL1Loss();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.MSELoss <em>MSE Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>MSE Loss</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.MSELoss
+	 * @generated
+	 */
+	EClass getMSELoss();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.CTCLoss <em>CTC Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>CTC Loss</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.CTCLoss
+	 * @generated
+	 */
+	EClass getCTCLoss();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.CTCLoss#getBlank <em>Blank</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Blank</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.CTCLoss#getBlank()
+	 * @see #getCTCLoss()
+	 * @generated
+	 */
+	EAttribute getCTCLoss_Blank();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.CTCLoss#isZero_infinity <em>Zero infinity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Zero infinity</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.CTCLoss#isZero_infinity()
+	 * @see #getCTCLoss()
+	 * @generated
+	 */
+	EAttribute getCTCLoss_Zero_infinity();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.KLDivLoss <em>KL Div Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>KL Div Loss</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.KLDivLoss
+	 * @generated
+	 */
+	EClass getKLDivLoss();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.MultiLabelMarginLoss <em>Multi Label Margin Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Multi Label Margin Loss</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.MultiLabelMarginLoss
+	 * @generated
+	 */
+	EClass getMultiLabelMarginLoss();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_1 <em>Loss functions 11</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Loss functions 11</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_1
+	 * @generated
+	 */
+	EClass getLoss_functions_1_1();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_1#getMargin <em>Margin</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Margin</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_1#getMargin()
+	 * @see #getLoss_functions_1_1()
+	 * @generated
+	 */
+	EAttribute getLoss_functions_1_1_Margin();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_2 <em>Loss functions 12</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Loss functions 12</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_2
+	 * @generated
+	 */
+	EClass getLoss_functions_1_2();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_2#getWeight <em>Weight</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Weight</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_2#getWeight()
+	 * @see #getLoss_functions_1_2()
+	 * @generated
+	 */
+	EReference getLoss_functions_1_2_Weight();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.CosineEmbeddingLoss <em>Cosine Embedding Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Cosine Embedding Loss</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.CosineEmbeddingLoss
+	 * @generated
+	 */
+	EClass getCosineEmbeddingLoss();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.MarginRankingLoss <em>Margin Ranking Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Margin Ranking Loss</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.MarginRankingLoss
+	 * @generated
+	 */
+	EClass getMarginRankingLoss();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.HingeEmbeddingLoss <em>Hinge Embedding Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Hinge Embedding Loss</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.HingeEmbeddingLoss
+	 * @generated
+	 */
+	EClass getHingeEmbeddingLoss();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.BCELoss <em>BCE Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>BCE Loss</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.BCELoss
+	 * @generated
+	 */
+	EClass getBCELoss();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_1_1 <em>Loss functions 111</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Loss functions 111</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_1_1
+	 * @generated
+	 */
+	EClass getLoss_functions_1_1_1();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_1_1#getP <em>P</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>P</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_1_1#getP()
+	 * @see #getLoss_functions_1_1_1()
+	 * @generated
+	 */
+	EAttribute getLoss_functions_1_1_1_P();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.MultiMarginLoss <em>Multi Margin Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Multi Margin Loss</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.MultiMarginLoss
+	 * @generated
+	 */
+	EClass getMultiMarginLoss();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.MultiMarginLoss#getWeight <em>Weight</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Weight</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.MultiMarginLoss#getWeight()
+	 * @see #getMultiMarginLoss()
+	 * @generated
+	 */
+	EReference getMultiMarginLoss_Weight();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.TripletMarginLoss <em>Triplet Margin Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Triplet Margin Loss</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.TripletMarginLoss
+	 * @generated
+	 */
+	EClass getTripletMarginLoss();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.TripletMarginLoss#isSwap <em>Swap</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Swap</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.TripletMarginLoss#isSwap()
+	 * @see #getTripletMarginLoss()
+	 * @generated
+	 */
+	EAttribute getTripletMarginLoss_Swap();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_2_1 <em>Loss functions 121</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Loss functions 121</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_2_1
+	 * @generated
+	 */
+	EClass getLoss_functions_1_2_1();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_2_1#getIgnore_index <em>Ignore index</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Ignore index</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_2_1#getIgnore_index()
+	 * @see #getLoss_functions_1_2_1()
+	 * @generated
+	 */
+	EAttribute getLoss_functions_1_2_1_Ignore_index();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.CrossEntropyLoss <em>Cross Entropy Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Cross Entropy Loss</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.CrossEntropyLoss
+	 * @generated
+	 */
+	EClass getCrossEntropyLoss();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.NLLLoss <em>NLL Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>NLL Loss</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.NLLLoss
+	 * @generated
+	 */
+	EClass getNLLLoss();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.PoissonNLLLoss <em>Poisson NLL Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Poisson NLL Loss</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.PoissonNLLLoss
+	 * @generated
+	 */
+	EClass getPoissonNLLLoss();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.PoissonNLLLoss#isLog_input <em>Log input</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Log input</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.PoissonNLLLoss#isLog_input()
+	 * @see #getPoissonNLLLoss()
+	 * @generated
+	 */
+	EAttribute getPoissonNLLLoss_Log_input();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.PoissonNLLLoss#isFull <em>Full</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Full</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.PoissonNLLLoss#isFull()
+	 * @see #getPoissonNLLLoss()
+	 * @generated
+	 */
+	EAttribute getPoissonNLLLoss_Full();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.PoissonNLLLoss#getEps <em>Eps</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Eps</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.PoissonNLLLoss#getEps()
+	 * @see #getPoissonNLLLoss()
+	 * @generated
+	 */
+	EAttribute getPoissonNLLLoss_Eps();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.BCEWithLogitsLoss <em>BCE With Logits Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>BCE With Logits Loss</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.BCEWithLogitsLoss
+	 * @generated
+	 */
+	EClass getBCEWithLogitsLoss();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.BCEWithLogitsLoss#getPos_weight <em>Pos weight</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Pos weight</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.BCEWithLogitsLoss#getPos_weight()
+	 * @see #getBCEWithLogitsLoss()
+	 * @generated
+	 */
+	EReference getBCEWithLogitsLoss_Pos_weight();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	Loss_functionsFactory getLoss_functionsFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsImpl <em>Loss functions</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getLoss_functions()
+		 * @generated
+		 */
+		EClass LOSS_FUNCTIONS = eINSTANCE.getLoss_functions();
+
+		/**
+		 * The meta object literal for the '<em><b>Reduction</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LOSS_FUNCTIONS__REDUCTION = eINSTANCE.getLoss_functions_Reduction();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functions_1Impl <em>Loss functions 1</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functions_1Impl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getLoss_functions_1()
+		 * @generated
+		 */
+		EClass LOSS_FUNCTIONS_1 = eINSTANCE.getLoss_functions_1();
+
+		/**
+		 * The meta object literal for the '<em><b>Size average</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LOSS_FUNCTIONS_1__SIZE_AVERAGE = eINSTANCE.getLoss_functions_1_Size_average();
+
+		/**
+		 * The meta object literal for the '<em><b>Reduce</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LOSS_FUNCTIONS_1__REDUCE = eINSTANCE.getLoss_functions_1_Reduce();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.L1LossImpl <em>L1 Loss</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.L1LossImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getL1Loss()
+		 * @generated
+		 */
+		EClass L1_LOSS = eINSTANCE.getL1Loss();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.MSELossImpl <em>MSE Loss</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.MSELossImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getMSELoss()
+		 * @generated
+		 */
+		EClass MSE_LOSS = eINSTANCE.getMSELoss();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.CTCLossImpl <em>CTC Loss</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.CTCLossImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getCTCLoss()
+		 * @generated
+		 */
+		EClass CTC_LOSS = eINSTANCE.getCTCLoss();
+
+		/**
+		 * The meta object literal for the '<em><b>Blank</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CTC_LOSS__BLANK = eINSTANCE.getCTCLoss_Blank();
+
+		/**
+		 * The meta object literal for the '<em><b>Zero infinity</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CTC_LOSS__ZERO_INFINITY = eINSTANCE.getCTCLoss_Zero_infinity();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.KLDivLossImpl <em>KL Div Loss</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.KLDivLossImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getKLDivLoss()
+		 * @generated
+		 */
+		EClass KL_DIV_LOSS = eINSTANCE.getKLDivLoss();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.MultiLabelMarginLossImpl <em>Multi Label Margin Loss</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.MultiLabelMarginLossImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getMultiLabelMarginLoss()
+		 * @generated
+		 */
+		EClass MULTI_LABEL_MARGIN_LOSS = eINSTANCE.getMultiLabelMarginLoss();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functions_1_1Impl <em>Loss functions 11</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functions_1_1Impl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getLoss_functions_1_1()
+		 * @generated
+		 */
+		EClass LOSS_FUNCTIONS_11 = eINSTANCE.getLoss_functions_1_1();
+
+		/**
+		 * The meta object literal for the '<em><b>Margin</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LOSS_FUNCTIONS_11__MARGIN = eINSTANCE.getLoss_functions_1_1_Margin();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functions_1_2Impl <em>Loss functions 12</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functions_1_2Impl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getLoss_functions_1_2()
+		 * @generated
+		 */
+		EClass LOSS_FUNCTIONS_12 = eINSTANCE.getLoss_functions_1_2();
+
+		/**
+		 * The meta object literal for the '<em><b>Weight</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference LOSS_FUNCTIONS_12__WEIGHT = eINSTANCE.getLoss_functions_1_2_Weight();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.CosineEmbeddingLossImpl <em>Cosine Embedding Loss</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.CosineEmbeddingLossImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getCosineEmbeddingLoss()
+		 * @generated
+		 */
+		EClass COSINE_EMBEDDING_LOSS = eINSTANCE.getCosineEmbeddingLoss();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.MarginRankingLossImpl <em>Margin Ranking Loss</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.MarginRankingLossImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getMarginRankingLoss()
+		 * @generated
+		 */
+		EClass MARGIN_RANKING_LOSS = eINSTANCE.getMarginRankingLoss();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.HingeEmbeddingLossImpl <em>Hinge Embedding Loss</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.HingeEmbeddingLossImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getHingeEmbeddingLoss()
+		 * @generated
+		 */
+		EClass HINGE_EMBEDDING_LOSS = eINSTANCE.getHingeEmbeddingLoss();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.BCELossImpl <em>BCE Loss</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.BCELossImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getBCELoss()
+		 * @generated
+		 */
+		EClass BCE_LOSS = eINSTANCE.getBCELoss();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functions_1_1_1Impl <em>Loss functions 111</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functions_1_1_1Impl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getLoss_functions_1_1_1()
+		 * @generated
+		 */
+		EClass LOSS_FUNCTIONS_111 = eINSTANCE.getLoss_functions_1_1_1();
+
+		/**
+		 * The meta object literal for the '<em><b>P</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LOSS_FUNCTIONS_111__P = eINSTANCE.getLoss_functions_1_1_1_P();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.MultiMarginLossImpl <em>Multi Margin Loss</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.MultiMarginLossImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getMultiMarginLoss()
+		 * @generated
+		 */
+		EClass MULTI_MARGIN_LOSS = eINSTANCE.getMultiMarginLoss();
+
+		/**
+		 * The meta object literal for the '<em><b>Weight</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference MULTI_MARGIN_LOSS__WEIGHT = eINSTANCE.getMultiMarginLoss_Weight();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.TripletMarginLossImpl <em>Triplet Margin Loss</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.TripletMarginLossImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getTripletMarginLoss()
+		 * @generated
+		 */
+		EClass TRIPLET_MARGIN_LOSS = eINSTANCE.getTripletMarginLoss();
+
+		/**
+		 * The meta object literal for the '<em><b>Swap</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute TRIPLET_MARGIN_LOSS__SWAP = eINSTANCE.getTripletMarginLoss_Swap();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functions_1_2_1Impl <em>Loss functions 121</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functions_1_2_1Impl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getLoss_functions_1_2_1()
+		 * @generated
+		 */
+		EClass LOSS_FUNCTIONS_121 = eINSTANCE.getLoss_functions_1_2_1();
+
+		/**
+		 * The meta object literal for the '<em><b>Ignore index</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LOSS_FUNCTIONS_121__IGNORE_INDEX = eINSTANCE.getLoss_functions_1_2_1_Ignore_index();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.CrossEntropyLossImpl <em>Cross Entropy Loss</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.CrossEntropyLossImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getCrossEntropyLoss()
+		 * @generated
+		 */
+		EClass CROSS_ENTROPY_LOSS = eINSTANCE.getCrossEntropyLoss();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.NLLLossImpl <em>NLL Loss</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.NLLLossImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getNLLLoss()
+		 * @generated
+		 */
+		EClass NLL_LOSS = eINSTANCE.getNLLLoss();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.PoissonNLLLossImpl <em>Poisson NLL Loss</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.PoissonNLLLossImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getPoissonNLLLoss()
+		 * @generated
+		 */
+		EClass POISSON_NLL_LOSS = eINSTANCE.getPoissonNLLLoss();
+
+		/**
+		 * The meta object literal for the '<em><b>Log input</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute POISSON_NLL_LOSS__LOG_INPUT = eINSTANCE.getPoissonNLLLoss_Log_input();
+
+		/**
+		 * The meta object literal for the '<em><b>Full</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute POISSON_NLL_LOSS__FULL = eINSTANCE.getPoissonNLLLoss_Full();
+
+		/**
+		 * The meta object literal for the '<em><b>Eps</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute POISSON_NLL_LOSS__EPS = eINSTANCE.getPoissonNLLLoss_Eps();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.BCEWithLogitsLossImpl <em>BCE With Logits Loss</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.BCEWithLogitsLossImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl#getBCEWithLogitsLoss()
+		 * @generated
+		 */
+		EClass BCE_WITH_LOGITS_LOSS = eINSTANCE.getBCEWithLogitsLoss();
+
+		/**
+		 * The meta object literal for the '<em><b>Pos weight</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference BCE_WITH_LOGITS_LOSS__POS_WEIGHT = eINSTANCE.getBCEWithLogitsLoss_Pos_weight();
+
+	}
+
+} //Loss_functionsPackage
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/Loss_functions_1.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/Loss_functions_1.java
new file mode 100644
index 0000000..035d5c5
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/Loss_functions_1.java
@@ -0,0 +1,85 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Loss functions 1</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1#isSize_average <em>Size average</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1#isReduce <em>Reduce</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getLoss_functions_1()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Loss_functions_1 extends Loss_functions {
+	/**
+	 * Returns the value of the '<em><b>Size average</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Size average</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Size average</em>' attribute.
+	 * @see #setSize_average(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getLoss_functions_1_Size_average()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isSize_average();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1#isSize_average <em>Size average</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Size average</em>' attribute.
+	 * @see #isSize_average()
+	 * @generated
+	 */
+	void setSize_average(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Reduce</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Reduce</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Reduce</em>' attribute.
+	 * @see #setReduce(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getLoss_functions_1_Reduce()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isReduce();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1#isReduce <em>Reduce</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Reduce</em>' attribute.
+	 * @see #isReduce()
+	 * @generated
+	 */
+	void setReduce(boolean value);
+
+} // Loss_functions_1
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/Loss_functions_1_1.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/Loss_functions_1_1.java
new file mode 100644
index 0000000..efd8a32
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/Loss_functions_1_1.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Loss functions 11</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_1#getMargin <em>Margin</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getLoss_functions_1_1()
+ * @model
+ * @generated
+ */
+public interface Loss_functions_1_1 extends Loss_functions_1 {
+	/**
+	 * Returns the value of the '<em><b>Margin</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Margin</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Margin</em>' attribute.
+	 * @see #setMargin(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getLoss_functions_1_1_Margin()
+	 * @model dataType="org.eclipse.uml2.types.Real" ordered="false"
+	 * @generated
+	 */
+	double getMargin();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_1#getMargin <em>Margin</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Margin</em>' attribute.
+	 * @see #getMargin()
+	 * @generated
+	 */
+	void setMargin(double value);
+
+} // Loss_functions_1_1
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/Loss_functions_1_1_1.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/Loss_functions_1_1_1.java
new file mode 100644
index 0000000..f3e0ba4
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/Loss_functions_1_1_1.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Loss functions 111</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_1_1#getP <em>P</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getLoss_functions_1_1_1()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Loss_functions_1_1_1 extends Loss_functions_1_1 {
+	/**
+	 * Returns the value of the '<em><b>P</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>P</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>P</em>' attribute.
+	 * @see #setP(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getLoss_functions_1_1_1_P()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	int getP();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_1_1#getP <em>P</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>P</em>' attribute.
+	 * @see #getP()
+	 * @generated
+	 */
+	void setP(int value);
+
+} // Loss_functions_1_1_1
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/Loss_functions_1_2.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/Loss_functions_1_2.java
new file mode 100644
index 0000000..272f2c2
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/Loss_functions_1_2.java
@@ -0,0 +1,59 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Loss functions 12</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_2#getWeight <em>Weight</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getLoss_functions_1_2()
+ * @model
+ * @generated
+ */
+public interface Loss_functions_1_2 extends Loss_functions_1 {
+	/**
+	 * Returns the value of the '<em><b>Weight</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Weight</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Weight</em>' reference.
+	 * @see #setWeight(Tensor)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getLoss_functions_1_2_Weight()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	Tensor getWeight();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_2#getWeight <em>Weight</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Weight</em>' reference.
+	 * @see #getWeight()
+	 * @generated
+	 */
+	void setWeight(Tensor value);
+
+} // Loss_functions_1_2
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/Loss_functions_1_2_1.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/Loss_functions_1_2_1.java
new file mode 100644
index 0000000..5445711
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/Loss_functions_1_2_1.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Loss functions 121</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_2_1#getIgnore_index <em>Ignore index</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getLoss_functions_1_2_1()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Loss_functions_1_2_1 extends Loss_functions_1_2 {
+	/**
+	 * Returns the value of the '<em><b>Ignore index</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Ignore index</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Ignore index</em>' attribute.
+	 * @see #setIgnore_index(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getLoss_functions_1_2_1_Ignore_index()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	int getIgnore_index();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_2_1#getIgnore_index <em>Ignore index</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Ignore index</em>' attribute.
+	 * @see #getIgnore_index()
+	 * @generated
+	 */
+	void setIgnore_index(int value);
+
+} // Loss_functions_1_2_1
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/MSELoss.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/MSELoss.java
new file mode 100644
index 0000000..ee5a05c
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/MSELoss.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>MSE Loss</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getMSELoss()
+ * @model
+ * @generated
+ */
+public interface MSELoss extends Loss_functions_1 {
+} // MSELoss
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/MarginRankingLoss.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/MarginRankingLoss.java
new file mode 100644
index 0000000..c08eab1
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/MarginRankingLoss.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Margin Ranking Loss</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getMarginRankingLoss()
+ * @model
+ * @generated
+ */
+public interface MarginRankingLoss extends Loss_functions_1_1 {
+} // MarginRankingLoss
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/MultiLabelMarginLoss.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/MultiLabelMarginLoss.java
new file mode 100644
index 0000000..4623a25
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/MultiLabelMarginLoss.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Multi Label Margin Loss</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getMultiLabelMarginLoss()
+ * @model
+ * @generated
+ */
+public interface MultiLabelMarginLoss extends Loss_functions_1 {
+} // MultiLabelMarginLoss
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/MultiMarginLoss.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/MultiMarginLoss.java
new file mode 100644
index 0000000..4ce6a9a
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/MultiMarginLoss.java
@@ -0,0 +1,59 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Multi Margin Loss</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.MultiMarginLoss#getWeight <em>Weight</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getMultiMarginLoss()
+ * @model
+ * @generated
+ */
+public interface MultiMarginLoss extends Loss_functions_1_1_1 {
+	/**
+	 * Returns the value of the '<em><b>Weight</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Weight</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Weight</em>' reference.
+	 * @see #setWeight(Tensor)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getMultiMarginLoss_Weight()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	Tensor getWeight();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.MultiMarginLoss#getWeight <em>Weight</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Weight</em>' reference.
+	 * @see #getWeight()
+	 * @generated
+	 */
+	void setWeight(Tensor value);
+
+} // MultiMarginLoss
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/NLLLoss.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/NLLLoss.java
new file mode 100644
index 0000000..e6acaf4
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/NLLLoss.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>NLL Loss</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getNLLLoss()
+ * @model
+ * @generated
+ */
+public interface NLLLoss extends Loss_functions_1_2_1 {
+} // NLLLoss
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/PoissonNLLLoss.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/PoissonNLLLoss.java
new file mode 100644
index 0000000..290355a
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/PoissonNLLLoss.java
@@ -0,0 +1,112 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Poisson NLL Loss</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.PoissonNLLLoss#isLog_input <em>Log input</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.PoissonNLLLoss#isFull <em>Full</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.PoissonNLLLoss#getEps <em>Eps</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getPoissonNLLLoss()
+ * @model
+ * @generated
+ */
+public interface PoissonNLLLoss extends Loss_functions_1_2 {
+	/**
+	 * Returns the value of the '<em><b>Log input</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Log input</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Log input</em>' attribute.
+	 * @see #setLog_input(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getPoissonNLLLoss_Log_input()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isLog_input();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.PoissonNLLLoss#isLog_input <em>Log input</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Log input</em>' attribute.
+	 * @see #isLog_input()
+	 * @generated
+	 */
+	void setLog_input(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Full</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Full</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Full</em>' attribute.
+	 * @see #setFull(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getPoissonNLLLoss_Full()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isFull();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.PoissonNLLLoss#isFull <em>Full</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Full</em>' attribute.
+	 * @see #isFull()
+	 * @generated
+	 */
+	void setFull(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Eps</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Eps</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Eps</em>' attribute.
+	 * @see #setEps(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getPoissonNLLLoss_Eps()
+	 * @model dataType="org.eclipse.uml2.types.Real" required="true" ordered="false"
+	 * @generated
+	 */
+	double getEps();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.PoissonNLLLoss#getEps <em>Eps</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Eps</em>' attribute.
+	 * @see #getEps()
+	 * @generated
+	 */
+	void setEps(double value);
+
+} // PoissonNLLLoss
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/TripletMarginLoss.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/TripletMarginLoss.java
new file mode 100644
index 0000000..f5ad9eb
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/TripletMarginLoss.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Triplet Margin Loss</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.TripletMarginLoss#isSwap <em>Swap</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getTripletMarginLoss()
+ * @model
+ * @generated
+ */
+public interface TripletMarginLoss extends Loss_functions_1_1_1 {
+	/**
+	 * Returns the value of the '<em><b>Swap</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Swap</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Swap</em>' attribute.
+	 * @see #setSwap(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#getTripletMarginLoss_Swap()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isSwap();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.TripletMarginLoss#isSwap <em>Swap</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Swap</em>' attribute.
+	 * @see #isSwap()
+	 * @generated
+	 */
+	void setSwap(boolean value);
+
+} // TripletMarginLoss
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/BCELossImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/BCELossImpl.java
new file mode 100644
index 0000000..61278db
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/BCELossImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.BCELoss;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>BCE Loss</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class BCELossImpl extends Loss_functions_1_2Impl implements BCELoss {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected BCELossImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Loss_functionsPackage.Literals.BCE_LOSS;
+	}
+
+} //BCELossImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/BCEWithLogitsLossImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/BCEWithLogitsLossImpl.java
new file mode 100644
index 0000000..f1ee3db
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/BCEWithLogitsLossImpl.java
@@ -0,0 +1,168 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.BCEWithLogitsLoss;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>BCE With Logits Loss</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.BCEWithLogitsLossImpl#getPos_weight <em>Pos weight</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class BCEWithLogitsLossImpl extends Loss_functions_1_2Impl implements BCEWithLogitsLoss {
+	/**
+	 * The cached value of the '{@link #getPos_weight() <em>Pos weight</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPos_weight()
+	 * @generated
+	 * @ordered
+	 */
+	protected Tensor pos_weight;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected BCEWithLogitsLossImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Loss_functionsPackage.Literals.BCE_WITH_LOGITS_LOSS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Tensor getPos_weight() {
+		if (pos_weight != null && pos_weight.eIsProxy()) {
+			InternalEObject oldPos_weight = (InternalEObject)pos_weight;
+			pos_weight = (Tensor)eResolveProxy(oldPos_weight);
+			if (pos_weight != oldPos_weight) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, Loss_functionsPackage.BCE_WITH_LOGITS_LOSS__POS_WEIGHT, oldPos_weight, pos_weight));
+			}
+		}
+		return pos_weight;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Tensor basicGetPos_weight() {
+		return pos_weight;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setPos_weight(Tensor newPos_weight) {
+		Tensor oldPos_weight = pos_weight;
+		pos_weight = newPos_weight;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Loss_functionsPackage.BCE_WITH_LOGITS_LOSS__POS_WEIGHT, oldPos_weight, pos_weight));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Loss_functionsPackage.BCE_WITH_LOGITS_LOSS__POS_WEIGHT:
+				if (resolve) return getPos_weight();
+				return basicGetPos_weight();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Loss_functionsPackage.BCE_WITH_LOGITS_LOSS__POS_WEIGHT:
+				setPos_weight((Tensor)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Loss_functionsPackage.BCE_WITH_LOGITS_LOSS__POS_WEIGHT:
+				setPos_weight((Tensor)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Loss_functionsPackage.BCE_WITH_LOGITS_LOSS__POS_WEIGHT:
+				return pos_weight != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //BCEWithLogitsLossImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/CTCLossImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/CTCLossImpl.java
new file mode 100644
index 0000000..dea3d5e
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/CTCLossImpl.java
@@ -0,0 +1,229 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.CTCLoss;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>CTC Loss</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.CTCLossImpl#getBlank <em>Blank</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.CTCLossImpl#isZero_infinity <em>Zero infinity</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class CTCLossImpl extends Loss_functionsImpl implements CTCLoss {
+	/**
+	 * The default value of the '{@link #getBlank() <em>Blank</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBlank()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int BLANK_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getBlank() <em>Blank</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBlank()
+	 * @generated
+	 * @ordered
+	 */
+	protected int blank = BLANK_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isZero_infinity() <em>Zero infinity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isZero_infinity()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean ZERO_INFINITY_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isZero_infinity() <em>Zero infinity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isZero_infinity()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean zero_infinity = ZERO_INFINITY_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CTCLossImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Loss_functionsPackage.Literals.CTC_LOSS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getBlank() {
+		return blank;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBlank(int newBlank) {
+		int oldBlank = blank;
+		blank = newBlank;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Loss_functionsPackage.CTC_LOSS__BLANK, oldBlank, blank));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isZero_infinity() {
+		return zero_infinity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setZero_infinity(boolean newZero_infinity) {
+		boolean oldZero_infinity = zero_infinity;
+		zero_infinity = newZero_infinity;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Loss_functionsPackage.CTC_LOSS__ZERO_INFINITY, oldZero_infinity, zero_infinity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Loss_functionsPackage.CTC_LOSS__BLANK:
+				return getBlank();
+			case Loss_functionsPackage.CTC_LOSS__ZERO_INFINITY:
+				return isZero_infinity();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Loss_functionsPackage.CTC_LOSS__BLANK:
+				setBlank((Integer)newValue);
+				return;
+			case Loss_functionsPackage.CTC_LOSS__ZERO_INFINITY:
+				setZero_infinity((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Loss_functionsPackage.CTC_LOSS__BLANK:
+				setBlank(BLANK_EDEFAULT);
+				return;
+			case Loss_functionsPackage.CTC_LOSS__ZERO_INFINITY:
+				setZero_infinity(ZERO_INFINITY_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Loss_functionsPackage.CTC_LOSS__BLANK:
+				return blank != BLANK_EDEFAULT;
+			case Loss_functionsPackage.CTC_LOSS__ZERO_INFINITY:
+				return zero_infinity != ZERO_INFINITY_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (blank: "); //$NON-NLS-1$
+		result.append(blank);
+		result.append(", zero_infinity: "); //$NON-NLS-1$
+		result.append(zero_infinity);
+		result.append(')');
+		return result.toString();
+	}
+
+} //CTCLossImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/CosineEmbeddingLossImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/CosineEmbeddingLossImpl.java
new file mode 100644
index 0000000..71bcbc5
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/CosineEmbeddingLossImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.CosineEmbeddingLoss;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Cosine Embedding Loss</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class CosineEmbeddingLossImpl extends Loss_functions_1_1Impl implements CosineEmbeddingLoss {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CosineEmbeddingLossImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Loss_functionsPackage.Literals.COSINE_EMBEDDING_LOSS;
+	}
+
+} //CosineEmbeddingLossImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/CrossEntropyLossImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/CrossEntropyLossImpl.java
new file mode 100644
index 0000000..11a1310
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/CrossEntropyLossImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.CrossEntropyLoss;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Cross Entropy Loss</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class CrossEntropyLossImpl extends Loss_functions_1_2_1Impl implements CrossEntropyLoss {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CrossEntropyLossImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Loss_functionsPackage.Literals.CROSS_ENTROPY_LOSS;
+	}
+
+} //CrossEntropyLossImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/HingeEmbeddingLossImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/HingeEmbeddingLossImpl.java
new file mode 100644
index 0000000..c8f05e2
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/HingeEmbeddingLossImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.HingeEmbeddingLoss;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Hinge Embedding Loss</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class HingeEmbeddingLossImpl extends Loss_functions_1_1Impl implements HingeEmbeddingLoss {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected HingeEmbeddingLossImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Loss_functionsPackage.Literals.HINGE_EMBEDDING_LOSS;
+	}
+
+} //HingeEmbeddingLossImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/KLDivLossImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/KLDivLossImpl.java
new file mode 100644
index 0000000..c47ef49
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/KLDivLossImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.KLDivLoss;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>KL Div Loss</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class KLDivLossImpl extends Loss_functions_1Impl implements KLDivLoss {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected KLDivLossImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Loss_functionsPackage.Literals.KL_DIV_LOSS;
+	}
+
+} //KLDivLossImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/L1LossImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/L1LossImpl.java
new file mode 100644
index 0000000..894a7a8
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/L1LossImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.L1Loss;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>L1 Loss</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class L1LossImpl extends Loss_functions_1Impl implements L1Loss {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected L1LossImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Loss_functionsPackage.Literals.L1_LOSS;
+	}
+
+} //L1LossImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/Loss_functionsFactoryImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/Loss_functionsFactoryImpl.java
new file mode 100644
index 0000000..3f49392
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/Loss_functionsFactoryImpl.java
@@ -0,0 +1,298 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class Loss_functionsFactoryImpl extends EFactoryImpl implements Loss_functionsFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static Loss_functionsFactory init() {
+		try {
+			Loss_functionsFactory theLoss_functionsFactory = (Loss_functionsFactory)EPackage.Registry.INSTANCE.getEFactory(Loss_functionsPackage.eNS_URI);
+			if (theLoss_functionsFactory != null) {
+				return theLoss_functionsFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new Loss_functionsFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Loss_functionsFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case Loss_functionsPackage.L1_LOSS: return createL1Loss();
+			case Loss_functionsPackage.MSE_LOSS: return createMSELoss();
+			case Loss_functionsPackage.CTC_LOSS: return createCTCLoss();
+			case Loss_functionsPackage.KL_DIV_LOSS: return createKLDivLoss();
+			case Loss_functionsPackage.MULTI_LABEL_MARGIN_LOSS: return createMultiLabelMarginLoss();
+			case Loss_functionsPackage.LOSS_FUNCTIONS_11: return createLoss_functions_1_1();
+			case Loss_functionsPackage.LOSS_FUNCTIONS_12: return createLoss_functions_1_2();
+			case Loss_functionsPackage.COSINE_EMBEDDING_LOSS: return createCosineEmbeddingLoss();
+			case Loss_functionsPackage.MARGIN_RANKING_LOSS: return createMarginRankingLoss();
+			case Loss_functionsPackage.HINGE_EMBEDDING_LOSS: return createHingeEmbeddingLoss();
+			case Loss_functionsPackage.BCE_LOSS: return createBCELoss();
+			case Loss_functionsPackage.MULTI_MARGIN_LOSS: return createMultiMarginLoss();
+			case Loss_functionsPackage.TRIPLET_MARGIN_LOSS: return createTripletMarginLoss();
+			case Loss_functionsPackage.CROSS_ENTROPY_LOSS: return createCrossEntropyLoss();
+			case Loss_functionsPackage.NLL_LOSS: return createNLLLoss();
+			case Loss_functionsPackage.POISSON_NLL_LOSS: return createPoissonNLLLoss();
+			case Loss_functionsPackage.BCE_WITH_LOGITS_LOSS: return createBCEWithLogitsLoss();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public L1Loss createL1Loss() {
+		L1LossImpl l1Loss = new L1LossImpl();
+		return l1Loss;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public MSELoss createMSELoss() {
+		MSELossImpl mseLoss = new MSELossImpl();
+		return mseLoss;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public CTCLoss createCTCLoss() {
+		CTCLossImpl ctcLoss = new CTCLossImpl();
+		return ctcLoss;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public KLDivLoss createKLDivLoss() {
+		KLDivLossImpl klDivLoss = new KLDivLossImpl();
+		return klDivLoss;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public MultiLabelMarginLoss createMultiLabelMarginLoss() {
+		MultiLabelMarginLossImpl multiLabelMarginLoss = new MultiLabelMarginLossImpl();
+		return multiLabelMarginLoss;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Loss_functions_1_1 createLoss_functions_1_1() {
+		Loss_functions_1_1Impl loss_functions_1_1 = new Loss_functions_1_1Impl();
+		return loss_functions_1_1;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Loss_functions_1_2 createLoss_functions_1_2() {
+		Loss_functions_1_2Impl loss_functions_1_2 = new Loss_functions_1_2Impl();
+		return loss_functions_1_2;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public CosineEmbeddingLoss createCosineEmbeddingLoss() {
+		CosineEmbeddingLossImpl cosineEmbeddingLoss = new CosineEmbeddingLossImpl();
+		return cosineEmbeddingLoss;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public MarginRankingLoss createMarginRankingLoss() {
+		MarginRankingLossImpl marginRankingLoss = new MarginRankingLossImpl();
+		return marginRankingLoss;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public HingeEmbeddingLoss createHingeEmbeddingLoss() {
+		HingeEmbeddingLossImpl hingeEmbeddingLoss = new HingeEmbeddingLossImpl();
+		return hingeEmbeddingLoss;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public BCELoss createBCELoss() {
+		BCELossImpl bceLoss = new BCELossImpl();
+		return bceLoss;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public MultiMarginLoss createMultiMarginLoss() {
+		MultiMarginLossImpl multiMarginLoss = new MultiMarginLossImpl();
+		return multiMarginLoss;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public TripletMarginLoss createTripletMarginLoss() {
+		TripletMarginLossImpl tripletMarginLoss = new TripletMarginLossImpl();
+		return tripletMarginLoss;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public CrossEntropyLoss createCrossEntropyLoss() {
+		CrossEntropyLossImpl crossEntropyLoss = new CrossEntropyLossImpl();
+		return crossEntropyLoss;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NLLLoss createNLLLoss() {
+		NLLLossImpl nllLoss = new NLLLossImpl();
+		return nllLoss;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public PoissonNLLLoss createPoissonNLLLoss() {
+		PoissonNLLLossImpl poissonNLLLoss = new PoissonNLLLossImpl();
+		return poissonNLLLoss;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public BCEWithLogitsLoss createBCEWithLogitsLoss() {
+		BCEWithLogitsLossImpl bceWithLogitsLoss = new BCEWithLogitsLossImpl();
+		return bceWithLogitsLoss;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Loss_functionsPackage getLoss_functionsPackage() {
+		return (Loss_functionsPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static Loss_functionsPackage getPackage() {
+		return Loss_functionsPackage.eINSTANCE;
+	}
+
+} //Loss_functionsFactoryImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/Loss_functionsImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/Loss_functionsImpl.java
new file mode 100644
index 0000000..8cbe26e
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/Loss_functionsImpl.java
@@ -0,0 +1,174 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModelImpl;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Loss functions</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsImpl#getReduction <em>Reduction</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class Loss_functionsImpl extends ModelImpl implements Loss_functions {
+	/**
+	 * The default value of the '{@link #getReduction() <em>Reduction</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getReduction()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String REDUCTION_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getReduction() <em>Reduction</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getReduction()
+	 * @generated
+	 * @ordered
+	 */
+	protected String reduction = REDUCTION_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Loss_functionsImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Loss_functionsPackage.Literals.LOSS_FUNCTIONS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getReduction() {
+		return reduction;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setReduction(String newReduction) {
+		String oldReduction = reduction;
+		reduction = newReduction;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Loss_functionsPackage.LOSS_FUNCTIONS__REDUCTION, oldReduction, reduction));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Loss_functionsPackage.LOSS_FUNCTIONS__REDUCTION:
+				return getReduction();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Loss_functionsPackage.LOSS_FUNCTIONS__REDUCTION:
+				setReduction((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Loss_functionsPackage.LOSS_FUNCTIONS__REDUCTION:
+				setReduction(REDUCTION_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Loss_functionsPackage.LOSS_FUNCTIONS__REDUCTION:
+				return REDUCTION_EDEFAULT == null ? reduction != null : !REDUCTION_EDEFAULT.equals(reduction);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (reduction: "); //$NON-NLS-1$
+		result.append(reduction);
+		result.append(')');
+		return result.toString();
+	}
+
+} //Loss_functionsImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/Loss_functionsPackageImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/Loss_functionsPackageImpl.java
new file mode 100644
index 0000000..d342179
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/Loss_functionsPackageImpl.java
@@ -0,0 +1,1001 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.AIMLPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.Layer_weight_regularizersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.BCELoss;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.BCEWithLogitsLoss;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.CTCLoss;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.CosineEmbeddingLoss;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.CrossEntropyLoss;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.HingeEmbeddingLoss;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.KLDivLoss;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.L1Loss;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsFactory;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_1;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_1_1;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_2;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_2_1;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.MSELoss;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.MarginRankingLoss;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.MultiLabelMarginLoss;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.MultiMarginLoss;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.NLLLoss;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.PoissonNLLLoss;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.TripletMarginLoss;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModulePackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.DatatypesPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl.DatatypesPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.impl.AIMLPackageImpl;
+
+import org.eclipse.uml2.types.TypesPackage;
+
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class Loss_functionsPackageImpl extends EPackageImpl implements Loss_functionsPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass loss_functionsEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass loss_functions_1EClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass l1LossEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass mseLossEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass ctcLossEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass klDivLossEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass multiLabelMarginLossEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass loss_functions_1_1EClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass loss_functions_1_2EClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass cosineEmbeddingLossEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass marginRankingLossEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass hingeEmbeddingLossEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass bceLossEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass loss_functions_1_1_1EClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass multiMarginLossEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass tripletMarginLossEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass loss_functions_1_2_1EClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass crossEntropyLossEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass nllLossEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass poissonNLLLossEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass bceWithLogitsLossEClass = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private Loss_functionsPackageImpl() {
+		super(eNS_URI, Loss_functionsFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>This method is used to initialize {@link Loss_functionsPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static Loss_functionsPackage init() {
+		if (isInited) return (Loss_functionsPackage)EPackage.Registry.INSTANCE.getEPackage(Loss_functionsPackage.eNS_URI);
+
+		// Obtain or create and register package
+		Object registeredLoss_functionsPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		Loss_functionsPackageImpl theLoss_functionsPackage = registeredLoss_functionsPackage instanceof Loss_functionsPackageImpl ? (Loss_functionsPackageImpl)registeredLoss_functionsPackage : new Loss_functionsPackageImpl();
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		EcorePackage.eINSTANCE.eClass();
+		TypesPackage.eINSTANCE.eClass();
+		UMLPackage.eINSTANCE.eClass();
+
+		// Obtain or create and register interdependencies
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AIMLPackage.eNS_URI);
+		AIMLPackageImpl theAIMLPackage = (AIMLPackageImpl)(registeredPackage instanceof AIMLPackageImpl ? registeredPackage : AIMLPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		ModulePackageImpl theModulePackage = (ModulePackageImpl)(registeredPackage instanceof ModulePackageImpl ? registeredPackage : ModulePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(TensorPackage.eNS_URI);
+		TensorPackageImpl theTensorPackage = (TensorPackageImpl)(registeredPackage instanceof TensorPackageImpl ? registeredPackage : TensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DatatypesPackage.eNS_URI);
+		DatatypesPackageImpl theDatatypesPackage = (DatatypesPackageImpl)(registeredPackage instanceof DatatypesPackageImpl ? registeredPackage : DatatypesPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Pooling_layersPackage.eNS_URI);
+		Pooling_layersPackageImpl thePooling_layersPackage = (Pooling_layersPackageImpl)(registeredPackage instanceof Pooling_layersPackageImpl ? registeredPackage : Pooling_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Convolution_layersPackage.eNS_URI);
+		Convolution_layersPackageImpl theConvolution_layersPackage = (Convolution_layersPackageImpl)(registeredPackage instanceof Convolution_layersPackageImpl ? registeredPackage : Convolution_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_constraintsPackage.eNS_URI);
+		Layer_weight_constraintsPackageImpl theLayer_weight_constraintsPackage = (Layer_weight_constraintsPackageImpl)(registeredPackage instanceof Layer_weight_constraintsPackageImpl ? registeredPackage : Layer_weight_constraintsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Padding_layersPackage.eNS_URI);
+		Padding_layersPackageImpl thePadding_layersPackage = (Padding_layersPackageImpl)(registeredPackage instanceof Padding_layersPackageImpl ? registeredPackage : Padding_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NonLinearActivationsPackage.eNS_URI);
+		NonLinearActivationsPackageImpl theNonLinearActivationsPackage = (NonLinearActivationsPackageImpl)(registeredPackage instanceof NonLinearActivationsPackageImpl ? registeredPackage : NonLinearActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftMinMaxActivationsPackage.eNS_URI);
+		SoftMinMaxActivationsPackageImpl theSoftMinMaxActivationsPackage = (SoftMinMaxActivationsPackageImpl)(registeredPackage instanceof SoftMinMaxActivationsPackageImpl ? registeredPackage : SoftMinMaxActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Normalization_layersPackage.eNS_URI);
+		Normalization_layersPackageImpl theNormalization_layersPackage = (Normalization_layersPackageImpl)(registeredPackage instanceof Normalization_layersPackageImpl ? registeredPackage : Normalization_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Recurrent_layersPackage.eNS_URI);
+		Recurrent_layersPackageImpl theRecurrent_layersPackage = (Recurrent_layersPackageImpl)(registeredPackage instanceof Recurrent_layersPackageImpl ? registeredPackage : Recurrent_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Transformer_layersPackage.eNS_URI);
+		Transformer_layersPackageImpl theTransformer_layersPackage = (Transformer_layersPackageImpl)(registeredPackage instanceof Transformer_layersPackageImpl ? registeredPackage : Transformer_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Linear_layersPackage.eNS_URI);
+		Linear_layersPackageImpl theLinear_layersPackage = (Linear_layersPackageImpl)(registeredPackage instanceof Linear_layersPackageImpl ? registeredPackage : Linear_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Dropout_layersPackage.eNS_URI);
+		Dropout_layersPackageImpl theDropout_layersPackage = (Dropout_layersPackageImpl)(registeredPackage instanceof Dropout_layersPackageImpl ? registeredPackage : Dropout_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Sparse_layersPackage.eNS_URI);
+		Sparse_layersPackageImpl theSparse_layersPackage = (Sparse_layersPackageImpl)(registeredPackage instanceof Sparse_layersPackageImpl ? registeredPackage : Sparse_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Distance_functionsPackage.eNS_URI);
+		Distance_functionsPackageImpl theDistance_functionsPackage = (Distance_functionsPackageImpl)(registeredPackage instanceof Distance_functionsPackageImpl ? registeredPackage : Distance_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Vision_layersPackage.eNS_URI);
+		Vision_layersPackageImpl theVision_layersPackage = (Vision_layersPackageImpl)(registeredPackage instanceof Vision_layersPackageImpl ? registeredPackage : Vision_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DataParallel_layersPackage.eNS_URI);
+		DataParallel_layersPackageImpl theDataParallel_layersPackage = (DataParallel_layersPackageImpl)(registeredPackage instanceof DataParallel_layersPackageImpl ? registeredPackage : DataParallel_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_regularizersPackage.eNS_URI);
+		Layer_weight_regularizersPackageImpl theLayer_weight_regularizersPackage = (Layer_weight_regularizersPackageImpl)(registeredPackage instanceof Layer_weight_regularizersPackageImpl ? registeredPackage : Layer_weight_regularizersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_initializersPackage.eNS_URI);
+		Layer_weight_initializersPackageImpl theLayer_weight_initializersPackage = (Layer_weight_initializersPackageImpl)(registeredPackage instanceof Layer_weight_initializersPackageImpl ? registeredPackage : Layer_weight_initializersPackage.eINSTANCE);
+
+		// Create package meta-data objects
+		theLoss_functionsPackage.createPackageContents();
+		theAIMLPackage.createPackageContents();
+		theModulePackage.createPackageContents();
+		theTensorPackage.createPackageContents();
+		theDatatypesPackage.createPackageContents();
+		thePooling_layersPackage.createPackageContents();
+		theConvolution_layersPackage.createPackageContents();
+		theLayer_weight_constraintsPackage.createPackageContents();
+		thePadding_layersPackage.createPackageContents();
+		theNonLinearActivationsPackage.createPackageContents();
+		theSoftMinMaxActivationsPackage.createPackageContents();
+		theNormalization_layersPackage.createPackageContents();
+		theRecurrent_layersPackage.createPackageContents();
+		theTransformer_layersPackage.createPackageContents();
+		theLinear_layersPackage.createPackageContents();
+		theDropout_layersPackage.createPackageContents();
+		theSparse_layersPackage.createPackageContents();
+		theDistance_functionsPackage.createPackageContents();
+		theVision_layersPackage.createPackageContents();
+		theDataParallel_layersPackage.createPackageContents();
+		theLayer_weight_regularizersPackage.createPackageContents();
+		theLayer_weight_initializersPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theLoss_functionsPackage.initializePackageContents();
+		theAIMLPackage.initializePackageContents();
+		theModulePackage.initializePackageContents();
+		theTensorPackage.initializePackageContents();
+		theDatatypesPackage.initializePackageContents();
+		thePooling_layersPackage.initializePackageContents();
+		theConvolution_layersPackage.initializePackageContents();
+		theLayer_weight_constraintsPackage.initializePackageContents();
+		thePadding_layersPackage.initializePackageContents();
+		theNonLinearActivationsPackage.initializePackageContents();
+		theSoftMinMaxActivationsPackage.initializePackageContents();
+		theNormalization_layersPackage.initializePackageContents();
+		theRecurrent_layersPackage.initializePackageContents();
+		theTransformer_layersPackage.initializePackageContents();
+		theLinear_layersPackage.initializePackageContents();
+		theDropout_layersPackage.initializePackageContents();
+		theSparse_layersPackage.initializePackageContents();
+		theDistance_functionsPackage.initializePackageContents();
+		theVision_layersPackage.initializePackageContents();
+		theDataParallel_layersPackage.initializePackageContents();
+		theLayer_weight_regularizersPackage.initializePackageContents();
+		theLayer_weight_initializersPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theLoss_functionsPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(Loss_functionsPackage.eNS_URI, theLoss_functionsPackage);
+		return theLoss_functionsPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getLoss_functions() {
+		return loss_functionsEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLoss_functions_Reduction() {
+		return (EAttribute)loss_functionsEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getLoss_functions_1() {
+		return loss_functions_1EClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLoss_functions_1_Size_average() {
+		return (EAttribute)loss_functions_1EClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLoss_functions_1_Reduce() {
+		return (EAttribute)loss_functions_1EClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getL1Loss() {
+		return l1LossEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getMSELoss() {
+		return mseLossEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getCTCLoss() {
+		return ctcLossEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getCTCLoss_Blank() {
+		return (EAttribute)ctcLossEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getCTCLoss_Zero_infinity() {
+		return (EAttribute)ctcLossEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getKLDivLoss() {
+		return klDivLossEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getMultiLabelMarginLoss() {
+		return multiLabelMarginLossEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getLoss_functions_1_1() {
+		return loss_functions_1_1EClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLoss_functions_1_1_Margin() {
+		return (EAttribute)loss_functions_1_1EClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getLoss_functions_1_2() {
+		return loss_functions_1_2EClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getLoss_functions_1_2_Weight() {
+		return (EReference)loss_functions_1_2EClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getCosineEmbeddingLoss() {
+		return cosineEmbeddingLossEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getMarginRankingLoss() {
+		return marginRankingLossEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getHingeEmbeddingLoss() {
+		return hingeEmbeddingLossEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getBCELoss() {
+		return bceLossEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getLoss_functions_1_1_1() {
+		return loss_functions_1_1_1EClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLoss_functions_1_1_1_P() {
+		return (EAttribute)loss_functions_1_1_1EClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getMultiMarginLoss() {
+		return multiMarginLossEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getMultiMarginLoss_Weight() {
+		return (EReference)multiMarginLossEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getTripletMarginLoss() {
+		return tripletMarginLossEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getTripletMarginLoss_Swap() {
+		return (EAttribute)tripletMarginLossEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getLoss_functions_1_2_1() {
+		return loss_functions_1_2_1EClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLoss_functions_1_2_1_Ignore_index() {
+		return (EAttribute)loss_functions_1_2_1EClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getCrossEntropyLoss() {
+		return crossEntropyLossEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getNLLLoss() {
+		return nllLossEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getPoissonNLLLoss() {
+		return poissonNLLLossEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPoissonNLLLoss_Log_input() {
+		return (EAttribute)poissonNLLLossEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPoissonNLLLoss_Full() {
+		return (EAttribute)poissonNLLLossEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPoissonNLLLoss_Eps() {
+		return (EAttribute)poissonNLLLossEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getBCEWithLogitsLoss() {
+		return bceWithLogitsLossEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getBCEWithLogitsLoss_Pos_weight() {
+		return (EReference)bceWithLogitsLossEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Loss_functionsFactory getLoss_functionsFactory() {
+		return (Loss_functionsFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		loss_functionsEClass = createEClass(LOSS_FUNCTIONS);
+		createEAttribute(loss_functionsEClass, LOSS_FUNCTIONS__REDUCTION);
+
+		loss_functions_1EClass = createEClass(LOSS_FUNCTIONS_1);
+		createEAttribute(loss_functions_1EClass, LOSS_FUNCTIONS_1__SIZE_AVERAGE);
+		createEAttribute(loss_functions_1EClass, LOSS_FUNCTIONS_1__REDUCE);
+
+		l1LossEClass = createEClass(L1_LOSS);
+
+		mseLossEClass = createEClass(MSE_LOSS);
+
+		ctcLossEClass = createEClass(CTC_LOSS);
+		createEAttribute(ctcLossEClass, CTC_LOSS__BLANK);
+		createEAttribute(ctcLossEClass, CTC_LOSS__ZERO_INFINITY);
+
+		klDivLossEClass = createEClass(KL_DIV_LOSS);
+
+		multiLabelMarginLossEClass = createEClass(MULTI_LABEL_MARGIN_LOSS);
+
+		loss_functions_1_1EClass = createEClass(LOSS_FUNCTIONS_11);
+		createEAttribute(loss_functions_1_1EClass, LOSS_FUNCTIONS_11__MARGIN);
+
+		loss_functions_1_2EClass = createEClass(LOSS_FUNCTIONS_12);
+		createEReference(loss_functions_1_2EClass, LOSS_FUNCTIONS_12__WEIGHT);
+
+		cosineEmbeddingLossEClass = createEClass(COSINE_EMBEDDING_LOSS);
+
+		marginRankingLossEClass = createEClass(MARGIN_RANKING_LOSS);
+
+		hingeEmbeddingLossEClass = createEClass(HINGE_EMBEDDING_LOSS);
+
+		bceLossEClass = createEClass(BCE_LOSS);
+
+		loss_functions_1_1_1EClass = createEClass(LOSS_FUNCTIONS_111);
+		createEAttribute(loss_functions_1_1_1EClass, LOSS_FUNCTIONS_111__P);
+
+		multiMarginLossEClass = createEClass(MULTI_MARGIN_LOSS);
+		createEReference(multiMarginLossEClass, MULTI_MARGIN_LOSS__WEIGHT);
+
+		tripletMarginLossEClass = createEClass(TRIPLET_MARGIN_LOSS);
+		createEAttribute(tripletMarginLossEClass, TRIPLET_MARGIN_LOSS__SWAP);
+
+		loss_functions_1_2_1EClass = createEClass(LOSS_FUNCTIONS_121);
+		createEAttribute(loss_functions_1_2_1EClass, LOSS_FUNCTIONS_121__IGNORE_INDEX);
+
+		crossEntropyLossEClass = createEClass(CROSS_ENTROPY_LOSS);
+
+		nllLossEClass = createEClass(NLL_LOSS);
+
+		poissonNLLLossEClass = createEClass(POISSON_NLL_LOSS);
+		createEAttribute(poissonNLLLossEClass, POISSON_NLL_LOSS__LOG_INPUT);
+		createEAttribute(poissonNLLLossEClass, POISSON_NLL_LOSS__FULL);
+		createEAttribute(poissonNLLLossEClass, POISSON_NLL_LOSS__EPS);
+
+		bceWithLogitsLossEClass = createEClass(BCE_WITH_LOGITS_LOSS);
+		createEReference(bceWithLogitsLossEClass, BCE_WITH_LOGITS_LOSS__POS_WEIGHT);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		ModulePackage theModulePackage = (ModulePackage)EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+		TensorPackage theTensorPackage = (TensorPackage)EPackage.Registry.INSTANCE.getEPackage(TensorPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		loss_functionsEClass.getESuperTypes().add(theModulePackage.getModel());
+		loss_functions_1EClass.getESuperTypes().add(this.getLoss_functions());
+		l1LossEClass.getESuperTypes().add(this.getLoss_functions_1());
+		mseLossEClass.getESuperTypes().add(this.getLoss_functions_1());
+		ctcLossEClass.getESuperTypes().add(this.getLoss_functions());
+		klDivLossEClass.getESuperTypes().add(this.getLoss_functions_1());
+		multiLabelMarginLossEClass.getESuperTypes().add(this.getLoss_functions_1());
+		loss_functions_1_1EClass.getESuperTypes().add(this.getLoss_functions_1());
+		loss_functions_1_2EClass.getESuperTypes().add(this.getLoss_functions_1());
+		cosineEmbeddingLossEClass.getESuperTypes().add(this.getLoss_functions_1_1());
+		marginRankingLossEClass.getESuperTypes().add(this.getLoss_functions_1_1());
+		hingeEmbeddingLossEClass.getESuperTypes().add(this.getLoss_functions_1_1());
+		bceLossEClass.getESuperTypes().add(this.getLoss_functions_1_2());
+		loss_functions_1_1_1EClass.getESuperTypes().add(this.getLoss_functions_1_1());
+		multiMarginLossEClass.getESuperTypes().add(this.getLoss_functions_1_1_1());
+		tripletMarginLossEClass.getESuperTypes().add(this.getLoss_functions_1_1_1());
+		loss_functions_1_2_1EClass.getESuperTypes().add(this.getLoss_functions_1_2());
+		crossEntropyLossEClass.getESuperTypes().add(this.getLoss_functions_1_2_1());
+		nllLossEClass.getESuperTypes().add(this.getLoss_functions_1_2_1());
+		poissonNLLLossEClass.getESuperTypes().add(this.getLoss_functions_1_2());
+		bceWithLogitsLossEClass.getESuperTypes().add(this.getLoss_functions_1_2());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(loss_functionsEClass, Loss_functions.class, "Loss_functions", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getLoss_functions_Reduction(), theTypesPackage.getString(), "reduction", null, 0, 1, Loss_functions.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(loss_functions_1EClass, Loss_functions_1.class, "Loss_functions_1", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getLoss_functions_1_Size_average(), theTypesPackage.getBoolean(), "size_average", null, 0, 1, Loss_functions_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getLoss_functions_1_Reduce(), theTypesPackage.getBoolean(), "reduce", null, 0, 1, Loss_functions_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(l1LossEClass, L1Loss.class, "L1Loss", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(mseLossEClass, MSELoss.class, "MSELoss", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(ctcLossEClass, CTCLoss.class, "CTCLoss", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getCTCLoss_Blank(), theTypesPackage.getInteger(), "blank", null, 0, 1, CTCLoss.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getCTCLoss_Zero_infinity(), theTypesPackage.getBoolean(), "zero_infinity", null, 0, 1, CTCLoss.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(klDivLossEClass, KLDivLoss.class, "KLDivLoss", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(multiLabelMarginLossEClass, MultiLabelMarginLoss.class, "MultiLabelMarginLoss", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(loss_functions_1_1EClass, Loss_functions_1_1.class, "Loss_functions_1_1", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getLoss_functions_1_1_Margin(), theTypesPackage.getReal(), "margin", null, 0, 1, Loss_functions_1_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(loss_functions_1_2EClass, Loss_functions_1_2.class, "Loss_functions_1_2", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEReference(getLoss_functions_1_2_Weight(), theTensorPackage.getTensor(), null, "weight", null, 0, 1, Loss_functions_1_2.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(cosineEmbeddingLossEClass, CosineEmbeddingLoss.class, "CosineEmbeddingLoss", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(marginRankingLossEClass, MarginRankingLoss.class, "MarginRankingLoss", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(hingeEmbeddingLossEClass, HingeEmbeddingLoss.class, "HingeEmbeddingLoss", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(bceLossEClass, BCELoss.class, "BCELoss", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(loss_functions_1_1_1EClass, Loss_functions_1_1_1.class, "Loss_functions_1_1_1", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getLoss_functions_1_1_1_P(), theTypesPackage.getInteger(), "p", null, 0, 1, Loss_functions_1_1_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(multiMarginLossEClass, MultiMarginLoss.class, "MultiMarginLoss", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEReference(getMultiMarginLoss_Weight(), theTensorPackage.getTensor(), null, "weight", null, 0, 1, MultiMarginLoss.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(tripletMarginLossEClass, TripletMarginLoss.class, "TripletMarginLoss", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getTripletMarginLoss_Swap(), theTypesPackage.getBoolean(), "swap", null, 0, 1, TripletMarginLoss.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(loss_functions_1_2_1EClass, Loss_functions_1_2_1.class, "Loss_functions_1_2_1", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getLoss_functions_1_2_1_Ignore_index(), theTypesPackage.getInteger(), "ignore_index", null, 0, 1, Loss_functions_1_2_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(crossEntropyLossEClass, CrossEntropyLoss.class, "CrossEntropyLoss", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(nllLossEClass, NLLLoss.class, "NLLLoss", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(poissonNLLLossEClass, PoissonNLLLoss.class, "PoissonNLLLoss", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getPoissonNLLLoss_Log_input(), theTypesPackage.getBoolean(), "log_input", null, 0, 1, PoissonNLLLoss.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getPoissonNLLLoss_Full(), theTypesPackage.getBoolean(), "full", null, 0, 1, PoissonNLLLoss.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getPoissonNLLLoss_Eps(), theTypesPackage.getReal(), "eps", null, 1, 1, PoissonNLLLoss.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(bceWithLogitsLossEClass, BCEWithLogitsLoss.class, "BCEWithLogitsLoss", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEReference(getBCEWithLogitsLoss_Pos_weight(), theTensorPackage.getTensor(), null, "pos_weight", null, 0, 1, BCEWithLogitsLoss.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+	}
+
+} //Loss_functionsPackageImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/Loss_functions_1Impl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/Loss_functions_1Impl.java
new file mode 100644
index 0000000..c581ee3
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/Loss_functions_1Impl.java
@@ -0,0 +1,229 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Loss functions 1</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functions_1Impl#isSize_average <em>Size average</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functions_1Impl#isReduce <em>Reduce</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class Loss_functions_1Impl extends Loss_functionsImpl implements Loss_functions_1 {
+	/**
+	 * The default value of the '{@link #isSize_average() <em>Size average</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSize_average()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean SIZE_AVERAGE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isSize_average() <em>Size average</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSize_average()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean size_average = SIZE_AVERAGE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isReduce() <em>Reduce</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isReduce()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean REDUCE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isReduce() <em>Reduce</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isReduce()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean reduce = REDUCE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Loss_functions_1Impl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Loss_functionsPackage.Literals.LOSS_FUNCTIONS_1;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isSize_average() {
+		return size_average;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setSize_average(boolean newSize_average) {
+		boolean oldSize_average = size_average;
+		size_average = newSize_average;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Loss_functionsPackage.LOSS_FUNCTIONS_1__SIZE_AVERAGE, oldSize_average, size_average));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isReduce() {
+		return reduce;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setReduce(boolean newReduce) {
+		boolean oldReduce = reduce;
+		reduce = newReduce;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Loss_functionsPackage.LOSS_FUNCTIONS_1__REDUCE, oldReduce, reduce));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Loss_functionsPackage.LOSS_FUNCTIONS_1__SIZE_AVERAGE:
+				return isSize_average();
+			case Loss_functionsPackage.LOSS_FUNCTIONS_1__REDUCE:
+				return isReduce();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Loss_functionsPackage.LOSS_FUNCTIONS_1__SIZE_AVERAGE:
+				setSize_average((Boolean)newValue);
+				return;
+			case Loss_functionsPackage.LOSS_FUNCTIONS_1__REDUCE:
+				setReduce((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Loss_functionsPackage.LOSS_FUNCTIONS_1__SIZE_AVERAGE:
+				setSize_average(SIZE_AVERAGE_EDEFAULT);
+				return;
+			case Loss_functionsPackage.LOSS_FUNCTIONS_1__REDUCE:
+				setReduce(REDUCE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Loss_functionsPackage.LOSS_FUNCTIONS_1__SIZE_AVERAGE:
+				return size_average != SIZE_AVERAGE_EDEFAULT;
+			case Loss_functionsPackage.LOSS_FUNCTIONS_1__REDUCE:
+				return reduce != REDUCE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (size_average: "); //$NON-NLS-1$
+		result.append(size_average);
+		result.append(", reduce: "); //$NON-NLS-1$
+		result.append(reduce);
+		result.append(')');
+		return result.toString();
+	}
+
+} //Loss_functions_1Impl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/Loss_functions_1_1Impl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/Loss_functions_1_1Impl.java
new file mode 100644
index 0000000..0223651
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/Loss_functions_1_1Impl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_1;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Loss functions 11</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functions_1_1Impl#getMargin <em>Margin</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class Loss_functions_1_1Impl extends Loss_functions_1Impl implements Loss_functions_1_1 {
+	/**
+	 * The default value of the '{@link #getMargin() <em>Margin</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMargin()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double MARGIN_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getMargin() <em>Margin</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMargin()
+	 * @generated
+	 * @ordered
+	 */
+	protected double margin = MARGIN_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Loss_functions_1_1Impl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Loss_functionsPackage.Literals.LOSS_FUNCTIONS_11;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getMargin() {
+		return margin;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setMargin(double newMargin) {
+		double oldMargin = margin;
+		margin = newMargin;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Loss_functionsPackage.LOSS_FUNCTIONS_11__MARGIN, oldMargin, margin));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Loss_functionsPackage.LOSS_FUNCTIONS_11__MARGIN:
+				return getMargin();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Loss_functionsPackage.LOSS_FUNCTIONS_11__MARGIN:
+				setMargin((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Loss_functionsPackage.LOSS_FUNCTIONS_11__MARGIN:
+				setMargin(MARGIN_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Loss_functionsPackage.LOSS_FUNCTIONS_11__MARGIN:
+				return margin != MARGIN_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (margin: "); //$NON-NLS-1$
+		result.append(margin);
+		result.append(')');
+		return result.toString();
+	}
+
+} //Loss_functions_1_1Impl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/Loss_functions_1_1_1Impl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/Loss_functions_1_1_1Impl.java
new file mode 100644
index 0000000..ab6c8c0
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/Loss_functions_1_1_1Impl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_1_1;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Loss functions 111</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functions_1_1_1Impl#getP <em>P</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class Loss_functions_1_1_1Impl extends Loss_functions_1_1Impl implements Loss_functions_1_1_1 {
+	/**
+	 * The default value of the '{@link #getP() <em>P</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getP()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int P_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getP() <em>P</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getP()
+	 * @generated
+	 * @ordered
+	 */
+	protected int p = P_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Loss_functions_1_1_1Impl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Loss_functionsPackage.Literals.LOSS_FUNCTIONS_111;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getP() {
+		return p;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setP(int newP) {
+		int oldP = p;
+		p = newP;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Loss_functionsPackage.LOSS_FUNCTIONS_111__P, oldP, p));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Loss_functionsPackage.LOSS_FUNCTIONS_111__P:
+				return getP();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Loss_functionsPackage.LOSS_FUNCTIONS_111__P:
+				setP((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Loss_functionsPackage.LOSS_FUNCTIONS_111__P:
+				setP(P_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Loss_functionsPackage.LOSS_FUNCTIONS_111__P:
+				return p != P_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (p: "); //$NON-NLS-1$
+		result.append(p);
+		result.append(')');
+		return result.toString();
+	}
+
+} //Loss_functions_1_1_1Impl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/Loss_functions_1_2Impl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/Loss_functions_1_2Impl.java
new file mode 100644
index 0000000..0d89b1c
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/Loss_functions_1_2Impl.java
@@ -0,0 +1,168 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_2;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Loss functions 12</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functions_1_2Impl#getWeight <em>Weight</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class Loss_functions_1_2Impl extends Loss_functions_1Impl implements Loss_functions_1_2 {
+	/**
+	 * The cached value of the '{@link #getWeight() <em>Weight</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getWeight()
+	 * @generated
+	 * @ordered
+	 */
+	protected Tensor weight;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Loss_functions_1_2Impl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Loss_functionsPackage.Literals.LOSS_FUNCTIONS_12;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Tensor getWeight() {
+		if (weight != null && weight.eIsProxy()) {
+			InternalEObject oldWeight = (InternalEObject)weight;
+			weight = (Tensor)eResolveProxy(oldWeight);
+			if (weight != oldWeight) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, Loss_functionsPackage.LOSS_FUNCTIONS_12__WEIGHT, oldWeight, weight));
+			}
+		}
+		return weight;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Tensor basicGetWeight() {
+		return weight;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setWeight(Tensor newWeight) {
+		Tensor oldWeight = weight;
+		weight = newWeight;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Loss_functionsPackage.LOSS_FUNCTIONS_12__WEIGHT, oldWeight, weight));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Loss_functionsPackage.LOSS_FUNCTIONS_12__WEIGHT:
+				if (resolve) return getWeight();
+				return basicGetWeight();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Loss_functionsPackage.LOSS_FUNCTIONS_12__WEIGHT:
+				setWeight((Tensor)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Loss_functionsPackage.LOSS_FUNCTIONS_12__WEIGHT:
+				setWeight((Tensor)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Loss_functionsPackage.LOSS_FUNCTIONS_12__WEIGHT:
+				return weight != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //Loss_functions_1_2Impl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/Loss_functions_1_2_1Impl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/Loss_functions_1_2_1Impl.java
new file mode 100644
index 0000000..3a560f1
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/Loss_functions_1_2_1Impl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_2_1;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Loss functions 121</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functions_1_2_1Impl#getIgnore_index <em>Ignore index</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class Loss_functions_1_2_1Impl extends Loss_functions_1_2Impl implements Loss_functions_1_2_1 {
+	/**
+	 * The default value of the '{@link #getIgnore_index() <em>Ignore index</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIgnore_index()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int IGNORE_INDEX_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getIgnore_index() <em>Ignore index</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIgnore_index()
+	 * @generated
+	 * @ordered
+	 */
+	protected int ignore_index = IGNORE_INDEX_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Loss_functions_1_2_1Impl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Loss_functionsPackage.Literals.LOSS_FUNCTIONS_121;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getIgnore_index() {
+		return ignore_index;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setIgnore_index(int newIgnore_index) {
+		int oldIgnore_index = ignore_index;
+		ignore_index = newIgnore_index;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Loss_functionsPackage.LOSS_FUNCTIONS_121__IGNORE_INDEX, oldIgnore_index, ignore_index));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Loss_functionsPackage.LOSS_FUNCTIONS_121__IGNORE_INDEX:
+				return getIgnore_index();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Loss_functionsPackage.LOSS_FUNCTIONS_121__IGNORE_INDEX:
+				setIgnore_index((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Loss_functionsPackage.LOSS_FUNCTIONS_121__IGNORE_INDEX:
+				setIgnore_index(IGNORE_INDEX_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Loss_functionsPackage.LOSS_FUNCTIONS_121__IGNORE_INDEX:
+				return ignore_index != IGNORE_INDEX_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (ignore_index: "); //$NON-NLS-1$
+		result.append(ignore_index);
+		result.append(')');
+		return result.toString();
+	}
+
+} //Loss_functions_1_2_1Impl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/MSELossImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/MSELossImpl.java
new file mode 100644
index 0000000..76645ca
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/MSELossImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.MSELoss;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>MSE Loss</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class MSELossImpl extends Loss_functions_1Impl implements MSELoss {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MSELossImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Loss_functionsPackage.Literals.MSE_LOSS;
+	}
+
+} //MSELossImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/MarginRankingLossImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/MarginRankingLossImpl.java
new file mode 100644
index 0000000..862a1a9
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/MarginRankingLossImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.MarginRankingLoss;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Margin Ranking Loss</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class MarginRankingLossImpl extends Loss_functions_1_1Impl implements MarginRankingLoss {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MarginRankingLossImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Loss_functionsPackage.Literals.MARGIN_RANKING_LOSS;
+	}
+
+} //MarginRankingLossImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/MultiLabelMarginLossImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/MultiLabelMarginLossImpl.java
new file mode 100644
index 0000000..eadc61a
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/MultiLabelMarginLossImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.MultiLabelMarginLoss;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Multi Label Margin Loss</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class MultiLabelMarginLossImpl extends Loss_functions_1Impl implements MultiLabelMarginLoss {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MultiLabelMarginLossImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Loss_functionsPackage.Literals.MULTI_LABEL_MARGIN_LOSS;
+	}
+
+} //MultiLabelMarginLossImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/MultiMarginLossImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/MultiMarginLossImpl.java
new file mode 100644
index 0000000..94a74aa
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/MultiMarginLossImpl.java
@@ -0,0 +1,168 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.MultiMarginLoss;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Multi Margin Loss</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.MultiMarginLossImpl#getWeight <em>Weight</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class MultiMarginLossImpl extends Loss_functions_1_1_1Impl implements MultiMarginLoss {
+	/**
+	 * The cached value of the '{@link #getWeight() <em>Weight</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getWeight()
+	 * @generated
+	 * @ordered
+	 */
+	protected Tensor weight;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MultiMarginLossImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Loss_functionsPackage.Literals.MULTI_MARGIN_LOSS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Tensor getWeight() {
+		if (weight != null && weight.eIsProxy()) {
+			InternalEObject oldWeight = (InternalEObject)weight;
+			weight = (Tensor)eResolveProxy(oldWeight);
+			if (weight != oldWeight) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, Loss_functionsPackage.MULTI_MARGIN_LOSS__WEIGHT, oldWeight, weight));
+			}
+		}
+		return weight;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Tensor basicGetWeight() {
+		return weight;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setWeight(Tensor newWeight) {
+		Tensor oldWeight = weight;
+		weight = newWeight;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Loss_functionsPackage.MULTI_MARGIN_LOSS__WEIGHT, oldWeight, weight));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Loss_functionsPackage.MULTI_MARGIN_LOSS__WEIGHT:
+				if (resolve) return getWeight();
+				return basicGetWeight();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Loss_functionsPackage.MULTI_MARGIN_LOSS__WEIGHT:
+				setWeight((Tensor)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Loss_functionsPackage.MULTI_MARGIN_LOSS__WEIGHT:
+				setWeight((Tensor)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Loss_functionsPackage.MULTI_MARGIN_LOSS__WEIGHT:
+				return weight != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //MultiMarginLossImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/NLLLossImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/NLLLossImpl.java
new file mode 100644
index 0000000..ad943a1
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/NLLLossImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.NLLLoss;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>NLL Loss</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class NLLLossImpl extends Loss_functions_1_2_1Impl implements NLLLoss {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected NLLLossImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Loss_functionsPackage.Literals.NLL_LOSS;
+	}
+
+} //NLLLossImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/PoissonNLLLossImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/PoissonNLLLossImpl.java
new file mode 100644
index 0000000..c56a094
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/PoissonNLLLossImpl.java
@@ -0,0 +1,285 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.PoissonNLLLoss;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Poisson NLL Loss</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.PoissonNLLLossImpl#isLog_input <em>Log input</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.PoissonNLLLossImpl#isFull <em>Full</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.PoissonNLLLossImpl#getEps <em>Eps</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class PoissonNLLLossImpl extends Loss_functions_1_2Impl implements PoissonNLLLoss {
+	/**
+	 * The default value of the '{@link #isLog_input() <em>Log input</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isLog_input()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean LOG_INPUT_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isLog_input() <em>Log input</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isLog_input()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean log_input = LOG_INPUT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isFull() <em>Full</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isFull()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean FULL_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isFull() <em>Full</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isFull()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean full = FULL_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getEps() <em>Eps</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEps()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double EPS_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getEps() <em>Eps</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEps()
+	 * @generated
+	 * @ordered
+	 */
+	protected double eps = EPS_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PoissonNLLLossImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Loss_functionsPackage.Literals.POISSON_NLL_LOSS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isLog_input() {
+		return log_input;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setLog_input(boolean newLog_input) {
+		boolean oldLog_input = log_input;
+		log_input = newLog_input;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Loss_functionsPackage.POISSON_NLL_LOSS__LOG_INPUT, oldLog_input, log_input));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isFull() {
+		return full;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setFull(boolean newFull) {
+		boolean oldFull = full;
+		full = newFull;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Loss_functionsPackage.POISSON_NLL_LOSS__FULL, oldFull, full));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getEps() {
+		return eps;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setEps(double newEps) {
+		double oldEps = eps;
+		eps = newEps;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Loss_functionsPackage.POISSON_NLL_LOSS__EPS, oldEps, eps));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Loss_functionsPackage.POISSON_NLL_LOSS__LOG_INPUT:
+				return isLog_input();
+			case Loss_functionsPackage.POISSON_NLL_LOSS__FULL:
+				return isFull();
+			case Loss_functionsPackage.POISSON_NLL_LOSS__EPS:
+				return getEps();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Loss_functionsPackage.POISSON_NLL_LOSS__LOG_INPUT:
+				setLog_input((Boolean)newValue);
+				return;
+			case Loss_functionsPackage.POISSON_NLL_LOSS__FULL:
+				setFull((Boolean)newValue);
+				return;
+			case Loss_functionsPackage.POISSON_NLL_LOSS__EPS:
+				setEps((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Loss_functionsPackage.POISSON_NLL_LOSS__LOG_INPUT:
+				setLog_input(LOG_INPUT_EDEFAULT);
+				return;
+			case Loss_functionsPackage.POISSON_NLL_LOSS__FULL:
+				setFull(FULL_EDEFAULT);
+				return;
+			case Loss_functionsPackage.POISSON_NLL_LOSS__EPS:
+				setEps(EPS_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Loss_functionsPackage.POISSON_NLL_LOSS__LOG_INPUT:
+				return log_input != LOG_INPUT_EDEFAULT;
+			case Loss_functionsPackage.POISSON_NLL_LOSS__FULL:
+				return full != FULL_EDEFAULT;
+			case Loss_functionsPackage.POISSON_NLL_LOSS__EPS:
+				return eps != EPS_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (log_input: "); //$NON-NLS-1$
+		result.append(log_input);
+		result.append(", full: "); //$NON-NLS-1$
+		result.append(full);
+		result.append(", eps: "); //$NON-NLS-1$
+		result.append(eps);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PoissonNLLLossImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/TripletMarginLossImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/TripletMarginLossImpl.java
new file mode 100644
index 0000000..c7c2cf5
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/impl/TripletMarginLossImpl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.TripletMarginLoss;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Triplet Margin Loss</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.TripletMarginLossImpl#isSwap <em>Swap</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TripletMarginLossImpl extends Loss_functions_1_1_1Impl implements TripletMarginLoss {
+	/**
+	 * The default value of the '{@link #isSwap() <em>Swap</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSwap()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean SWAP_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isSwap() <em>Swap</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSwap()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean swap = SWAP_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TripletMarginLossImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Loss_functionsPackage.Literals.TRIPLET_MARGIN_LOSS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isSwap() {
+		return swap;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setSwap(boolean newSwap) {
+		boolean oldSwap = swap;
+		swap = newSwap;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Loss_functionsPackage.TRIPLET_MARGIN_LOSS__SWAP, oldSwap, swap));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Loss_functionsPackage.TRIPLET_MARGIN_LOSS__SWAP:
+				return isSwap();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Loss_functionsPackage.TRIPLET_MARGIN_LOSS__SWAP:
+				setSwap((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Loss_functionsPackage.TRIPLET_MARGIN_LOSS__SWAP:
+				setSwap(SWAP_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Loss_functionsPackage.TRIPLET_MARGIN_LOSS__SWAP:
+				return swap != SWAP_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (swap: "); //$NON-NLS-1$
+		result.append(swap);
+		result.append(')');
+		return result.toString();
+	}
+
+} //TripletMarginLossImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/util/Loss_functionsAdapterFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/util/Loss_functionsAdapterFactory.java
new file mode 100644
index 0000000..14867e7
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/util/Loss_functionsAdapterFactory.java
@@ -0,0 +1,508 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.*;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage
+ * @generated
+ */
+public class Loss_functionsAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static Loss_functionsPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Loss_functionsAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = Loss_functionsPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Loss_functionsSwitch<Adapter> modelSwitch =
+		new Loss_functionsSwitch<Adapter>() {
+			@Override
+			public Adapter caseLoss_functions(Loss_functions object) {
+				return createLoss_functionsAdapter();
+			}
+			@Override
+			public Adapter caseLoss_functions_1(Loss_functions_1 object) {
+				return createLoss_functions_1Adapter();
+			}
+			@Override
+			public Adapter caseL1Loss(L1Loss object) {
+				return createL1LossAdapter();
+			}
+			@Override
+			public Adapter caseMSELoss(MSELoss object) {
+				return createMSELossAdapter();
+			}
+			@Override
+			public Adapter caseCTCLoss(CTCLoss object) {
+				return createCTCLossAdapter();
+			}
+			@Override
+			public Adapter caseKLDivLoss(KLDivLoss object) {
+				return createKLDivLossAdapter();
+			}
+			@Override
+			public Adapter caseMultiLabelMarginLoss(MultiLabelMarginLoss object) {
+				return createMultiLabelMarginLossAdapter();
+			}
+			@Override
+			public Adapter caseLoss_functions_1_1(Loss_functions_1_1 object) {
+				return createLoss_functions_1_1Adapter();
+			}
+			@Override
+			public Adapter caseLoss_functions_1_2(Loss_functions_1_2 object) {
+				return createLoss_functions_1_2Adapter();
+			}
+			@Override
+			public Adapter caseCosineEmbeddingLoss(CosineEmbeddingLoss object) {
+				return createCosineEmbeddingLossAdapter();
+			}
+			@Override
+			public Adapter caseMarginRankingLoss(MarginRankingLoss object) {
+				return createMarginRankingLossAdapter();
+			}
+			@Override
+			public Adapter caseHingeEmbeddingLoss(HingeEmbeddingLoss object) {
+				return createHingeEmbeddingLossAdapter();
+			}
+			@Override
+			public Adapter caseBCELoss(BCELoss object) {
+				return createBCELossAdapter();
+			}
+			@Override
+			public Adapter caseLoss_functions_1_1_1(Loss_functions_1_1_1 object) {
+				return createLoss_functions_1_1_1Adapter();
+			}
+			@Override
+			public Adapter caseMultiMarginLoss(MultiMarginLoss object) {
+				return createMultiMarginLossAdapter();
+			}
+			@Override
+			public Adapter caseTripletMarginLoss(TripletMarginLoss object) {
+				return createTripletMarginLossAdapter();
+			}
+			@Override
+			public Adapter caseLoss_functions_1_2_1(Loss_functions_1_2_1 object) {
+				return createLoss_functions_1_2_1Adapter();
+			}
+			@Override
+			public Adapter caseCrossEntropyLoss(CrossEntropyLoss object) {
+				return createCrossEntropyLossAdapter();
+			}
+			@Override
+			public Adapter caseNLLLoss(NLLLoss object) {
+				return createNLLLossAdapter();
+			}
+			@Override
+			public Adapter casePoissonNLLLoss(PoissonNLLLoss object) {
+				return createPoissonNLLLossAdapter();
+			}
+			@Override
+			public Adapter caseBCEWithLogitsLoss(BCEWithLogitsLoss object) {
+				return createBCEWithLogitsLossAdapter();
+			}
+			@Override
+			public Adapter caseModel(Model object) {
+				return createModelAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions <em>Loss functions</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions
+	 * @generated
+	 */
+	public Adapter createLoss_functionsAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1 <em>Loss functions 1</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1
+	 * @generated
+	 */
+	public Adapter createLoss_functions_1Adapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.L1Loss <em>L1 Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.L1Loss
+	 * @generated
+	 */
+	public Adapter createL1LossAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.MSELoss <em>MSE Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.MSELoss
+	 * @generated
+	 */
+	public Adapter createMSELossAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.CTCLoss <em>CTC Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.CTCLoss
+	 * @generated
+	 */
+	public Adapter createCTCLossAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.KLDivLoss <em>KL Div Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.KLDivLoss
+	 * @generated
+	 */
+	public Adapter createKLDivLossAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.MultiLabelMarginLoss <em>Multi Label Margin Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.MultiLabelMarginLoss
+	 * @generated
+	 */
+	public Adapter createMultiLabelMarginLossAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_1 <em>Loss functions 11</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_1
+	 * @generated
+	 */
+	public Adapter createLoss_functions_1_1Adapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_2 <em>Loss functions 12</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_2
+	 * @generated
+	 */
+	public Adapter createLoss_functions_1_2Adapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.CosineEmbeddingLoss <em>Cosine Embedding Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.CosineEmbeddingLoss
+	 * @generated
+	 */
+	public Adapter createCosineEmbeddingLossAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.MarginRankingLoss <em>Margin Ranking Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.MarginRankingLoss
+	 * @generated
+	 */
+	public Adapter createMarginRankingLossAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.HingeEmbeddingLoss <em>Hinge Embedding Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.HingeEmbeddingLoss
+	 * @generated
+	 */
+	public Adapter createHingeEmbeddingLossAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.BCELoss <em>BCE Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.BCELoss
+	 * @generated
+	 */
+	public Adapter createBCELossAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_1_1 <em>Loss functions 111</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_1_1
+	 * @generated
+	 */
+	public Adapter createLoss_functions_1_1_1Adapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.MultiMarginLoss <em>Multi Margin Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.MultiMarginLoss
+	 * @generated
+	 */
+	public Adapter createMultiMarginLossAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.TripletMarginLoss <em>Triplet Margin Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.TripletMarginLoss
+	 * @generated
+	 */
+	public Adapter createTripletMarginLossAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_2_1 <em>Loss functions 121</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_2_1
+	 * @generated
+	 */
+	public Adapter createLoss_functions_1_2_1Adapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.CrossEntropyLoss <em>Cross Entropy Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.CrossEntropyLoss
+	 * @generated
+	 */
+	public Adapter createCrossEntropyLossAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.NLLLoss <em>NLL Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.NLLLoss
+	 * @generated
+	 */
+	public Adapter createNLLLossAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.PoissonNLLLoss <em>Poisson NLL Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.PoissonNLLLoss
+	 * @generated
+	 */
+	public Adapter createPoissonNLLLossAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.BCEWithLogitsLoss <em>BCE With Logits Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.BCEWithLogitsLoss
+	 * @generated
+	 */
+	public Adapter createBCEWithLogitsLossAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model <em>Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.Model
+	 * @generated
+	 */
+	public Adapter createModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //Loss_functionsAdapterFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/util/Loss_functionsSwitch.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/util/Loss_functionsSwitch.java
new file mode 100644
index 0000000..db4ef95
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Loss_functions/util/Loss_functionsSwitch.java
@@ -0,0 +1,630 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.*;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage
+ * @generated
+ */
+public class Loss_functionsSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static Loss_functionsPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Loss_functionsSwitch() {
+		if (modelPackage == null) {
+			modelPackage = Loss_functionsPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case Loss_functionsPackage.LOSS_FUNCTIONS: {
+				Loss_functions loss_functions = (Loss_functions)theEObject;
+				T result = caseLoss_functions(loss_functions);
+				if (result == null) result = caseModel(loss_functions);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Loss_functionsPackage.LOSS_FUNCTIONS_1: {
+				Loss_functions_1 loss_functions_1 = (Loss_functions_1)theEObject;
+				T result = caseLoss_functions_1(loss_functions_1);
+				if (result == null) result = caseLoss_functions(loss_functions_1);
+				if (result == null) result = caseModel(loss_functions_1);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Loss_functionsPackage.L1_LOSS: {
+				L1Loss l1Loss = (L1Loss)theEObject;
+				T result = caseL1Loss(l1Loss);
+				if (result == null) result = caseLoss_functions_1(l1Loss);
+				if (result == null) result = caseLoss_functions(l1Loss);
+				if (result == null) result = caseModel(l1Loss);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Loss_functionsPackage.MSE_LOSS: {
+				MSELoss mseLoss = (MSELoss)theEObject;
+				T result = caseMSELoss(mseLoss);
+				if (result == null) result = caseLoss_functions_1(mseLoss);
+				if (result == null) result = caseLoss_functions(mseLoss);
+				if (result == null) result = caseModel(mseLoss);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Loss_functionsPackage.CTC_LOSS: {
+				CTCLoss ctcLoss = (CTCLoss)theEObject;
+				T result = caseCTCLoss(ctcLoss);
+				if (result == null) result = caseLoss_functions(ctcLoss);
+				if (result == null) result = caseModel(ctcLoss);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Loss_functionsPackage.KL_DIV_LOSS: {
+				KLDivLoss klDivLoss = (KLDivLoss)theEObject;
+				T result = caseKLDivLoss(klDivLoss);
+				if (result == null) result = caseLoss_functions_1(klDivLoss);
+				if (result == null) result = caseLoss_functions(klDivLoss);
+				if (result == null) result = caseModel(klDivLoss);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Loss_functionsPackage.MULTI_LABEL_MARGIN_LOSS: {
+				MultiLabelMarginLoss multiLabelMarginLoss = (MultiLabelMarginLoss)theEObject;
+				T result = caseMultiLabelMarginLoss(multiLabelMarginLoss);
+				if (result == null) result = caseLoss_functions_1(multiLabelMarginLoss);
+				if (result == null) result = caseLoss_functions(multiLabelMarginLoss);
+				if (result == null) result = caseModel(multiLabelMarginLoss);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Loss_functionsPackage.LOSS_FUNCTIONS_11: {
+				Loss_functions_1_1 loss_functions_1_1 = (Loss_functions_1_1)theEObject;
+				T result = caseLoss_functions_1_1(loss_functions_1_1);
+				if (result == null) result = caseLoss_functions_1(loss_functions_1_1);
+				if (result == null) result = caseLoss_functions(loss_functions_1_1);
+				if (result == null) result = caseModel(loss_functions_1_1);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Loss_functionsPackage.LOSS_FUNCTIONS_12: {
+				Loss_functions_1_2 loss_functions_1_2 = (Loss_functions_1_2)theEObject;
+				T result = caseLoss_functions_1_2(loss_functions_1_2);
+				if (result == null) result = caseLoss_functions_1(loss_functions_1_2);
+				if (result == null) result = caseLoss_functions(loss_functions_1_2);
+				if (result == null) result = caseModel(loss_functions_1_2);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Loss_functionsPackage.COSINE_EMBEDDING_LOSS: {
+				CosineEmbeddingLoss cosineEmbeddingLoss = (CosineEmbeddingLoss)theEObject;
+				T result = caseCosineEmbeddingLoss(cosineEmbeddingLoss);
+				if (result == null) result = caseLoss_functions_1_1(cosineEmbeddingLoss);
+				if (result == null) result = caseLoss_functions_1(cosineEmbeddingLoss);
+				if (result == null) result = caseLoss_functions(cosineEmbeddingLoss);
+				if (result == null) result = caseModel(cosineEmbeddingLoss);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Loss_functionsPackage.MARGIN_RANKING_LOSS: {
+				MarginRankingLoss marginRankingLoss = (MarginRankingLoss)theEObject;
+				T result = caseMarginRankingLoss(marginRankingLoss);
+				if (result == null) result = caseLoss_functions_1_1(marginRankingLoss);
+				if (result == null) result = caseLoss_functions_1(marginRankingLoss);
+				if (result == null) result = caseLoss_functions(marginRankingLoss);
+				if (result == null) result = caseModel(marginRankingLoss);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Loss_functionsPackage.HINGE_EMBEDDING_LOSS: {
+				HingeEmbeddingLoss hingeEmbeddingLoss = (HingeEmbeddingLoss)theEObject;
+				T result = caseHingeEmbeddingLoss(hingeEmbeddingLoss);
+				if (result == null) result = caseLoss_functions_1_1(hingeEmbeddingLoss);
+				if (result == null) result = caseLoss_functions_1(hingeEmbeddingLoss);
+				if (result == null) result = caseLoss_functions(hingeEmbeddingLoss);
+				if (result == null) result = caseModel(hingeEmbeddingLoss);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Loss_functionsPackage.BCE_LOSS: {
+				BCELoss bceLoss = (BCELoss)theEObject;
+				T result = caseBCELoss(bceLoss);
+				if (result == null) result = caseLoss_functions_1_2(bceLoss);
+				if (result == null) result = caseLoss_functions_1(bceLoss);
+				if (result == null) result = caseLoss_functions(bceLoss);
+				if (result == null) result = caseModel(bceLoss);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Loss_functionsPackage.LOSS_FUNCTIONS_111: {
+				Loss_functions_1_1_1 loss_functions_1_1_1 = (Loss_functions_1_1_1)theEObject;
+				T result = caseLoss_functions_1_1_1(loss_functions_1_1_1);
+				if (result == null) result = caseLoss_functions_1_1(loss_functions_1_1_1);
+				if (result == null) result = caseLoss_functions_1(loss_functions_1_1_1);
+				if (result == null) result = caseLoss_functions(loss_functions_1_1_1);
+				if (result == null) result = caseModel(loss_functions_1_1_1);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Loss_functionsPackage.MULTI_MARGIN_LOSS: {
+				MultiMarginLoss multiMarginLoss = (MultiMarginLoss)theEObject;
+				T result = caseMultiMarginLoss(multiMarginLoss);
+				if (result == null) result = caseLoss_functions_1_1_1(multiMarginLoss);
+				if (result == null) result = caseLoss_functions_1_1(multiMarginLoss);
+				if (result == null) result = caseLoss_functions_1(multiMarginLoss);
+				if (result == null) result = caseLoss_functions(multiMarginLoss);
+				if (result == null) result = caseModel(multiMarginLoss);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Loss_functionsPackage.TRIPLET_MARGIN_LOSS: {
+				TripletMarginLoss tripletMarginLoss = (TripletMarginLoss)theEObject;
+				T result = caseTripletMarginLoss(tripletMarginLoss);
+				if (result == null) result = caseLoss_functions_1_1_1(tripletMarginLoss);
+				if (result == null) result = caseLoss_functions_1_1(tripletMarginLoss);
+				if (result == null) result = caseLoss_functions_1(tripletMarginLoss);
+				if (result == null) result = caseLoss_functions(tripletMarginLoss);
+				if (result == null) result = caseModel(tripletMarginLoss);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Loss_functionsPackage.LOSS_FUNCTIONS_121: {
+				Loss_functions_1_2_1 loss_functions_1_2_1 = (Loss_functions_1_2_1)theEObject;
+				T result = caseLoss_functions_1_2_1(loss_functions_1_2_1);
+				if (result == null) result = caseLoss_functions_1_2(loss_functions_1_2_1);
+				if (result == null) result = caseLoss_functions_1(loss_functions_1_2_1);
+				if (result == null) result = caseLoss_functions(loss_functions_1_2_1);
+				if (result == null) result = caseModel(loss_functions_1_2_1);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Loss_functionsPackage.CROSS_ENTROPY_LOSS: {
+				CrossEntropyLoss crossEntropyLoss = (CrossEntropyLoss)theEObject;
+				T result = caseCrossEntropyLoss(crossEntropyLoss);
+				if (result == null) result = caseLoss_functions_1_2_1(crossEntropyLoss);
+				if (result == null) result = caseLoss_functions_1_2(crossEntropyLoss);
+				if (result == null) result = caseLoss_functions_1(crossEntropyLoss);
+				if (result == null) result = caseLoss_functions(crossEntropyLoss);
+				if (result == null) result = caseModel(crossEntropyLoss);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Loss_functionsPackage.NLL_LOSS: {
+				NLLLoss nllLoss = (NLLLoss)theEObject;
+				T result = caseNLLLoss(nllLoss);
+				if (result == null) result = caseLoss_functions_1_2_1(nllLoss);
+				if (result == null) result = caseLoss_functions_1_2(nllLoss);
+				if (result == null) result = caseLoss_functions_1(nllLoss);
+				if (result == null) result = caseLoss_functions(nllLoss);
+				if (result == null) result = caseModel(nllLoss);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Loss_functionsPackage.POISSON_NLL_LOSS: {
+				PoissonNLLLoss poissonNLLLoss = (PoissonNLLLoss)theEObject;
+				T result = casePoissonNLLLoss(poissonNLLLoss);
+				if (result == null) result = caseLoss_functions_1_2(poissonNLLLoss);
+				if (result == null) result = caseLoss_functions_1(poissonNLLLoss);
+				if (result == null) result = caseLoss_functions(poissonNLLLoss);
+				if (result == null) result = caseModel(poissonNLLLoss);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Loss_functionsPackage.BCE_WITH_LOGITS_LOSS: {
+				BCEWithLogitsLoss bceWithLogitsLoss = (BCEWithLogitsLoss)theEObject;
+				T result = caseBCEWithLogitsLoss(bceWithLogitsLoss);
+				if (result == null) result = caseLoss_functions_1_2(bceWithLogitsLoss);
+				if (result == null) result = caseLoss_functions_1(bceWithLogitsLoss);
+				if (result == null) result = caseLoss_functions(bceWithLogitsLoss);
+				if (result == null) result = caseModel(bceWithLogitsLoss);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Loss functions</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Loss functions</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLoss_functions(Loss_functions object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Loss functions 1</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Loss functions 1</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLoss_functions_1(Loss_functions_1 object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>L1 Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>L1 Loss</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseL1Loss(L1Loss object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>MSE Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>MSE Loss</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseMSELoss(MSELoss object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>CTC Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>CTC Loss</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCTCLoss(CTCLoss object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>KL Div Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>KL Div Loss</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseKLDivLoss(KLDivLoss object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Multi Label Margin Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Multi Label Margin Loss</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseMultiLabelMarginLoss(MultiLabelMarginLoss object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Loss functions 11</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Loss functions 11</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLoss_functions_1_1(Loss_functions_1_1 object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Loss functions 12</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Loss functions 12</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLoss_functions_1_2(Loss_functions_1_2 object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Cosine Embedding Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Cosine Embedding Loss</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCosineEmbeddingLoss(CosineEmbeddingLoss object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Margin Ranking Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Margin Ranking Loss</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseMarginRankingLoss(MarginRankingLoss object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Hinge Embedding Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Hinge Embedding Loss</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseHingeEmbeddingLoss(HingeEmbeddingLoss object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>BCE Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>BCE Loss</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseBCELoss(BCELoss object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Loss functions 111</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Loss functions 111</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLoss_functions_1_1_1(Loss_functions_1_1_1 object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Multi Margin Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Multi Margin Loss</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseMultiMarginLoss(MultiMarginLoss object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Triplet Margin Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Triplet Margin Loss</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTripletMarginLoss(TripletMarginLoss object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Loss functions 121</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Loss functions 121</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLoss_functions_1_2_1(Loss_functions_1_2_1 object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Cross Entropy Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Cross Entropy Loss</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCrossEntropyLoss(CrossEntropyLoss object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>NLL Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>NLL Loss</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseNLLLoss(NLLLoss object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Poisson NLL Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Poisson NLL Loss</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePoissonNLLLoss(PoissonNLLLoss object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>BCE With Logits Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>BCE With Logits Loss</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseBCEWithLogitsLoss(BCEWithLogitsLoss object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseModel(Model object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //Loss_functionsSwitch
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Module/Default_Container.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Module/Default_Container.java
new file mode 100644
index 0000000..2b5c0a8
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Module/Default_Container.java
@@ -0,0 +1,205 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Module;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Default Container</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Default_Container#getBase_Class <em>Base Class</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Default_Container#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Default_Container#getData <em>Data</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Default_Container#isRequires_grad <em>Requires grad</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Default_Container#getSubModule <em>Sub Module</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Default_Container#getOptimizer <em>Optimizer</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Default_Container#getLoss <em>Loss</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage#getDefault_Container()
+ * @model
+ * @generated
+ */
+public interface Default_Container extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Base Class</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Base Class</em>' reference.
+	 * @see #setBase_Class(org.eclipse.uml2.uml.Class)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage#getDefault_Container_Base_Class()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	org.eclipse.uml2.uml.Class getBase_Class();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Default_Container#getBase_Class <em>Base Class</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Base Class</em>' reference.
+	 * @see #getBase_Class()
+	 * @generated
+	 */
+	void setBase_Class(org.eclipse.uml2.uml.Class value);
+
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage#getDefault_Container_Name()
+	 * @model dataType="org.eclipse.uml2.types.String" required="true" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Returns the value of the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Data</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Data</em>' reference.
+	 * @see #setData(Tensor)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage#getDefault_Container_Data()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	Tensor getData();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Default_Container#getData <em>Data</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Data</em>' reference.
+	 * @see #getData()
+	 * @generated
+	 */
+	void setData(Tensor value);
+
+	/**
+	 * Returns the value of the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Requires grad</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Requires grad</em>' attribute.
+	 * @see #setRequires_grad(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage#getDefault_Container_Requires_grad()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isRequires_grad();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Default_Container#isRequires_grad <em>Requires grad</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Requires grad</em>' attribute.
+	 * @see #isRequires_grad()
+	 * @generated
+	 */
+	void setRequires_grad(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Sub Module</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.papyrus.aiml.profile.AIML.Module.Default_Container}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Sub Module</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Sub Module</em>' reference list.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage#getDefault_Container_SubModule()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	EList<Default_Container> getSubModule();
+
+	/**
+	 * Returns the value of the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Optimizer</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Optimizer</em>' attribute.
+	 * @see #setOptimizer(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage#getDefault_Container_Optimizer()
+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+	 * @generated
+	 */
+	String getOptimizer();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Default_Container#getOptimizer <em>Optimizer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Optimizer</em>' attribute.
+	 * @see #getOptimizer()
+	 * @generated
+	 */
+	void setOptimizer(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Loss</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Loss</em>' attribute.
+	 * @see #setLoss(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage#getDefault_Container_Loss()
+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+	 * @generated
+	 */
+	String getLoss();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Default_Container#getLoss <em>Loss</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Loss</em>' attribute.
+	 * @see #getLoss()
+	 * @generated
+	 */
+	void setLoss(String value);
+
+
+} // Default_Container
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Module/Model.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Module/Model.java
new file mode 100644
index 0000000..4f858ea
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Module/Model.java
@@ -0,0 +1,204 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Module;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Model</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model#getBase_Class <em>Base Class</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model#getData <em>Data</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model#isRequires_grad <em>Requires grad</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model#getSubModule <em>Sub Module</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model#getOptimizer <em>Optimizer</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model#getLoss <em>Loss</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage#getModel()
+ * @model
+ * @generated
+ */
+public interface Model extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Base Class</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Base Class</em>' reference.
+	 * @see #setBase_Class(org.eclipse.uml2.uml.Class)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage#getModel_Base_Class()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	org.eclipse.uml2.uml.Class getBase_Class();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model#getBase_Class <em>Base Class</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Base Class</em>' reference.
+	 * @see #getBase_Class()
+	 * @generated
+	 */
+	void setBase_Class(org.eclipse.uml2.uml.Class value);
+
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage#getModel_Name()
+	 * @model dataType="org.eclipse.uml2.types.String" required="true" transient="true" changeable="false" volatile="true" derived="true" ordered="false"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Returns the value of the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Data</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Data</em>' reference.
+	 * @see #setData(Tensor)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage#getModel_Data()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	Tensor getData();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model#getData <em>Data</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Data</em>' reference.
+	 * @see #getData()
+	 * @generated
+	 */
+	void setData(Tensor value);
+
+	/**
+	 * Returns the value of the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Requires grad</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Requires grad</em>' attribute.
+	 * @see #setRequires_grad(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage#getModel_Requires_grad()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isRequires_grad();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model#isRequires_grad <em>Requires grad</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Requires grad</em>' attribute.
+	 * @see #isRequires_grad()
+	 * @generated
+	 */
+	void setRequires_grad(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Sub Module</b></em>' reference list.
+	 * The list contents are of type {@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Sub Module</em>' reference list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Sub Module</em>' reference list.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage#getModel_SubModule()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	EList<Model> getSubModule();
+
+	/**
+	 * Returns the value of the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Optimizer</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Optimizer</em>' attribute.
+	 * @see #setOptimizer(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage#getModel_Optimizer()
+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+	 * @generated
+	 */
+	String getOptimizer();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model#getOptimizer <em>Optimizer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Optimizer</em>' attribute.
+	 * @see #getOptimizer()
+	 * @generated
+	 */
+	void setOptimizer(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Loss</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Loss</em>' attribute.
+	 * @see #setLoss(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage#getModel_Loss()
+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+	 * @generated
+	 */
+	String getLoss();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model#getLoss <em>Loss</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Loss</em>' attribute.
+	 * @see #getLoss()
+	 * @generated
+	 */
+	void setLoss(String value);
+
+} // Model
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Module/ModuleFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Module/ModuleFactory.java
new file mode 100644
index 0000000..029cef7
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Module/ModuleFactory.java
@@ -0,0 +1,51 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Module;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage
+ * @generated
+ */
+public interface ModuleFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	ModuleFactory eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModuleFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Model</em>'.
+	 * @generated
+	 */
+	Model createModel();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	ModulePackage getModulePackage();
+
+} //ModuleFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Module/ModulePackage.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Module/ModulePackage.java
new file mode 100644
index 0000000..5877bfe
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Module/ModulePackage.java
@@ -0,0 +1,338 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Module;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Module.ModuleFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface ModulePackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "Module"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://www.eclipse.org/papyrus/AIML/module/1"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "AIML.Module"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	ModulePackage eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModulePackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModelImpl <em>Model</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModelImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModulePackageImpl#getModel()
+	 * @generated
+	 */
+	int MODEL = 0;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__BASE_CLASS = 0;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__NAME = 1;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__DATA = 2;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__REQUIRES_GRAD = 3;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__SUB_MODULE = 4;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__OPTIMIZER = 5;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL__LOSS = 6;
+
+	/**
+	 * The number of structural features of the '<em>Model</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL_FEATURE_COUNT = 7;
+
+	/**
+	 * The number of operations of the '<em>Model</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MODEL_OPERATION_COUNT = 0;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model <em>Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Model</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.Model
+	 * @generated
+	 */
+	EClass getModel();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model#getBase_Class <em>Base Class</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Base Class</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.Model#getBase_Class()
+	 * @see #getModel()
+	 * @generated
+	 */
+	EReference getModel_Base_Class();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.Model#getName()
+	 * @see #getModel()
+	 * @generated
+	 */
+	EAttribute getModel_Name();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model#getData <em>Data</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Data</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.Model#getData()
+	 * @see #getModel()
+	 * @generated
+	 */
+	EReference getModel_Data();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model#isRequires_grad <em>Requires grad</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Requires grad</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.Model#isRequires_grad()
+	 * @see #getModel()
+	 * @generated
+	 */
+	EAttribute getModel_Requires_grad();
+
+	/**
+	 * Returns the meta object for the reference list '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model#getSubModule <em>Sub Module</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference list '<em>Sub Module</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.Model#getSubModule()
+	 * @see #getModel()
+	 * @generated
+	 */
+	EReference getModel_SubModule();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model#getOptimizer <em>Optimizer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Optimizer</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.Model#getOptimizer()
+	 * @see #getModel()
+	 * @generated
+	 */
+	EAttribute getModel_Optimizer();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model#getLoss <em>Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Loss</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.Model#getLoss()
+	 * @see #getModel()
+	 * @generated
+	 */
+	EAttribute getModel_Loss();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	ModuleFactory getModuleFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModelImpl <em>Model</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModelImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModulePackageImpl#getModel()
+		 * @generated
+		 */
+		EClass MODEL = eINSTANCE.getModel();
+
+		/**
+		 * The meta object literal for the '<em><b>Base Class</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference MODEL__BASE_CLASS = eINSTANCE.getModel_Base_Class();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MODEL__NAME = eINSTANCE.getModel_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Data</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference MODEL__DATA = eINSTANCE.getModel_Data();
+
+		/**
+		 * The meta object literal for the '<em><b>Requires grad</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MODEL__REQUIRES_GRAD = eINSTANCE.getModel_Requires_grad();
+
+		/**
+		 * The meta object literal for the '<em><b>Sub Module</b></em>' reference list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference MODEL__SUB_MODULE = eINSTANCE.getModel_SubModule();
+
+		/**
+		 * The meta object literal for the '<em><b>Optimizer</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MODEL__OPTIMIZER = eINSTANCE.getModel_Optimizer();
+
+		/**
+		 * The meta object literal for the '<em><b>Loss</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MODEL__LOSS = eINSTANCE.getModel_Loss();
+
+	}
+
+} //ModulePackage
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Module/impl/ModelImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Module/impl/ModelImpl.java
new file mode 100644
index 0000000..cefc6c9
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Module/impl/ModelImpl.java
@@ -0,0 +1,481 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Module.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EObjectResolvingEList;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Model</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModelImpl#getBase_Class <em>Base Class</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModelImpl#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModelImpl#getData <em>Data</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModelImpl#isRequires_grad <em>Requires grad</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModelImpl#getSubModule <em>Sub Module</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModelImpl#getOptimizer <em>Optimizer</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModelImpl#getLoss <em>Loss</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ModelImpl extends MinimalEObjectImpl.Container implements Model {
+	/**
+	 * The cached value of the '{@link #getBase_Class() <em>Base Class</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBase_Class()
+	 * @generated
+	 * @ordered
+	 */
+	protected org.eclipse.uml2.uml.Class base_Class;
+
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getData() <em>Data</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getData()
+	 * @generated
+	 * @ordered
+	 */
+	protected Tensor data;
+
+	/**
+	 * The default value of the '{@link #isRequires_grad() <em>Requires grad</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isRequires_grad()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean REQUIRES_GRAD_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isRequires_grad() <em>Requires grad</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isRequires_grad()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean requires_grad = REQUIRES_GRAD_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getSubModule() <em>Sub Module</em>}' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSubModule()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Model> subModule;
+
+	/**
+	 * The default value of the '{@link #getOptimizer() <em>Optimizer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOptimizer()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String OPTIMIZER_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getOptimizer() <em>Optimizer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOptimizer()
+	 * @generated
+	 * @ordered
+	 */
+	protected String optimizer = OPTIMIZER_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getLoss() <em>Loss</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLoss()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String LOSS_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getLoss() <em>Loss</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLoss()
+	 * @generated
+	 * @ordered
+	 */
+	protected String loss = LOSS_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ModelImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ModulePackage.Literals.MODEL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public org.eclipse.uml2.uml.Class getBase_Class() {
+		if (base_Class != null && base_Class.eIsProxy()) {
+			InternalEObject oldBase_Class = (InternalEObject)base_Class;
+			base_Class = (org.eclipse.uml2.uml.Class)eResolveProxy(oldBase_Class);
+			if (base_Class != oldBase_Class) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ModulePackage.MODEL__BASE_CLASS, oldBase_Class, base_Class));
+			}
+		}
+		return base_Class;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public org.eclipse.uml2.uml.Class basicGetBase_Class() {
+		return base_Class;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBase_Class(org.eclipse.uml2.uml.Class newBase_Class) {
+		org.eclipse.uml2.uml.Class oldBase_Class = base_Class;
+		base_Class = newBase_Class;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModulePackage.MODEL__BASE_CLASS, oldBase_Class, base_Class));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated NOT
+	 */
+	@Override
+	public String getName() {
+		return getBase_Class().getName();
+
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Tensor getData() {
+		if (data != null && data.eIsProxy()) {
+			InternalEObject oldData = (InternalEObject)data;
+			data = (Tensor)eResolveProxy(oldData);
+			if (data != oldData) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ModulePackage.MODEL__DATA, oldData, data));
+			}
+		}
+		return data;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Tensor basicGetData() {
+		return data;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setData(Tensor newData) {
+		Tensor oldData = data;
+		data = newData;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModulePackage.MODEL__DATA, oldData, data));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isRequires_grad() {
+		return requires_grad;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setRequires_grad(boolean newRequires_grad) {
+		boolean oldRequires_grad = requires_grad;
+		requires_grad = newRequires_grad;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModulePackage.MODEL__REQUIRES_GRAD, oldRequires_grad, requires_grad));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Model> getSubModule() {
+		if (subModule == null) {
+			subModule = new EObjectResolvingEList<Model>(Model.class, this, ModulePackage.MODEL__SUB_MODULE);
+		}
+		return subModule;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getOptimizer() {
+		return optimizer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setOptimizer(String newOptimizer) {
+		String oldOptimizer = optimizer;
+		optimizer = newOptimizer;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModulePackage.MODEL__OPTIMIZER, oldOptimizer, optimizer));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getLoss() {
+		return loss;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setLoss(String newLoss) {
+		String oldLoss = loss;
+		loss = newLoss;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ModulePackage.MODEL__LOSS, oldLoss, loss));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ModulePackage.MODEL__BASE_CLASS:
+				if (resolve) return getBase_Class();
+				return basicGetBase_Class();
+			case ModulePackage.MODEL__NAME:
+				return getName();
+			case ModulePackage.MODEL__DATA:
+				if (resolve) return getData();
+				return basicGetData();
+			case ModulePackage.MODEL__REQUIRES_GRAD:
+				return isRequires_grad();
+			case ModulePackage.MODEL__SUB_MODULE:
+				return getSubModule();
+			case ModulePackage.MODEL__OPTIMIZER:
+				return getOptimizer();
+			case ModulePackage.MODEL__LOSS:
+				return getLoss();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ModulePackage.MODEL__BASE_CLASS:
+				setBase_Class((org.eclipse.uml2.uml.Class)newValue);
+				return;
+			case ModulePackage.MODEL__DATA:
+				setData((Tensor)newValue);
+				return;
+			case ModulePackage.MODEL__REQUIRES_GRAD:
+				setRequires_grad((Boolean)newValue);
+				return;
+			case ModulePackage.MODEL__SUB_MODULE:
+				getSubModule().clear();
+				getSubModule().addAll((Collection<? extends Model>)newValue);
+				return;
+			case ModulePackage.MODEL__OPTIMIZER:
+				setOptimizer((String)newValue);
+				return;
+			case ModulePackage.MODEL__LOSS:
+				setLoss((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ModulePackage.MODEL__BASE_CLASS:
+				setBase_Class((org.eclipse.uml2.uml.Class)null);
+				return;
+			case ModulePackage.MODEL__DATA:
+				setData((Tensor)null);
+				return;
+			case ModulePackage.MODEL__REQUIRES_GRAD:
+				setRequires_grad(REQUIRES_GRAD_EDEFAULT);
+				return;
+			case ModulePackage.MODEL__SUB_MODULE:
+				getSubModule().clear();
+				return;
+			case ModulePackage.MODEL__OPTIMIZER:
+				setOptimizer(OPTIMIZER_EDEFAULT);
+				return;
+			case ModulePackage.MODEL__LOSS:
+				setLoss(LOSS_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ModulePackage.MODEL__BASE_CLASS:
+				return base_Class != null;
+			case ModulePackage.MODEL__NAME:
+				return NAME_EDEFAULT == null ? getName() != null : !NAME_EDEFAULT.equals(getName());
+			case ModulePackage.MODEL__DATA:
+				return data != null;
+			case ModulePackage.MODEL__REQUIRES_GRAD:
+				return requires_grad != REQUIRES_GRAD_EDEFAULT;
+			case ModulePackage.MODEL__SUB_MODULE:
+				return subModule != null && !subModule.isEmpty();
+			case ModulePackage.MODEL__OPTIMIZER:
+				return OPTIMIZER_EDEFAULT == null ? optimizer != null : !OPTIMIZER_EDEFAULT.equals(optimizer);
+			case ModulePackage.MODEL__LOSS:
+				return LOSS_EDEFAULT == null ? loss != null : !LOSS_EDEFAULT.equals(loss);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (requires_grad: "); //$NON-NLS-1$
+		result.append(requires_grad);
+		result.append(", optimizer: "); //$NON-NLS-1$
+		result.append(optimizer);
+		result.append(", loss: "); //$NON-NLS-1$
+		result.append(loss);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ModelImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Module/impl/ModuleFactoryImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Module/impl/ModuleFactoryImpl.java
new file mode 100644
index 0000000..a778e3d
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Module/impl/ModuleFactoryImpl.java
@@ -0,0 +1,106 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Module.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ModuleFactoryImpl extends EFactoryImpl implements ModuleFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static ModuleFactory init() {
+		try {
+			ModuleFactory theModuleFactory = (ModuleFactory)EPackage.Registry.INSTANCE.getEFactory(ModulePackage.eNS_URI);
+			if (theModuleFactory != null) {
+				return theModuleFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new ModuleFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ModuleFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case ModulePackage.MODEL: return createModel();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Model createModel() {
+		ModelImpl model = new ModelImpl();
+		return model;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ModulePackage getModulePackage() {
+		return (ModulePackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static ModulePackage getPackage() {
+		return ModulePackage.eINSTANCE;
+	}
+
+} //ModuleFactoryImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Module/impl/ModulePackageImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Module/impl/ModulePackageImpl.java
new file mode 100644
index 0000000..4be8dc1
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Module/impl/ModulePackageImpl.java
@@ -0,0 +1,442 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Module.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.AIMLPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.Layer_weight_regularizersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModuleFactory;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.DatatypesPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl.DatatypesPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.impl.AIMLPackageImpl;
+
+import org.eclipse.uml2.types.TypesPackage;
+
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ModulePackageImpl extends EPackageImpl implements ModulePackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass modelEClass = null;
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private ModulePackageImpl() {
+		super(eNS_URI, ModuleFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>This method is used to initialize {@link ModulePackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static ModulePackage init() {
+		if (isInited) return (ModulePackage)EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+
+		// Obtain or create and register package
+		Object registeredModulePackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		ModulePackageImpl theModulePackage = registeredModulePackage instanceof ModulePackageImpl ? (ModulePackageImpl)registeredModulePackage : new ModulePackageImpl();
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		EcorePackage.eINSTANCE.eClass();
+		TypesPackage.eINSTANCE.eClass();
+		UMLPackage.eINSTANCE.eClass();
+
+		// Obtain or create and register interdependencies
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AIMLPackage.eNS_URI);
+		AIMLPackageImpl theAIMLPackage = (AIMLPackageImpl)(registeredPackage instanceof AIMLPackageImpl ? registeredPackage : AIMLPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(TensorPackage.eNS_URI);
+		TensorPackageImpl theTensorPackage = (TensorPackageImpl)(registeredPackage instanceof TensorPackageImpl ? registeredPackage : TensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DatatypesPackage.eNS_URI);
+		DatatypesPackageImpl theDatatypesPackage = (DatatypesPackageImpl)(registeredPackage instanceof DatatypesPackageImpl ? registeredPackage : DatatypesPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Pooling_layersPackage.eNS_URI);
+		Pooling_layersPackageImpl thePooling_layersPackage = (Pooling_layersPackageImpl)(registeredPackage instanceof Pooling_layersPackageImpl ? registeredPackage : Pooling_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Convolution_layersPackage.eNS_URI);
+		Convolution_layersPackageImpl theConvolution_layersPackage = (Convolution_layersPackageImpl)(registeredPackage instanceof Convolution_layersPackageImpl ? registeredPackage : Convolution_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_constraintsPackage.eNS_URI);
+		Layer_weight_constraintsPackageImpl theLayer_weight_constraintsPackage = (Layer_weight_constraintsPackageImpl)(registeredPackage instanceof Layer_weight_constraintsPackageImpl ? registeredPackage : Layer_weight_constraintsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Padding_layersPackage.eNS_URI);
+		Padding_layersPackageImpl thePadding_layersPackage = (Padding_layersPackageImpl)(registeredPackage instanceof Padding_layersPackageImpl ? registeredPackage : Padding_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NonLinearActivationsPackage.eNS_URI);
+		NonLinearActivationsPackageImpl theNonLinearActivationsPackage = (NonLinearActivationsPackageImpl)(registeredPackage instanceof NonLinearActivationsPackageImpl ? registeredPackage : NonLinearActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftMinMaxActivationsPackage.eNS_URI);
+		SoftMinMaxActivationsPackageImpl theSoftMinMaxActivationsPackage = (SoftMinMaxActivationsPackageImpl)(registeredPackage instanceof SoftMinMaxActivationsPackageImpl ? registeredPackage : SoftMinMaxActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Normalization_layersPackage.eNS_URI);
+		Normalization_layersPackageImpl theNormalization_layersPackage = (Normalization_layersPackageImpl)(registeredPackage instanceof Normalization_layersPackageImpl ? registeredPackage : Normalization_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Recurrent_layersPackage.eNS_URI);
+		Recurrent_layersPackageImpl theRecurrent_layersPackage = (Recurrent_layersPackageImpl)(registeredPackage instanceof Recurrent_layersPackageImpl ? registeredPackage : Recurrent_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Transformer_layersPackage.eNS_URI);
+		Transformer_layersPackageImpl theTransformer_layersPackage = (Transformer_layersPackageImpl)(registeredPackage instanceof Transformer_layersPackageImpl ? registeredPackage : Transformer_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Linear_layersPackage.eNS_URI);
+		Linear_layersPackageImpl theLinear_layersPackage = (Linear_layersPackageImpl)(registeredPackage instanceof Linear_layersPackageImpl ? registeredPackage : Linear_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Dropout_layersPackage.eNS_URI);
+		Dropout_layersPackageImpl theDropout_layersPackage = (Dropout_layersPackageImpl)(registeredPackage instanceof Dropout_layersPackageImpl ? registeredPackage : Dropout_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Sparse_layersPackage.eNS_URI);
+		Sparse_layersPackageImpl theSparse_layersPackage = (Sparse_layersPackageImpl)(registeredPackage instanceof Sparse_layersPackageImpl ? registeredPackage : Sparse_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Distance_functionsPackage.eNS_URI);
+		Distance_functionsPackageImpl theDistance_functionsPackage = (Distance_functionsPackageImpl)(registeredPackage instanceof Distance_functionsPackageImpl ? registeredPackage : Distance_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Loss_functionsPackage.eNS_URI);
+		Loss_functionsPackageImpl theLoss_functionsPackage = (Loss_functionsPackageImpl)(registeredPackage instanceof Loss_functionsPackageImpl ? registeredPackage : Loss_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Vision_layersPackage.eNS_URI);
+		Vision_layersPackageImpl theVision_layersPackage = (Vision_layersPackageImpl)(registeredPackage instanceof Vision_layersPackageImpl ? registeredPackage : Vision_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DataParallel_layersPackage.eNS_URI);
+		DataParallel_layersPackageImpl theDataParallel_layersPackage = (DataParallel_layersPackageImpl)(registeredPackage instanceof DataParallel_layersPackageImpl ? registeredPackage : DataParallel_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_regularizersPackage.eNS_URI);
+		Layer_weight_regularizersPackageImpl theLayer_weight_regularizersPackage = (Layer_weight_regularizersPackageImpl)(registeredPackage instanceof Layer_weight_regularizersPackageImpl ? registeredPackage : Layer_weight_regularizersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_initializersPackage.eNS_URI);
+		Layer_weight_initializersPackageImpl theLayer_weight_initializersPackage = (Layer_weight_initializersPackageImpl)(registeredPackage instanceof Layer_weight_initializersPackageImpl ? registeredPackage : Layer_weight_initializersPackage.eINSTANCE);
+
+		// Create package meta-data objects
+		theModulePackage.createPackageContents();
+		theAIMLPackage.createPackageContents();
+		theTensorPackage.createPackageContents();
+		theDatatypesPackage.createPackageContents();
+		thePooling_layersPackage.createPackageContents();
+		theConvolution_layersPackage.createPackageContents();
+		theLayer_weight_constraintsPackage.createPackageContents();
+		thePadding_layersPackage.createPackageContents();
+		theNonLinearActivationsPackage.createPackageContents();
+		theSoftMinMaxActivationsPackage.createPackageContents();
+		theNormalization_layersPackage.createPackageContents();
+		theRecurrent_layersPackage.createPackageContents();
+		theTransformer_layersPackage.createPackageContents();
+		theLinear_layersPackage.createPackageContents();
+		theDropout_layersPackage.createPackageContents();
+		theSparse_layersPackage.createPackageContents();
+		theDistance_functionsPackage.createPackageContents();
+		theLoss_functionsPackage.createPackageContents();
+		theVision_layersPackage.createPackageContents();
+		theDataParallel_layersPackage.createPackageContents();
+		theLayer_weight_regularizersPackage.createPackageContents();
+		theLayer_weight_initializersPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theModulePackage.initializePackageContents();
+		theAIMLPackage.initializePackageContents();
+		theTensorPackage.initializePackageContents();
+		theDatatypesPackage.initializePackageContents();
+		thePooling_layersPackage.initializePackageContents();
+		theConvolution_layersPackage.initializePackageContents();
+		theLayer_weight_constraintsPackage.initializePackageContents();
+		thePadding_layersPackage.initializePackageContents();
+		theNonLinearActivationsPackage.initializePackageContents();
+		theSoftMinMaxActivationsPackage.initializePackageContents();
+		theNormalization_layersPackage.initializePackageContents();
+		theRecurrent_layersPackage.initializePackageContents();
+		theTransformer_layersPackage.initializePackageContents();
+		theLinear_layersPackage.initializePackageContents();
+		theDropout_layersPackage.initializePackageContents();
+		theSparse_layersPackage.initializePackageContents();
+		theDistance_functionsPackage.initializePackageContents();
+		theLoss_functionsPackage.initializePackageContents();
+		theVision_layersPackage.initializePackageContents();
+		theDataParallel_layersPackage.initializePackageContents();
+		theLayer_weight_regularizersPackage.initializePackageContents();
+		theLayer_weight_initializersPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theModulePackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(ModulePackage.eNS_URI, theModulePackage);
+		return theModulePackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getModel() {
+		return modelEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getModel_Base_Class() {
+		return (EReference)modelEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getModel_Name() {
+		return (EAttribute)modelEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getModel_Data() {
+		return (EReference)modelEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getModel_Requires_grad() {
+		return (EAttribute)modelEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getModel_SubModule() {
+		return (EReference)modelEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getModel_Optimizer() {
+		return (EAttribute)modelEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getModel_Loss() {
+		return (EAttribute)modelEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ModuleFactory getModuleFactory() {
+		return (ModuleFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		modelEClass = createEClass(MODEL);
+		createEReference(modelEClass, MODEL__BASE_CLASS);
+		createEAttribute(modelEClass, MODEL__NAME);
+		createEReference(modelEClass, MODEL__DATA);
+		createEAttribute(modelEClass, MODEL__REQUIRES_GRAD);
+		createEReference(modelEClass, MODEL__SUB_MODULE);
+		createEAttribute(modelEClass, MODEL__OPTIMIZER);
+		createEAttribute(modelEClass, MODEL__LOSS);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		UMLPackage theUMLPackage = (UMLPackage)EPackage.Registry.INSTANCE.getEPackage(UMLPackage.eNS_URI);
+		TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+		TensorPackage theTensorPackage = (TensorPackage)EPackage.Registry.INSTANCE.getEPackage(TensorPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(modelEClass, Model.class, "Model", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEReference(getModel_Base_Class(), theUMLPackage.getClass_(), null, "base_Class", null, 0, 1, Model.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getModel_Name(), theTypesPackage.getString(), "name", null, 1, 1, Model.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEReference(getModel_Data(), theTensorPackage.getTensor(), null, "data", null, 1, 1, Model.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getModel_Requires_grad(), theTypesPackage.getBoolean(), "requires_grad", null, 0, 1, Model.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEReference(getModel_SubModule(), this.getModel(), null, "subModule", null, 0, -1, Model.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getModel_Optimizer(), theTypesPackage.getString(), "optimizer", null, 0, 1, Model.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getModel_Loss(), theTypesPackage.getString(), "loss", null, 0, 1, Model.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+	}
+
+} //ModulePackageImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Module/util/ModuleAdapterFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Module/util/ModuleAdapterFactory.java
new file mode 100644
index 0000000..1f2d94f
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Module/util/ModuleAdapterFactory.java
@@ -0,0 +1,129 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Module.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage
+ * @generated
+ */
+public class ModuleAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static ModulePackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ModuleAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = ModulePackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ModuleSwitch<Adapter> modelSwitch =
+		new ModuleSwitch<Adapter>() {
+			@Override
+			public Adapter caseModel(Model object) {
+				return createModelAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model <em>Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.Model
+	 * @generated
+	 */
+	public Adapter createModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //ModuleAdapterFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Module/util/ModuleSwitch.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Module/util/ModuleSwitch.java
new file mode 100644
index 0000000..7cdbd3b
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Module/util/ModuleSwitch.java
@@ -0,0 +1,119 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Module.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage
+ * @generated
+ */
+public class ModuleSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static ModulePackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ModuleSwitch() {
+		if (modelPackage == null) {
+			modelPackage = ModulePackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case ModulePackage.MODEL: {
+				Model model = (Model)theEObject;
+				T result = caseModel(model);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseModel(Model object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //ModuleSwitch
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/MultiLabelSoftMarginLoss.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/MultiLabelSoftMarginLoss.java
new file mode 100644
index 0000000..539758b
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/MultiLabelSoftMarginLoss.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_2;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Multi Label Soft Margin Loss</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.AIMLPackage#getMultiLabelSoftMarginLoss()
+ * @model
+ * @generated
+ */
+public interface MultiLabelSoftMarginLoss extends Loss_functions_1_2 {
+} // MultiLabelSoftMarginLoss
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/CELU.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/CELU.java
new file mode 100644
index 0000000..b6aa3a8
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/CELU.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>CELU</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.CELU#getAlpha <em>Alpha</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getCELU()
+ * @model
+ * @generated
+ */
+public interface CELU extends Nonlinear_activations_weightedsumnonlinearity_1 {
+	/**
+	 * Returns the value of the '<em><b>Alpha</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Alpha</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Alpha</em>' attribute.
+	 * @see #setAlpha(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getCELU_Alpha()
+	 * @model dataType="org.eclipse.uml2.types.Real" ordered="false"
+	 * @generated
+	 */
+	double getAlpha();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.CELU#getAlpha <em>Alpha</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Alpha</em>' attribute.
+	 * @see #getAlpha()
+	 * @generated
+	 */
+	void setAlpha(double value);
+
+} // CELU
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/ELU.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/ELU.java
new file mode 100644
index 0000000..255c624
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/ELU.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>ELU</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.ELU#getAlpha <em>Alpha</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getELU()
+ * @model
+ * @generated
+ */
+public interface ELU extends Nonlinear_activations_weightedsumnonlinearity_1 {
+	/**
+	 * Returns the value of the '<em><b>Alpha</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Alpha</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Alpha</em>' attribute.
+	 * @see #setAlpha(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getELU_Alpha()
+	 * @model dataType="org.eclipse.uml2.types.Real" ordered="false"
+	 * @generated
+	 */
+	double getAlpha();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.ELU#getAlpha <em>Alpha</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Alpha</em>' attribute.
+	 * @see #getAlpha()
+	 * @generated
+	 */
+	void setAlpha(double value);
+
+} // ELU
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/GELU.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/GELU.java
new file mode 100644
index 0000000..aa00113
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/GELU.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>GELU</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getGELU()
+ * @model
+ * @generated
+ */
+public interface GELU extends Nonlinear_activations_weightedsumnonlinearity {
+} // GELU
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/Hardshrink.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/Hardshrink.java
new file mode 100644
index 0000000..c4628ee
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/Hardshrink.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Hardshrink</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getHardshrink()
+ * @model
+ * @generated
+ */
+public interface Hardshrink extends shrink {
+} // Hardshrink
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/Hardtanh.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/Hardtanh.java
new file mode 100644
index 0000000..f6f4e4a
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/Hardtanh.java
@@ -0,0 +1,85 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Hardtanh</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Hardtanh#getMin_val <em>Min val</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Hardtanh#getMax_val <em>Max val</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getHardtanh()
+ * @model
+ * @generated
+ */
+public interface Hardtanh extends Nonlinear_activations_weightedsumnonlinearity_1 {
+	/**
+	 * Returns the value of the '<em><b>Min val</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Min val</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Min val</em>' attribute.
+	 * @see #setMin_val(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getHardtanh_Min_val()
+	 * @model dataType="org.eclipse.uml2.types.Real" ordered="false"
+	 * @generated
+	 */
+	double getMin_val();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Hardtanh#getMin_val <em>Min val</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Min val</em>' attribute.
+	 * @see #getMin_val()
+	 * @generated
+	 */
+	void setMin_val(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Max val</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Max val</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Max val</em>' attribute.
+	 * @see #setMax_val(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getHardtanh_Max_val()
+	 * @model dataType="org.eclipse.uml2.types.Real" ordered="false"
+	 * @generated
+	 */
+	double getMax_val();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Hardtanh#getMax_val <em>Max val</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Max val</em>' attribute.
+	 * @see #getMax_val()
+	 * @generated
+	 */
+	void setMax_val(double value);
+
+} // Hardtanh
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/LeakyReLU.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/LeakyReLU.java
new file mode 100644
index 0000000..76764b8
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/LeakyReLU.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Leaky Re LU</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.LeakyReLU#getNegative_slope <em>Negative slope</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getLeakyReLU()
+ * @model
+ * @generated
+ */
+public interface LeakyReLU extends Nonlinear_activations_weightedsumnonlinearity_1 {
+	/**
+	 * Returns the value of the '<em><b>Negative slope</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Negative slope</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Negative slope</em>' attribute.
+	 * @see #setNegative_slope(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getLeakyReLU_Negative_slope()
+	 * @model dataType="org.eclipse.uml2.types.Real" ordered="false"
+	 * @generated
+	 */
+	double getNegative_slope();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.LeakyReLU#getNegative_slope <em>Negative slope</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Negative slope</em>' attribute.
+	 * @see #getNegative_slope()
+	 * @generated
+	 */
+	void setNegative_slope(double value);
+
+} // LeakyReLU
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/LogSigmoid.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/LogSigmoid.java
new file mode 100644
index 0000000..b4b28be
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/LogSigmoid.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Log Sigmoid</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getLogSigmoid()
+ * @model
+ * @generated
+ */
+public interface LogSigmoid extends Nonlinear_activations_weightedsumnonlinearity {
+} // LogSigmoid
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/MultiheadAttention.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/MultiheadAttention.java
new file mode 100644
index 0000000..d606c09
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/MultiheadAttention.java
@@ -0,0 +1,248 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Multihead Attention</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention#getEmbed_dim <em>Embed dim</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention#getNum_heads <em>Num heads</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention#getDropout <em>Dropout</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention#isBias <em>Bias</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention#isAdd_bias_kv <em>Add bias kv</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention#isAdd_zero_attn <em>Add zero attn</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention#getKdim <em>Kdim</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention#getVdim <em>Vdim</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getMultiheadAttention()
+ * @model
+ * @generated
+ */
+public interface MultiheadAttention extends Nonlinear_activations_weightedsumnonlinearity {
+	/**
+	 * Returns the value of the '<em><b>Embed dim</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Embed dim</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Embed dim</em>' attribute.
+	 * @see #setEmbed_dim(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getMultiheadAttention_Embed_dim()
+	 * @model dataType="org.eclipse.uml2.types.Integer" required="true" ordered="false"
+	 * @generated
+	 */
+	int getEmbed_dim();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention#getEmbed_dim <em>Embed dim</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Embed dim</em>' attribute.
+	 * @see #getEmbed_dim()
+	 * @generated
+	 */
+	void setEmbed_dim(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Num heads</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Num heads</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Num heads</em>' attribute.
+	 * @see #setNum_heads(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getMultiheadAttention_Num_heads()
+	 * @model dataType="org.eclipse.uml2.types.Integer" required="true" ordered="false"
+	 * @generated
+	 */
+	int getNum_heads();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention#getNum_heads <em>Num heads</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Num heads</em>' attribute.
+	 * @see #getNum_heads()
+	 * @generated
+	 */
+	void setNum_heads(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Dropout</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Dropout</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Dropout</em>' attribute.
+	 * @see #setDropout(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getMultiheadAttention_Dropout()
+	 * @model dataType="org.eclipse.uml2.types.Real" ordered="false"
+	 * @generated
+	 */
+	double getDropout();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention#getDropout <em>Dropout</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Dropout</em>' attribute.
+	 * @see #getDropout()
+	 * @generated
+	 */
+	void setDropout(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Bias</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Bias</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Bias</em>' attribute.
+	 * @see #setBias(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getMultiheadAttention_Bias()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isBias();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention#isBias <em>Bias</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Bias</em>' attribute.
+	 * @see #isBias()
+	 * @generated
+	 */
+	void setBias(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Add bias kv</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Add bias kv</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Add bias kv</em>' attribute.
+	 * @see #setAdd_bias_kv(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getMultiheadAttention_Add_bias_kv()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 *        annotation="http://www.eclipse.org/uml2/2.0.0/UML originalName='add_bias_kv '"
+	 * @generated
+	 */
+	boolean isAdd_bias_kv();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention#isAdd_bias_kv <em>Add bias kv</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Add bias kv</em>' attribute.
+	 * @see #isAdd_bias_kv()
+	 * @generated
+	 */
+	void setAdd_bias_kv(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Add zero attn</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Add zero attn</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Add zero attn</em>' attribute.
+	 * @see #setAdd_zero_attn(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getMultiheadAttention_Add_zero_attn()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isAdd_zero_attn();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention#isAdd_zero_attn <em>Add zero attn</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Add zero attn</em>' attribute.
+	 * @see #isAdd_zero_attn()
+	 * @generated
+	 */
+	void setAdd_zero_attn(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Kdim</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Kdim</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Kdim</em>' attribute.
+	 * @see #setKdim(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getMultiheadAttention_Kdim()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	int getKdim();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention#getKdim <em>Kdim</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Kdim</em>' attribute.
+	 * @see #getKdim()
+	 * @generated
+	 */
+	void setKdim(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Vdim</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Vdim</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Vdim</em>' attribute.
+	 * @see #setVdim(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getMultiheadAttention_Vdim()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	int getVdim();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention#getVdim <em>Vdim</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Vdim</em>' attribute.
+	 * @see #getVdim()
+	 * @generated
+	 */
+	void setVdim(int value);
+
+} // MultiheadAttention
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/NonLinearActivationsFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/NonLinearActivationsFactory.java
new file mode 100644
index 0000000..9437381
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/NonLinearActivationsFactory.java
@@ -0,0 +1,222 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage
+ * @generated
+ */
+public interface NonLinearActivationsFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	NonLinearActivationsFactory eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>ELU</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>ELU</em>'.
+	 * @generated
+	 */
+	ELU createELU();
+
+	/**
+	 * Returns a new object of class '<em>Leaky Re LU</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Leaky Re LU</em>'.
+	 * @generated
+	 */
+	LeakyReLU createLeakyReLU();
+
+	/**
+	 * Returns a new object of class '<em>Log Sigmoid</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Log Sigmoid</em>'.
+	 * @generated
+	 */
+	LogSigmoid createLogSigmoid();
+
+	/**
+	 * Returns a new object of class '<em>Multihead Attention</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Multihead Attention</em>'.
+	 * @generated
+	 */
+	MultiheadAttention createMultiheadAttention();
+
+	/**
+	 * Returns a new object of class '<em>PRe LU</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>PRe LU</em>'.
+	 * @generated
+	 */
+	PReLU createPReLU();
+
+	/**
+	 * Returns a new object of class '<em>Re LU</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Re LU</em>'.
+	 * @generated
+	 */
+	ReLU createReLU();
+
+	/**
+	 * Returns a new object of class '<em>Re LU6</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Re LU6</em>'.
+	 * @generated
+	 */
+	ReLU6 createReLU6();
+
+	/**
+	 * Returns a new object of class '<em>SELU</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>SELU</em>'.
+	 * @generated
+	 */
+	SELU createSELU();
+
+	/**
+	 * Returns a new object of class '<em>RRe LU</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>RRe LU</em>'.
+	 * @generated
+	 */
+	RReLU createRReLU();
+
+	/**
+	 * Returns a new object of class '<em>CELU</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>CELU</em>'.
+	 * @generated
+	 */
+	CELU createCELU();
+
+	/**
+	 * Returns a new object of class '<em>GELU</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>GELU</em>'.
+	 * @generated
+	 */
+	GELU createGELU();
+
+	/**
+	 * Returns a new object of class '<em>Sigmoid</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Sigmoid</em>'.
+	 * @generated
+	 */
+	Sigmoid createSigmoid();
+
+	/**
+	 * Returns a new object of class '<em>Softplus</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Softplus</em>'.
+	 * @generated
+	 */
+	Softplus createSoftplus();
+
+	/**
+	 * Returns a new object of class '<em>Softshrink</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Softshrink</em>'.
+	 * @generated
+	 */
+	Softshrink createSoftshrink();
+
+	/**
+	 * Returns a new object of class '<em>Hardshrink</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Hardshrink</em>'.
+	 * @generated
+	 */
+	Hardshrink createHardshrink();
+
+	/**
+	 * Returns a new object of class '<em>Softsign</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Softsign</em>'.
+	 * @generated
+	 */
+	Softsign createSoftsign();
+
+	/**
+	 * Returns a new object of class '<em>Tanhshrink</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Tanhshrink</em>'.
+	 * @generated
+	 */
+	Tanhshrink createTanhshrink();
+
+	/**
+	 * Returns a new object of class '<em>Tanh</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Tanh</em>'.
+	 * @generated
+	 */
+	Tanh createTanh();
+
+	/**
+	 * Returns a new object of class '<em>Threshold</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Threshold</em>'.
+	 * @generated
+	 */
+	Threshold createThreshold();
+
+	/**
+	 * Returns a new object of class '<em>Hardtanh</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Hardtanh</em>'.
+	 * @generated
+	 */
+	Hardtanh createHardtanh();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	NonLinearActivationsPackage getNonLinearActivationsPackage();
+
+} //NonLinearActivationsFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/NonLinearActivationsPackage.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/NonLinearActivationsPackage.java
new file mode 100644
index 0000000..d54a7f4
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/NonLinearActivationsPackage.java
@@ -0,0 +1,3391 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface NonLinearActivationsPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "NonLinearActivations"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://www.eclipse.org/papyrus/AIML/nonlinear/1"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "AIML.NonLinearActivations"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	NonLinearActivationsPackage eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.Nonlinear_activations_weightedsumnonlinearityImpl <em>Nonlinear activations weightedsumnonlinearity</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.Nonlinear_activations_weightedsumnonlinearityImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getNonlinear_activations_weightedsumnonlinearity()
+	 * @generated
+	 */
+	int NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY = 0;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__BASE_CLASS = ModulePackage.MODEL__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__NAME = ModulePackage.MODEL__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__DATA = ModulePackage.MODEL__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__REQUIRES_GRAD = ModulePackage.MODEL__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__SUB_MODULE = ModulePackage.MODEL__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__OPTIMIZER = ModulePackage.MODEL__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__LOSS = ModulePackage.MODEL__LOSS;
+
+	/**
+	 * The number of structural features of the '<em>Nonlinear activations weightedsumnonlinearity</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_FEATURE_COUNT = ModulePackage.MODEL_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Nonlinear activations weightedsumnonlinearity</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_OPERATION_COUNT = ModulePackage.MODEL_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.Nonlinear_activations_weightedsumnonlinearity_1Impl <em>Nonlinear activations weightedsumnonlinearity 1</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.Nonlinear_activations_weightedsumnonlinearity_1Impl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getNonlinear_activations_weightedsumnonlinearity_1()
+	 * @generated
+	 */
+	int NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1 = 2;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__BASE_CLASS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__NAME = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__DATA = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__REQUIRES_GRAD = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__SUB_MODULE = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__OPTIMIZER = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__LOSS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Inplace</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__INPLACE = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Nonlinear activations weightedsumnonlinearity 1</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1_FEATURE_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Nonlinear activations weightedsumnonlinearity 1</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1_OPERATION_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.ELUImpl <em>ELU</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.ELUImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getELU()
+	 * @generated
+	 */
+	int ELU = 1;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELU__BASE_CLASS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELU__NAME = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELU__DATA = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELU__REQUIRES_GRAD = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELU__SUB_MODULE = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELU__OPTIMIZER = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELU__LOSS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Inplace</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELU__INPLACE = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__INPLACE;
+
+	/**
+	 * The feature id for the '<em><b>Alpha</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELU__ALPHA = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>ELU</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELU_FEATURE_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>ELU</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ELU_OPERATION_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.shrinkImpl <em>shrink</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.shrinkImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getshrink()
+	 * @generated
+	 */
+	int SHRINK = 3;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SHRINK__BASE_CLASS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SHRINK__NAME = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SHRINK__DATA = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SHRINK__REQUIRES_GRAD = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SHRINK__SUB_MODULE = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SHRINK__OPTIMIZER = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SHRINK__LOSS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Lambd</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SHRINK__LAMBD = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>shrink</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SHRINK_FEATURE_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>shrink</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SHRINK_OPERATION_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.LeakyReLUImpl <em>Leaky Re LU</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.LeakyReLUImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getLeakyReLU()
+	 * @generated
+	 */
+	int LEAKY_RE_LU = 4;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LEAKY_RE_LU__BASE_CLASS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LEAKY_RE_LU__NAME = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LEAKY_RE_LU__DATA = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LEAKY_RE_LU__REQUIRES_GRAD = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LEAKY_RE_LU__SUB_MODULE = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LEAKY_RE_LU__OPTIMIZER = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LEAKY_RE_LU__LOSS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Inplace</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LEAKY_RE_LU__INPLACE = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__INPLACE;
+
+	/**
+	 * The feature id for the '<em><b>Negative slope</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LEAKY_RE_LU__NEGATIVE_SLOPE = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Leaky Re LU</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LEAKY_RE_LU_FEATURE_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Leaky Re LU</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LEAKY_RE_LU_OPERATION_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.LogSigmoidImpl <em>Log Sigmoid</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.LogSigmoidImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getLogSigmoid()
+	 * @generated
+	 */
+	int LOG_SIGMOID = 5;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOG_SIGMOID__BASE_CLASS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOG_SIGMOID__NAME = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOG_SIGMOID__DATA = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOG_SIGMOID__REQUIRES_GRAD = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOG_SIGMOID__SUB_MODULE = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOG_SIGMOID__OPTIMIZER = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOG_SIGMOID__LOSS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__LOSS;
+
+	/**
+	 * The number of structural features of the '<em>Log Sigmoid</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOG_SIGMOID_FEATURE_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Log Sigmoid</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOG_SIGMOID_OPERATION_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.MultiheadAttentionImpl <em>Multihead Attention</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.MultiheadAttentionImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getMultiheadAttention()
+	 * @generated
+	 */
+	int MULTIHEAD_ATTENTION = 6;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTIHEAD_ATTENTION__BASE_CLASS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTIHEAD_ATTENTION__NAME = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTIHEAD_ATTENTION__DATA = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTIHEAD_ATTENTION__REQUIRES_GRAD = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTIHEAD_ATTENTION__SUB_MODULE = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTIHEAD_ATTENTION__OPTIMIZER = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTIHEAD_ATTENTION__LOSS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Embed dim</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTIHEAD_ATTENTION__EMBED_DIM = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Num heads</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTIHEAD_ATTENTION__NUM_HEADS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Dropout</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTIHEAD_ATTENTION__DROPOUT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Bias</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTIHEAD_ATTENTION__BIAS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Add bias kv</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTIHEAD_ATTENTION__ADD_BIAS_KV = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Add zero attn</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTIHEAD_ATTENTION__ADD_ZERO_ATTN = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Kdim</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTIHEAD_ATTENTION__KDIM = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_FEATURE_COUNT + 6;
+
+	/**
+	 * The feature id for the '<em><b>Vdim</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTIHEAD_ATTENTION__VDIM = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_FEATURE_COUNT + 7;
+
+	/**
+	 * The number of structural features of the '<em>Multihead Attention</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTIHEAD_ATTENTION_FEATURE_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_FEATURE_COUNT + 8;
+
+	/**
+	 * The number of operations of the '<em>Multihead Attention</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MULTIHEAD_ATTENTION_OPERATION_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.PReLUImpl <em>PRe LU</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.PReLUImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getPReLU()
+	 * @generated
+	 */
+	int PRE_LU = 7;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PRE_LU__BASE_CLASS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PRE_LU__NAME = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PRE_LU__DATA = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PRE_LU__REQUIRES_GRAD = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PRE_LU__SUB_MODULE = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PRE_LU__OPTIMIZER = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PRE_LU__LOSS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Num parameters</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PRE_LU__NUM_PARAMETERS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Init</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PRE_LU__INIT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>PRe LU</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PRE_LU_FEATURE_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>PRe LU</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PRE_LU_OPERATION_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.ReLUImpl <em>Re LU</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.ReLUImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getReLU()
+	 * @generated
+	 */
+	int RE_LU = 8;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RE_LU__BASE_CLASS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RE_LU__NAME = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RE_LU__DATA = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RE_LU__REQUIRES_GRAD = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RE_LU__SUB_MODULE = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RE_LU__OPTIMIZER = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RE_LU__LOSS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Inplace</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RE_LU__INPLACE = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__INPLACE;
+
+	/**
+	 * The number of structural features of the '<em>Re LU</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RE_LU_FEATURE_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Re LU</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RE_LU_OPERATION_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.ReLU6Impl <em>Re LU6</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.ReLU6Impl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getReLU6()
+	 * @generated
+	 */
+	int RE_LU6 = 9;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RE_LU6__BASE_CLASS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RE_LU6__NAME = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RE_LU6__DATA = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RE_LU6__REQUIRES_GRAD = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RE_LU6__SUB_MODULE = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RE_LU6__OPTIMIZER = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RE_LU6__LOSS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Inplace</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RE_LU6__INPLACE = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__INPLACE;
+
+	/**
+	 * The number of structural features of the '<em>Re LU6</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RE_LU6_FEATURE_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Re LU6</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RE_LU6_OPERATION_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.SELUImpl <em>SELU</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.SELUImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getSELU()
+	 * @generated
+	 */
+	int SELU = 10;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SELU__BASE_CLASS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SELU__NAME = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SELU__DATA = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SELU__REQUIRES_GRAD = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SELU__SUB_MODULE = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SELU__OPTIMIZER = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SELU__LOSS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Inplace</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SELU__INPLACE = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__INPLACE;
+
+	/**
+	 * The number of structural features of the '<em>SELU</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SELU_FEATURE_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>SELU</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SELU_OPERATION_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.RReLUImpl <em>RRe LU</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.RReLUImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getRReLU()
+	 * @generated
+	 */
+	int RRE_LU = 11;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RRE_LU__BASE_CLASS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RRE_LU__NAME = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RRE_LU__DATA = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RRE_LU__REQUIRES_GRAD = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RRE_LU__SUB_MODULE = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RRE_LU__OPTIMIZER = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RRE_LU__LOSS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Inplace</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RRE_LU__INPLACE = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__INPLACE;
+
+	/**
+	 * The feature id for the '<em><b>Lower</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RRE_LU__LOWER = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Upper</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RRE_LU__UPPER = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>RRe LU</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RRE_LU_FEATURE_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>RRe LU</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RRE_LU_OPERATION_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.CELUImpl <em>CELU</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.CELUImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getCELU()
+	 * @generated
+	 */
+	int CELU = 12;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CELU__BASE_CLASS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CELU__NAME = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CELU__DATA = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CELU__REQUIRES_GRAD = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CELU__SUB_MODULE = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CELU__OPTIMIZER = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CELU__LOSS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Inplace</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CELU__INPLACE = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__INPLACE;
+
+	/**
+	 * The feature id for the '<em><b>Alpha</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CELU__ALPHA = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>CELU</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CELU_FEATURE_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>CELU</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CELU_OPERATION_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.GELUImpl <em>GELU</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.GELUImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getGELU()
+	 * @generated
+	 */
+	int GELU = 13;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GELU__BASE_CLASS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GELU__NAME = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GELU__DATA = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GELU__REQUIRES_GRAD = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GELU__SUB_MODULE = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GELU__OPTIMIZER = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GELU__LOSS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__LOSS;
+
+	/**
+	 * The number of structural features of the '<em>GELU</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GELU_FEATURE_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>GELU</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GELU_OPERATION_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.SigmoidImpl <em>Sigmoid</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.SigmoidImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getSigmoid()
+	 * @generated
+	 */
+	int SIGMOID = 14;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SIGMOID__BASE_CLASS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SIGMOID__NAME = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SIGMOID__DATA = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SIGMOID__REQUIRES_GRAD = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SIGMOID__SUB_MODULE = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SIGMOID__OPTIMIZER = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SIGMOID__LOSS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__LOSS;
+
+	/**
+	 * The number of structural features of the '<em>Sigmoid</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SIGMOID_FEATURE_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Sigmoid</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SIGMOID_OPERATION_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.SoftplusImpl <em>Softplus</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.SoftplusImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getSoftplus()
+	 * @generated
+	 */
+	int SOFTPLUS = 15;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTPLUS__BASE_CLASS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTPLUS__NAME = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTPLUS__DATA = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTPLUS__REQUIRES_GRAD = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTPLUS__SUB_MODULE = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTPLUS__OPTIMIZER = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTPLUS__LOSS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Beta</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTPLUS__BETA = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Threshold</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTPLUS__THRESHOLD = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Softplus</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTPLUS_FEATURE_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Softplus</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTPLUS_OPERATION_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.SoftshrinkImpl <em>Softshrink</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.SoftshrinkImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getSoftshrink()
+	 * @generated
+	 */
+	int SOFTSHRINK = 16;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTSHRINK__BASE_CLASS = SHRINK__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTSHRINK__NAME = SHRINK__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTSHRINK__DATA = SHRINK__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTSHRINK__REQUIRES_GRAD = SHRINK__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTSHRINK__SUB_MODULE = SHRINK__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTSHRINK__OPTIMIZER = SHRINK__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTSHRINK__LOSS = SHRINK__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Lambd</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTSHRINK__LAMBD = SHRINK__LAMBD;
+
+	/**
+	 * The number of structural features of the '<em>Softshrink</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTSHRINK_FEATURE_COUNT = SHRINK_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Softshrink</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTSHRINK_OPERATION_COUNT = SHRINK_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.HardshrinkImpl <em>Hardshrink</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.HardshrinkImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getHardshrink()
+	 * @generated
+	 */
+	int HARDSHRINK = 17;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HARDSHRINK__BASE_CLASS = SHRINK__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HARDSHRINK__NAME = SHRINK__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HARDSHRINK__DATA = SHRINK__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HARDSHRINK__REQUIRES_GRAD = SHRINK__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HARDSHRINK__SUB_MODULE = SHRINK__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HARDSHRINK__OPTIMIZER = SHRINK__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HARDSHRINK__LOSS = SHRINK__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Lambd</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HARDSHRINK__LAMBD = SHRINK__LAMBD;
+
+	/**
+	 * The number of structural features of the '<em>Hardshrink</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HARDSHRINK_FEATURE_COUNT = SHRINK_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Hardshrink</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HARDSHRINK_OPERATION_COUNT = SHRINK_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.SoftsignImpl <em>Softsign</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.SoftsignImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getSoftsign()
+	 * @generated
+	 */
+	int SOFTSIGN = 18;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTSIGN__BASE_CLASS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTSIGN__NAME = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTSIGN__DATA = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTSIGN__REQUIRES_GRAD = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTSIGN__SUB_MODULE = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTSIGN__OPTIMIZER = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTSIGN__LOSS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__LOSS;
+
+	/**
+	 * The number of structural features of the '<em>Softsign</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTSIGN_FEATURE_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Softsign</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTSIGN_OPERATION_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.TanhshrinkImpl <em>Tanhshrink</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.TanhshrinkImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getTanhshrink()
+	 * @generated
+	 */
+	int TANHSHRINK = 19;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TANHSHRINK__BASE_CLASS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TANHSHRINK__NAME = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TANHSHRINK__DATA = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TANHSHRINK__REQUIRES_GRAD = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TANHSHRINK__SUB_MODULE = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TANHSHRINK__OPTIMIZER = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TANHSHRINK__LOSS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__LOSS;
+
+	/**
+	 * The number of structural features of the '<em>Tanhshrink</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TANHSHRINK_FEATURE_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Tanhshrink</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TANHSHRINK_OPERATION_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.TanhImpl <em>Tanh</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.TanhImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getTanh()
+	 * @generated
+	 */
+	int TANH = 20;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TANH__BASE_CLASS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TANH__NAME = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TANH__DATA = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TANH__REQUIRES_GRAD = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TANH__SUB_MODULE = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TANH__OPTIMIZER = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TANH__LOSS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY__LOSS;
+
+	/**
+	 * The number of structural features of the '<em>Tanh</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TANH_FEATURE_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Tanh</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TANH_OPERATION_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.ThresholdImpl <em>Threshold</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.ThresholdImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getThreshold()
+	 * @generated
+	 */
+	int THRESHOLD = 21;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THRESHOLD__BASE_CLASS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THRESHOLD__NAME = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THRESHOLD__DATA = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THRESHOLD__REQUIRES_GRAD = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THRESHOLD__SUB_MODULE = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THRESHOLD__OPTIMIZER = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THRESHOLD__LOSS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Inplace</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THRESHOLD__INPLACE = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__INPLACE;
+
+	/**
+	 * The feature id for the '<em><b>Threshold</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THRESHOLD__THRESHOLD = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THRESHOLD__VALUE = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Threshold</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THRESHOLD_FEATURE_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Threshold</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int THRESHOLD_OPERATION_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.HardtanhImpl <em>Hardtanh</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.HardtanhImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getHardtanh()
+	 * @generated
+	 */
+	int HARDTANH = 22;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HARDTANH__BASE_CLASS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HARDTANH__NAME = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HARDTANH__DATA = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HARDTANH__REQUIRES_GRAD = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HARDTANH__SUB_MODULE = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HARDTANH__OPTIMIZER = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HARDTANH__LOSS = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Inplace</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HARDTANH__INPLACE = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__INPLACE;
+
+	/**
+	 * The feature id for the '<em><b>Min val</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HARDTANH__MIN_VAL = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Max val</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HARDTANH__MAX_VAL = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Hardtanh</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HARDTANH_FEATURE_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Hardtanh</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int HARDTANH_OPERATION_COUNT = NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1_OPERATION_COUNT + 0;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Nonlinear_activations_weightedsumnonlinearity <em>Nonlinear activations weightedsumnonlinearity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Nonlinear activations weightedsumnonlinearity</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Nonlinear_activations_weightedsumnonlinearity
+	 * @generated
+	 */
+	EClass getNonlinear_activations_weightedsumnonlinearity();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.ELU <em>ELU</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>ELU</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.ELU
+	 * @generated
+	 */
+	EClass getELU();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.ELU#getAlpha <em>Alpha</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Alpha</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.ELU#getAlpha()
+	 * @see #getELU()
+	 * @generated
+	 */
+	EAttribute getELU_Alpha();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Nonlinear_activations_weightedsumnonlinearity_1 <em>Nonlinear activations weightedsumnonlinearity 1</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Nonlinear activations weightedsumnonlinearity 1</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Nonlinear_activations_weightedsumnonlinearity_1
+	 * @generated
+	 */
+	EClass getNonlinear_activations_weightedsumnonlinearity_1();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Nonlinear_activations_weightedsumnonlinearity_1#isInplace <em>Inplace</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Inplace</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Nonlinear_activations_weightedsumnonlinearity_1#isInplace()
+	 * @see #getNonlinear_activations_weightedsumnonlinearity_1()
+	 * @generated
+	 */
+	EAttribute getNonlinear_activations_weightedsumnonlinearity_1_Inplace();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.shrink <em>shrink</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>shrink</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.shrink
+	 * @generated
+	 */
+	EClass getshrink();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.shrink#getLambd <em>Lambd</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Lambd</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.shrink#getLambd()
+	 * @see #getshrink()
+	 * @generated
+	 */
+	EAttribute getshrink_Lambd();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.LeakyReLU <em>Leaky Re LU</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Leaky Re LU</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.LeakyReLU
+	 * @generated
+	 */
+	EClass getLeakyReLU();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.LeakyReLU#getNegative_slope <em>Negative slope</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Negative slope</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.LeakyReLU#getNegative_slope()
+	 * @see #getLeakyReLU()
+	 * @generated
+	 */
+	EAttribute getLeakyReLU_Negative_slope();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.LogSigmoid <em>Log Sigmoid</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Log Sigmoid</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.LogSigmoid
+	 * @generated
+	 */
+	EClass getLogSigmoid();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention <em>Multihead Attention</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Multihead Attention</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention
+	 * @generated
+	 */
+	EClass getMultiheadAttention();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention#getEmbed_dim <em>Embed dim</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Embed dim</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention#getEmbed_dim()
+	 * @see #getMultiheadAttention()
+	 * @generated
+	 */
+	EAttribute getMultiheadAttention_Embed_dim();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention#getNum_heads <em>Num heads</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Num heads</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention#getNum_heads()
+	 * @see #getMultiheadAttention()
+	 * @generated
+	 */
+	EAttribute getMultiheadAttention_Num_heads();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention#getDropout <em>Dropout</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Dropout</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention#getDropout()
+	 * @see #getMultiheadAttention()
+	 * @generated
+	 */
+	EAttribute getMultiheadAttention_Dropout();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention#isBias <em>Bias</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Bias</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention#isBias()
+	 * @see #getMultiheadAttention()
+	 * @generated
+	 */
+	EAttribute getMultiheadAttention_Bias();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention#isAdd_bias_kv <em>Add bias kv</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Add bias kv</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention#isAdd_bias_kv()
+	 * @see #getMultiheadAttention()
+	 * @generated
+	 */
+	EAttribute getMultiheadAttention_Add_bias_kv();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention#isAdd_zero_attn <em>Add zero attn</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Add zero attn</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention#isAdd_zero_attn()
+	 * @see #getMultiheadAttention()
+	 * @generated
+	 */
+	EAttribute getMultiheadAttention_Add_zero_attn();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention#getKdim <em>Kdim</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Kdim</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention#getKdim()
+	 * @see #getMultiheadAttention()
+	 * @generated
+	 */
+	EAttribute getMultiheadAttention_Kdim();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention#getVdim <em>Vdim</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Vdim</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention#getVdim()
+	 * @see #getMultiheadAttention()
+	 * @generated
+	 */
+	EAttribute getMultiheadAttention_Vdim();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.PReLU <em>PRe LU</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>PRe LU</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.PReLU
+	 * @generated
+	 */
+	EClass getPReLU();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.PReLU#getNum_parameters <em>Num parameters</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Num parameters</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.PReLU#getNum_parameters()
+	 * @see #getPReLU()
+	 * @generated
+	 */
+	EAttribute getPReLU_Num_parameters();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.PReLU#getInit <em>Init</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Init</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.PReLU#getInit()
+	 * @see #getPReLU()
+	 * @generated
+	 */
+	EAttribute getPReLU_Init();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.ReLU <em>Re LU</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Re LU</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.ReLU
+	 * @generated
+	 */
+	EClass getReLU();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.ReLU6 <em>Re LU6</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Re LU6</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.ReLU6
+	 * @generated
+	 */
+	EClass getReLU6();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.SELU <em>SELU</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>SELU</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.SELU
+	 * @generated
+	 */
+	EClass getSELU();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.RReLU <em>RRe LU</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>RRe LU</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.RReLU
+	 * @generated
+	 */
+	EClass getRReLU();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.RReLU#getLower <em>Lower</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Lower</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.RReLU#getLower()
+	 * @see #getRReLU()
+	 * @generated
+	 */
+	EAttribute getRReLU_Lower();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.RReLU#getUpper <em>Upper</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Upper</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.RReLU#getUpper()
+	 * @see #getRReLU()
+	 * @generated
+	 */
+	EAttribute getRReLU_Upper();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.CELU <em>CELU</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>CELU</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.CELU
+	 * @generated
+	 */
+	EClass getCELU();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.CELU#getAlpha <em>Alpha</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Alpha</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.CELU#getAlpha()
+	 * @see #getCELU()
+	 * @generated
+	 */
+	EAttribute getCELU_Alpha();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.GELU <em>GELU</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>GELU</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.GELU
+	 * @generated
+	 */
+	EClass getGELU();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Sigmoid <em>Sigmoid</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Sigmoid</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Sigmoid
+	 * @generated
+	 */
+	EClass getSigmoid();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Softplus <em>Softplus</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Softplus</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Softplus
+	 * @generated
+	 */
+	EClass getSoftplus();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Softplus#getBeta <em>Beta</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Beta</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Softplus#getBeta()
+	 * @see #getSoftplus()
+	 * @generated
+	 */
+	EAttribute getSoftplus_Beta();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Softplus#getThreshold <em>Threshold</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Threshold</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Softplus#getThreshold()
+	 * @see #getSoftplus()
+	 * @generated
+	 */
+	EAttribute getSoftplus_Threshold();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Softshrink <em>Softshrink</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Softshrink</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Softshrink
+	 * @generated
+	 */
+	EClass getSoftshrink();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Hardshrink <em>Hardshrink</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Hardshrink</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Hardshrink
+	 * @generated
+	 */
+	EClass getHardshrink();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Softsign <em>Softsign</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Softsign</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Softsign
+	 * @generated
+	 */
+	EClass getSoftsign();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Tanhshrink <em>Tanhshrink</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Tanhshrink</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Tanhshrink
+	 * @generated
+	 */
+	EClass getTanhshrink();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Tanh <em>Tanh</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Tanh</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Tanh
+	 * @generated
+	 */
+	EClass getTanh();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Threshold <em>Threshold</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Threshold</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Threshold
+	 * @generated
+	 */
+	EClass getThreshold();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Threshold#getThreshold <em>Threshold</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Threshold</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Threshold#getThreshold()
+	 * @see #getThreshold()
+	 * @generated
+	 */
+	EAttribute getThreshold_Threshold();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Threshold#getValue <em>Value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Value</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Threshold#getValue()
+	 * @see #getThreshold()
+	 * @generated
+	 */
+	EAttribute getThreshold_Value();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Hardtanh <em>Hardtanh</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Hardtanh</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Hardtanh
+	 * @generated
+	 */
+	EClass getHardtanh();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Hardtanh#getMin_val <em>Min val</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Min val</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Hardtanh#getMin_val()
+	 * @see #getHardtanh()
+	 * @generated
+	 */
+	EAttribute getHardtanh_Min_val();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Hardtanh#getMax_val <em>Max val</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Max val</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Hardtanh#getMax_val()
+	 * @see #getHardtanh()
+	 * @generated
+	 */
+	EAttribute getHardtanh_Max_val();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	NonLinearActivationsFactory getNonLinearActivationsFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.Nonlinear_activations_weightedsumnonlinearityImpl <em>Nonlinear activations weightedsumnonlinearity</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.Nonlinear_activations_weightedsumnonlinearityImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getNonlinear_activations_weightedsumnonlinearity()
+		 * @generated
+		 */
+		EClass NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY = eINSTANCE.getNonlinear_activations_weightedsumnonlinearity();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.ELUImpl <em>ELU</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.ELUImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getELU()
+		 * @generated
+		 */
+		EClass ELU = eINSTANCE.getELU();
+
+		/**
+		 * The meta object literal for the '<em><b>Alpha</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ELU__ALPHA = eINSTANCE.getELU_Alpha();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.Nonlinear_activations_weightedsumnonlinearity_1Impl <em>Nonlinear activations weightedsumnonlinearity 1</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.Nonlinear_activations_weightedsumnonlinearity_1Impl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getNonlinear_activations_weightedsumnonlinearity_1()
+		 * @generated
+		 */
+		EClass NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1 = eINSTANCE.getNonlinear_activations_weightedsumnonlinearity_1();
+
+		/**
+		 * The meta object literal for the '<em><b>Inplace</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__INPLACE = eINSTANCE.getNonlinear_activations_weightedsumnonlinearity_1_Inplace();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.shrinkImpl <em>shrink</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.shrinkImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getshrink()
+		 * @generated
+		 */
+		EClass SHRINK = eINSTANCE.getshrink();
+
+		/**
+		 * The meta object literal for the '<em><b>Lambd</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SHRINK__LAMBD = eINSTANCE.getshrink_Lambd();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.LeakyReLUImpl <em>Leaky Re LU</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.LeakyReLUImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getLeakyReLU()
+		 * @generated
+		 */
+		EClass LEAKY_RE_LU = eINSTANCE.getLeakyReLU();
+
+		/**
+		 * The meta object literal for the '<em><b>Negative slope</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LEAKY_RE_LU__NEGATIVE_SLOPE = eINSTANCE.getLeakyReLU_Negative_slope();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.LogSigmoidImpl <em>Log Sigmoid</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.LogSigmoidImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getLogSigmoid()
+		 * @generated
+		 */
+		EClass LOG_SIGMOID = eINSTANCE.getLogSigmoid();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.MultiheadAttentionImpl <em>Multihead Attention</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.MultiheadAttentionImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getMultiheadAttention()
+		 * @generated
+		 */
+		EClass MULTIHEAD_ATTENTION = eINSTANCE.getMultiheadAttention();
+
+		/**
+		 * The meta object literal for the '<em><b>Embed dim</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MULTIHEAD_ATTENTION__EMBED_DIM = eINSTANCE.getMultiheadAttention_Embed_dim();
+
+		/**
+		 * The meta object literal for the '<em><b>Num heads</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MULTIHEAD_ATTENTION__NUM_HEADS = eINSTANCE.getMultiheadAttention_Num_heads();
+
+		/**
+		 * The meta object literal for the '<em><b>Dropout</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MULTIHEAD_ATTENTION__DROPOUT = eINSTANCE.getMultiheadAttention_Dropout();
+
+		/**
+		 * The meta object literal for the '<em><b>Bias</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MULTIHEAD_ATTENTION__BIAS = eINSTANCE.getMultiheadAttention_Bias();
+
+		/**
+		 * The meta object literal for the '<em><b>Add bias kv</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MULTIHEAD_ATTENTION__ADD_BIAS_KV = eINSTANCE.getMultiheadAttention_Add_bias_kv();
+
+		/**
+		 * The meta object literal for the '<em><b>Add zero attn</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MULTIHEAD_ATTENTION__ADD_ZERO_ATTN = eINSTANCE.getMultiheadAttention_Add_zero_attn();
+
+		/**
+		 * The meta object literal for the '<em><b>Kdim</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MULTIHEAD_ATTENTION__KDIM = eINSTANCE.getMultiheadAttention_Kdim();
+
+		/**
+		 * The meta object literal for the '<em><b>Vdim</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MULTIHEAD_ATTENTION__VDIM = eINSTANCE.getMultiheadAttention_Vdim();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.PReLUImpl <em>PRe LU</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.PReLUImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getPReLU()
+		 * @generated
+		 */
+		EClass PRE_LU = eINSTANCE.getPReLU();
+
+		/**
+		 * The meta object literal for the '<em><b>Num parameters</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PRE_LU__NUM_PARAMETERS = eINSTANCE.getPReLU_Num_parameters();
+
+		/**
+		 * The meta object literal for the '<em><b>Init</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PRE_LU__INIT = eINSTANCE.getPReLU_Init();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.ReLUImpl <em>Re LU</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.ReLUImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getReLU()
+		 * @generated
+		 */
+		EClass RE_LU = eINSTANCE.getReLU();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.ReLU6Impl <em>Re LU6</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.ReLU6Impl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getReLU6()
+		 * @generated
+		 */
+		EClass RE_LU6 = eINSTANCE.getReLU6();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.SELUImpl <em>SELU</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.SELUImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getSELU()
+		 * @generated
+		 */
+		EClass SELU = eINSTANCE.getSELU();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.RReLUImpl <em>RRe LU</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.RReLUImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getRReLU()
+		 * @generated
+		 */
+		EClass RRE_LU = eINSTANCE.getRReLU();
+
+		/**
+		 * The meta object literal for the '<em><b>Lower</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute RRE_LU__LOWER = eINSTANCE.getRReLU_Lower();
+
+		/**
+		 * The meta object literal for the '<em><b>Upper</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute RRE_LU__UPPER = eINSTANCE.getRReLU_Upper();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.CELUImpl <em>CELU</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.CELUImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getCELU()
+		 * @generated
+		 */
+		EClass CELU = eINSTANCE.getCELU();
+
+		/**
+		 * The meta object literal for the '<em><b>Alpha</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute CELU__ALPHA = eINSTANCE.getCELU_Alpha();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.GELUImpl <em>GELU</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.GELUImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getGELU()
+		 * @generated
+		 */
+		EClass GELU = eINSTANCE.getGELU();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.SigmoidImpl <em>Sigmoid</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.SigmoidImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getSigmoid()
+		 * @generated
+		 */
+		EClass SIGMOID = eINSTANCE.getSigmoid();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.SoftplusImpl <em>Softplus</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.SoftplusImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getSoftplus()
+		 * @generated
+		 */
+		EClass SOFTPLUS = eINSTANCE.getSoftplus();
+
+		/**
+		 * The meta object literal for the '<em><b>Beta</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SOFTPLUS__BETA = eINSTANCE.getSoftplus_Beta();
+
+		/**
+		 * The meta object literal for the '<em><b>Threshold</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SOFTPLUS__THRESHOLD = eINSTANCE.getSoftplus_Threshold();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.SoftshrinkImpl <em>Softshrink</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.SoftshrinkImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getSoftshrink()
+		 * @generated
+		 */
+		EClass SOFTSHRINK = eINSTANCE.getSoftshrink();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.HardshrinkImpl <em>Hardshrink</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.HardshrinkImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getHardshrink()
+		 * @generated
+		 */
+		EClass HARDSHRINK = eINSTANCE.getHardshrink();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.SoftsignImpl <em>Softsign</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.SoftsignImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getSoftsign()
+		 * @generated
+		 */
+		EClass SOFTSIGN = eINSTANCE.getSoftsign();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.TanhshrinkImpl <em>Tanhshrink</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.TanhshrinkImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getTanhshrink()
+		 * @generated
+		 */
+		EClass TANHSHRINK = eINSTANCE.getTanhshrink();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.TanhImpl <em>Tanh</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.TanhImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getTanh()
+		 * @generated
+		 */
+		EClass TANH = eINSTANCE.getTanh();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.ThresholdImpl <em>Threshold</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.ThresholdImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getThreshold()
+		 * @generated
+		 */
+		EClass THRESHOLD = eINSTANCE.getThreshold();
+
+		/**
+		 * The meta object literal for the '<em><b>Threshold</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute THRESHOLD__THRESHOLD = eINSTANCE.getThreshold_Threshold();
+
+		/**
+		 * The meta object literal for the '<em><b>Value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute THRESHOLD__VALUE = eINSTANCE.getThreshold_Value();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.HardtanhImpl <em>Hardtanh</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.HardtanhImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl#getHardtanh()
+		 * @generated
+		 */
+		EClass HARDTANH = eINSTANCE.getHardtanh();
+
+		/**
+		 * The meta object literal for the '<em><b>Min val</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute HARDTANH__MIN_VAL = eINSTANCE.getHardtanh_Min_val();
+
+		/**
+		 * The meta object literal for the '<em><b>Max val</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute HARDTANH__MAX_VAL = eINSTANCE.getHardtanh_Max_val();
+
+	}
+
+} //NonLinearActivationsPackage
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/Nonlinear_activations_weightedsumnonlinearity.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/Nonlinear_activations_weightedsumnonlinearity.java
new file mode 100644
index 0000000..61ba822
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/Nonlinear_activations_weightedsumnonlinearity.java
@@ -0,0 +1,28 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Nonlinear activations weightedsumnonlinearity</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getNonlinear_activations_weightedsumnonlinearity()
+ * @model abstract="true"
+ *        annotation="http://www.eclipse.org/uml2/2.0.0/UML originalName='Non-linear_activations_(weighted sum, nonlinearity)'"
+ * @generated
+ */
+public interface Nonlinear_activations_weightedsumnonlinearity extends Model {
+} // Nonlinear_activations_weightedsumnonlinearity
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/Nonlinear_activations_weightedsumnonlinearity_1.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/Nonlinear_activations_weightedsumnonlinearity_1.java
new file mode 100644
index 0000000..77591eb
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/Nonlinear_activations_weightedsumnonlinearity_1.java
@@ -0,0 +1,59 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Nonlinear activations weightedsumnonlinearity 1</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Nonlinear_activations_weightedsumnonlinearity_1#isInplace <em>Inplace</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getNonlinear_activations_weightedsumnonlinearity_1()
+ * @model abstract="true"
+ *        annotation="http://www.eclipse.org/uml2/2.0.0/UML originalName='Non-linear_activations_(weighted sum, nonlinearity)_1'"
+ * @generated
+ */
+public interface Nonlinear_activations_weightedsumnonlinearity_1 extends Nonlinear_activations_weightedsumnonlinearity {
+	/**
+	 * Returns the value of the '<em><b>Inplace</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Inplace</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Inplace</em>' attribute.
+	 * @see #setInplace(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getNonlinear_activations_weightedsumnonlinearity_1_Inplace()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isInplace();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Nonlinear_activations_weightedsumnonlinearity_1#isInplace <em>Inplace</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Inplace</em>' attribute.
+	 * @see #isInplace()
+	 * @generated
+	 */
+	void setInplace(boolean value);
+
+} // Nonlinear_activations_weightedsumnonlinearity_1
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/PReLU.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/PReLU.java
new file mode 100644
index 0000000..cb336fb
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/PReLU.java
@@ -0,0 +1,85 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>PRe LU</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.PReLU#getNum_parameters <em>Num parameters</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.PReLU#getInit <em>Init</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getPReLU()
+ * @model
+ * @generated
+ */
+public interface PReLU extends Nonlinear_activations_weightedsumnonlinearity {
+	/**
+	 * Returns the value of the '<em><b>Num parameters</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Num parameters</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Num parameters</em>' attribute.
+	 * @see #setNum_parameters(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getPReLU_Num_parameters()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	int getNum_parameters();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.PReLU#getNum_parameters <em>Num parameters</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Num parameters</em>' attribute.
+	 * @see #getNum_parameters()
+	 * @generated
+	 */
+	void setNum_parameters(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Init</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Init</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Init</em>' attribute.
+	 * @see #setInit(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getPReLU_Init()
+	 * @model dataType="org.eclipse.uml2.types.Real" ordered="false"
+	 * @generated
+	 */
+	double getInit();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.PReLU#getInit <em>Init</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Init</em>' attribute.
+	 * @see #getInit()
+	 * @generated
+	 */
+	void setInit(double value);
+
+} // PReLU
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/RReLU.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/RReLU.java
new file mode 100644
index 0000000..ad3a3a8
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/RReLU.java
@@ -0,0 +1,85 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>RRe LU</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.RReLU#getLower <em>Lower</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.RReLU#getUpper <em>Upper</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getRReLU()
+ * @model
+ * @generated
+ */
+public interface RReLU extends Nonlinear_activations_weightedsumnonlinearity_1 {
+	/**
+	 * Returns the value of the '<em><b>Lower</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Lower</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Lower</em>' attribute.
+	 * @see #setLower(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getRReLU_Lower()
+	 * @model dataType="org.eclipse.uml2.types.Real" ordered="false"
+	 * @generated
+	 */
+	double getLower();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.RReLU#getLower <em>Lower</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Lower</em>' attribute.
+	 * @see #getLower()
+	 * @generated
+	 */
+	void setLower(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Upper</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Upper</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Upper</em>' attribute.
+	 * @see #setUpper(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getRReLU_Upper()
+	 * @model dataType="org.eclipse.uml2.types.Real" ordered="false"
+	 * @generated
+	 */
+	double getUpper();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.RReLU#getUpper <em>Upper</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Upper</em>' attribute.
+	 * @see #getUpper()
+	 * @generated
+	 */
+	void setUpper(double value);
+
+} // RReLU
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/ReLU.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/ReLU.java
new file mode 100644
index 0000000..7115151
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/ReLU.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Re LU</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getReLU()
+ * @model
+ * @generated
+ */
+public interface ReLU extends Nonlinear_activations_weightedsumnonlinearity_1 {
+} // ReLU
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/ReLU6.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/ReLU6.java
new file mode 100644
index 0000000..03bf401
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/ReLU6.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Re LU6</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getReLU6()
+ * @model
+ * @generated
+ */
+public interface ReLU6 extends Nonlinear_activations_weightedsumnonlinearity_1 {
+} // ReLU6
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/SELU.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/SELU.java
new file mode 100644
index 0000000..02cb743
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/SELU.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>SELU</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getSELU()
+ * @model
+ * @generated
+ */
+public interface SELU extends Nonlinear_activations_weightedsumnonlinearity_1 {
+} // SELU
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/Sigmoid.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/Sigmoid.java
new file mode 100644
index 0000000..d2a7443
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/Sigmoid.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Sigmoid</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getSigmoid()
+ * @model
+ * @generated
+ */
+public interface Sigmoid extends Nonlinear_activations_weightedsumnonlinearity {
+} // Sigmoid
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/Softplus.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/Softplus.java
new file mode 100644
index 0000000..bc7f3f6
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/Softplus.java
@@ -0,0 +1,85 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Softplus</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Softplus#getBeta <em>Beta</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Softplus#getThreshold <em>Threshold</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getSoftplus()
+ * @model
+ * @generated
+ */
+public interface Softplus extends Nonlinear_activations_weightedsumnonlinearity {
+	/**
+	 * Returns the value of the '<em><b>Beta</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Beta</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Beta</em>' attribute.
+	 * @see #setBeta(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getSoftplus_Beta()
+	 * @model dataType="org.eclipse.uml2.types.Real" ordered="false"
+	 * @generated
+	 */
+	double getBeta();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Softplus#getBeta <em>Beta</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Beta</em>' attribute.
+	 * @see #getBeta()
+	 * @generated
+	 */
+	void setBeta(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Threshold</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Threshold</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Threshold</em>' attribute.
+	 * @see #setThreshold(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getSoftplus_Threshold()
+	 * @model dataType="org.eclipse.uml2.types.Real" ordered="false"
+	 * @generated
+	 */
+	double getThreshold();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Softplus#getThreshold <em>Threshold</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Threshold</em>' attribute.
+	 * @see #getThreshold()
+	 * @generated
+	 */
+	void setThreshold(double value);
+
+} // Softplus
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/Softshrink.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/Softshrink.java
new file mode 100644
index 0000000..6c70394
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/Softshrink.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Softshrink</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getSoftshrink()
+ * @model
+ * @generated
+ */
+public interface Softshrink extends shrink {
+} // Softshrink
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/Softsign.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/Softsign.java
new file mode 100644
index 0000000..74e9e9d
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/Softsign.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Softsign</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getSoftsign()
+ * @model
+ * @generated
+ */
+public interface Softsign extends Nonlinear_activations_weightedsumnonlinearity {
+} // Softsign
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/Tanh.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/Tanh.java
new file mode 100644
index 0000000..5343176
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/Tanh.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Tanh</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getTanh()
+ * @model
+ * @generated
+ */
+public interface Tanh extends Nonlinear_activations_weightedsumnonlinearity {
+} // Tanh
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/Tanhshrink.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/Tanhshrink.java
new file mode 100644
index 0000000..d92919f
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/Tanhshrink.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Tanhshrink</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getTanhshrink()
+ * @model
+ * @generated
+ */
+public interface Tanhshrink extends Nonlinear_activations_weightedsumnonlinearity {
+} // Tanhshrink
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/Threshold.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/Threshold.java
new file mode 100644
index 0000000..7ae0bcd
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/Threshold.java
@@ -0,0 +1,85 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Threshold</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Threshold#getThreshold <em>Threshold</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Threshold#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getThreshold()
+ * @model
+ * @generated
+ */
+public interface Threshold extends Nonlinear_activations_weightedsumnonlinearity_1 {
+	/**
+	 * Returns the value of the '<em><b>Threshold</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Threshold</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Threshold</em>' attribute.
+	 * @see #setThreshold(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getThreshold_Threshold()
+	 * @model dataType="org.eclipse.uml2.types.Real" required="true" ordered="false"
+	 * @generated
+	 */
+	double getThreshold();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Threshold#getThreshold <em>Threshold</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Threshold</em>' attribute.
+	 * @see #getThreshold()
+	 * @generated
+	 */
+	void setThreshold(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Value</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Value</em>' attribute.
+	 * @see #setValue(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getThreshold_Value()
+	 * @model dataType="org.eclipse.uml2.types.Integer" required="true" ordered="false"
+	 * @generated
+	 */
+	int getValue();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Threshold#getValue <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Value</em>' attribute.
+	 * @see #getValue()
+	 * @generated
+	 */
+	void setValue(int value);
+
+} // Threshold
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/CELUImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/CELUImpl.java
new file mode 100644
index 0000000..8287b02
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/CELUImpl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.CELU;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>CELU</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.CELUImpl#getAlpha <em>Alpha</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class CELUImpl extends Nonlinear_activations_weightedsumnonlinearity_1Impl implements CELU {
+	/**
+	 * The default value of the '{@link #getAlpha() <em>Alpha</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAlpha()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double ALPHA_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getAlpha() <em>Alpha</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAlpha()
+	 * @generated
+	 * @ordered
+	 */
+	protected double alpha = ALPHA_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected CELUImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NonLinearActivationsPackage.Literals.CELU;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getAlpha() {
+		return alpha;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setAlpha(double newAlpha) {
+		double oldAlpha = alpha;
+		alpha = newAlpha;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, NonLinearActivationsPackage.CELU__ALPHA, oldAlpha, alpha));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.CELU__ALPHA:
+				return getAlpha();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.CELU__ALPHA:
+				setAlpha((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.CELU__ALPHA:
+				setAlpha(ALPHA_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.CELU__ALPHA:
+				return alpha != ALPHA_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (alpha: "); //$NON-NLS-1$
+		result.append(alpha);
+		result.append(')');
+		return result.toString();
+	}
+
+} //CELUImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/ELUImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/ELUImpl.java
new file mode 100644
index 0000000..11a9811
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/ELUImpl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.ELU;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>ELU</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.ELUImpl#getAlpha <em>Alpha</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ELUImpl extends Nonlinear_activations_weightedsumnonlinearity_1Impl implements ELU {
+	/**
+	 * The default value of the '{@link #getAlpha() <em>Alpha</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAlpha()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double ALPHA_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getAlpha() <em>Alpha</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAlpha()
+	 * @generated
+	 * @ordered
+	 */
+	protected double alpha = ALPHA_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ELUImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NonLinearActivationsPackage.Literals.ELU;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getAlpha() {
+		return alpha;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setAlpha(double newAlpha) {
+		double oldAlpha = alpha;
+		alpha = newAlpha;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, NonLinearActivationsPackage.ELU__ALPHA, oldAlpha, alpha));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.ELU__ALPHA:
+				return getAlpha();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.ELU__ALPHA:
+				setAlpha((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.ELU__ALPHA:
+				setAlpha(ALPHA_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.ELU__ALPHA:
+				return alpha != ALPHA_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (alpha: "); //$NON-NLS-1$
+		result.append(alpha);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ELUImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/GELUImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/GELUImpl.java
new file mode 100644
index 0000000..805c967
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/GELUImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.GELU;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>GELU</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class GELUImpl extends Nonlinear_activations_weightedsumnonlinearityImpl implements GELU {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected GELUImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NonLinearActivationsPackage.Literals.GELU;
+	}
+
+} //GELUImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/HardshrinkImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/HardshrinkImpl.java
new file mode 100644
index 0000000..3e3c6d6
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/HardshrinkImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Hardshrink;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Hardshrink</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class HardshrinkImpl extends shrinkImpl implements Hardshrink {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected HardshrinkImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NonLinearActivationsPackage.Literals.HARDSHRINK;
+	}
+
+} //HardshrinkImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/HardtanhImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/HardtanhImpl.java
new file mode 100644
index 0000000..a4b1fc4
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/HardtanhImpl.java
@@ -0,0 +1,229 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Hardtanh;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Hardtanh</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.HardtanhImpl#getMin_val <em>Min val</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.HardtanhImpl#getMax_val <em>Max val</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class HardtanhImpl extends Nonlinear_activations_weightedsumnonlinearity_1Impl implements Hardtanh {
+	/**
+	 * The default value of the '{@link #getMin_val() <em>Min val</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMin_val()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double MIN_VAL_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getMin_val() <em>Min val</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMin_val()
+	 * @generated
+	 * @ordered
+	 */
+	protected double min_val = MIN_VAL_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMax_val() <em>Max val</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMax_val()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double MAX_VAL_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getMax_val() <em>Max val</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMax_val()
+	 * @generated
+	 * @ordered
+	 */
+	protected double max_val = MAX_VAL_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected HardtanhImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NonLinearActivationsPackage.Literals.HARDTANH;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getMin_val() {
+		return min_val;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setMin_val(double newMin_val) {
+		double oldMin_val = min_val;
+		min_val = newMin_val;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, NonLinearActivationsPackage.HARDTANH__MIN_VAL, oldMin_val, min_val));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getMax_val() {
+		return max_val;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setMax_val(double newMax_val) {
+		double oldMax_val = max_val;
+		max_val = newMax_val;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, NonLinearActivationsPackage.HARDTANH__MAX_VAL, oldMax_val, max_val));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.HARDTANH__MIN_VAL:
+				return getMin_val();
+			case NonLinearActivationsPackage.HARDTANH__MAX_VAL:
+				return getMax_val();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.HARDTANH__MIN_VAL:
+				setMin_val((Double)newValue);
+				return;
+			case NonLinearActivationsPackage.HARDTANH__MAX_VAL:
+				setMax_val((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.HARDTANH__MIN_VAL:
+				setMin_val(MIN_VAL_EDEFAULT);
+				return;
+			case NonLinearActivationsPackage.HARDTANH__MAX_VAL:
+				setMax_val(MAX_VAL_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.HARDTANH__MIN_VAL:
+				return min_val != MIN_VAL_EDEFAULT;
+			case NonLinearActivationsPackage.HARDTANH__MAX_VAL:
+				return max_val != MAX_VAL_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (min_val: "); //$NON-NLS-1$
+		result.append(min_val);
+		result.append(", max_val: "); //$NON-NLS-1$
+		result.append(max_val);
+		result.append(')');
+		return result.toString();
+	}
+
+} //HardtanhImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/LeakyReLUImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/LeakyReLUImpl.java
new file mode 100644
index 0000000..6590af8
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/LeakyReLUImpl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.LeakyReLU;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Leaky Re LU</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.LeakyReLUImpl#getNegative_slope <em>Negative slope</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class LeakyReLUImpl extends Nonlinear_activations_weightedsumnonlinearity_1Impl implements LeakyReLU {
+	/**
+	 * The default value of the '{@link #getNegative_slope() <em>Negative slope</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNegative_slope()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double NEGATIVE_SLOPE_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getNegative_slope() <em>Negative slope</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNegative_slope()
+	 * @generated
+	 * @ordered
+	 */
+	protected double negative_slope = NEGATIVE_SLOPE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LeakyReLUImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NonLinearActivationsPackage.Literals.LEAKY_RE_LU;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getNegative_slope() {
+		return negative_slope;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setNegative_slope(double newNegative_slope) {
+		double oldNegative_slope = negative_slope;
+		negative_slope = newNegative_slope;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, NonLinearActivationsPackage.LEAKY_RE_LU__NEGATIVE_SLOPE, oldNegative_slope, negative_slope));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.LEAKY_RE_LU__NEGATIVE_SLOPE:
+				return getNegative_slope();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.LEAKY_RE_LU__NEGATIVE_SLOPE:
+				setNegative_slope((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.LEAKY_RE_LU__NEGATIVE_SLOPE:
+				setNegative_slope(NEGATIVE_SLOPE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.LEAKY_RE_LU__NEGATIVE_SLOPE:
+				return negative_slope != NEGATIVE_SLOPE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (negative_slope: "); //$NON-NLS-1$
+		result.append(negative_slope);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LeakyReLUImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/LogSigmoidImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/LogSigmoidImpl.java
new file mode 100644
index 0000000..c9d00ce
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/LogSigmoidImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.LogSigmoid;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Log Sigmoid</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LogSigmoidImpl extends Nonlinear_activations_weightedsumnonlinearityImpl implements LogSigmoid {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LogSigmoidImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NonLinearActivationsPackage.Literals.LOG_SIGMOID;
+	}
+
+} //LogSigmoidImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/MultiheadAttentionImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/MultiheadAttentionImpl.java
new file mode 100644
index 0000000..f3aa9e8
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/MultiheadAttentionImpl.java
@@ -0,0 +1,565 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Multihead Attention</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.MultiheadAttentionImpl#getEmbed_dim <em>Embed dim</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.MultiheadAttentionImpl#getNum_heads <em>Num heads</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.MultiheadAttentionImpl#getDropout <em>Dropout</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.MultiheadAttentionImpl#isBias <em>Bias</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.MultiheadAttentionImpl#isAdd_bias_kv <em>Add bias kv</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.MultiheadAttentionImpl#isAdd_zero_attn <em>Add zero attn</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.MultiheadAttentionImpl#getKdim <em>Kdim</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.MultiheadAttentionImpl#getVdim <em>Vdim</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class MultiheadAttentionImpl extends Nonlinear_activations_weightedsumnonlinearityImpl implements MultiheadAttention {
+	/**
+	 * The default value of the '{@link #getEmbed_dim() <em>Embed dim</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEmbed_dim()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int EMBED_DIM_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getEmbed_dim() <em>Embed dim</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEmbed_dim()
+	 * @generated
+	 * @ordered
+	 */
+	protected int embed_dim = EMBED_DIM_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getNum_heads() <em>Num heads</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNum_heads()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int NUM_HEADS_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getNum_heads() <em>Num heads</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNum_heads()
+	 * @generated
+	 * @ordered
+	 */
+	protected int num_heads = NUM_HEADS_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getDropout() <em>Dropout</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDropout()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double DROPOUT_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getDropout() <em>Dropout</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDropout()
+	 * @generated
+	 * @ordered
+	 */
+	protected double dropout = DROPOUT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isBias() <em>Bias</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isBias()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean BIAS_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isBias() <em>Bias</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isBias()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean bias = BIAS_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isAdd_bias_kv() <em>Add bias kv</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isAdd_bias_kv()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean ADD_BIAS_KV_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isAdd_bias_kv() <em>Add bias kv</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isAdd_bias_kv()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean add_bias_kv = ADD_BIAS_KV_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isAdd_zero_attn() <em>Add zero attn</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isAdd_zero_attn()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean ADD_ZERO_ATTN_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isAdd_zero_attn() <em>Add zero attn</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isAdd_zero_attn()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean add_zero_attn = ADD_ZERO_ATTN_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getKdim() <em>Kdim</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKdim()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int KDIM_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getKdim() <em>Kdim</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKdim()
+	 * @generated
+	 * @ordered
+	 */
+	protected int kdim = KDIM_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getVdim() <em>Vdim</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getVdim()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int VDIM_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getVdim() <em>Vdim</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getVdim()
+	 * @generated
+	 * @ordered
+	 */
+	protected int vdim = VDIM_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MultiheadAttentionImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NonLinearActivationsPackage.Literals.MULTIHEAD_ATTENTION;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getEmbed_dim() {
+		return embed_dim;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setEmbed_dim(int newEmbed_dim) {
+		int oldEmbed_dim = embed_dim;
+		embed_dim = newEmbed_dim;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, NonLinearActivationsPackage.MULTIHEAD_ATTENTION__EMBED_DIM, oldEmbed_dim, embed_dim));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getNum_heads() {
+		return num_heads;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setNum_heads(int newNum_heads) {
+		int oldNum_heads = num_heads;
+		num_heads = newNum_heads;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, NonLinearActivationsPackage.MULTIHEAD_ATTENTION__NUM_HEADS, oldNum_heads, num_heads));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getDropout() {
+		return dropout;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDropout(double newDropout) {
+		double oldDropout = dropout;
+		dropout = newDropout;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, NonLinearActivationsPackage.MULTIHEAD_ATTENTION__DROPOUT, oldDropout, dropout));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isBias() {
+		return bias;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBias(boolean newBias) {
+		boolean oldBias = bias;
+		bias = newBias;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, NonLinearActivationsPackage.MULTIHEAD_ATTENTION__BIAS, oldBias, bias));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isAdd_bias_kv() {
+		return add_bias_kv;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setAdd_bias_kv(boolean newAdd_bias_kv) {
+		boolean oldAdd_bias_kv = add_bias_kv;
+		add_bias_kv = newAdd_bias_kv;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, NonLinearActivationsPackage.MULTIHEAD_ATTENTION__ADD_BIAS_KV, oldAdd_bias_kv, add_bias_kv));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isAdd_zero_attn() {
+		return add_zero_attn;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setAdd_zero_attn(boolean newAdd_zero_attn) {
+		boolean oldAdd_zero_attn = add_zero_attn;
+		add_zero_attn = newAdd_zero_attn;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, NonLinearActivationsPackage.MULTIHEAD_ATTENTION__ADD_ZERO_ATTN, oldAdd_zero_attn, add_zero_attn));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getKdim() {
+		return kdim;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setKdim(int newKdim) {
+		int oldKdim = kdim;
+		kdim = newKdim;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, NonLinearActivationsPackage.MULTIHEAD_ATTENTION__KDIM, oldKdim, kdim));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getVdim() {
+		return vdim;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setVdim(int newVdim) {
+		int oldVdim = vdim;
+		vdim = newVdim;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, NonLinearActivationsPackage.MULTIHEAD_ATTENTION__VDIM, oldVdim, vdim));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION__EMBED_DIM:
+				return getEmbed_dim();
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION__NUM_HEADS:
+				return getNum_heads();
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION__DROPOUT:
+				return getDropout();
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION__BIAS:
+				return isBias();
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION__ADD_BIAS_KV:
+				return isAdd_bias_kv();
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION__ADD_ZERO_ATTN:
+				return isAdd_zero_attn();
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION__KDIM:
+				return getKdim();
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION__VDIM:
+				return getVdim();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION__EMBED_DIM:
+				setEmbed_dim((Integer)newValue);
+				return;
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION__NUM_HEADS:
+				setNum_heads((Integer)newValue);
+				return;
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION__DROPOUT:
+				setDropout((Double)newValue);
+				return;
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION__BIAS:
+				setBias((Boolean)newValue);
+				return;
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION__ADD_BIAS_KV:
+				setAdd_bias_kv((Boolean)newValue);
+				return;
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION__ADD_ZERO_ATTN:
+				setAdd_zero_attn((Boolean)newValue);
+				return;
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION__KDIM:
+				setKdim((Integer)newValue);
+				return;
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION__VDIM:
+				setVdim((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION__EMBED_DIM:
+				setEmbed_dim(EMBED_DIM_EDEFAULT);
+				return;
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION__NUM_HEADS:
+				setNum_heads(NUM_HEADS_EDEFAULT);
+				return;
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION__DROPOUT:
+				setDropout(DROPOUT_EDEFAULT);
+				return;
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION__BIAS:
+				setBias(BIAS_EDEFAULT);
+				return;
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION__ADD_BIAS_KV:
+				setAdd_bias_kv(ADD_BIAS_KV_EDEFAULT);
+				return;
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION__ADD_ZERO_ATTN:
+				setAdd_zero_attn(ADD_ZERO_ATTN_EDEFAULT);
+				return;
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION__KDIM:
+				setKdim(KDIM_EDEFAULT);
+				return;
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION__VDIM:
+				setVdim(VDIM_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION__EMBED_DIM:
+				return embed_dim != EMBED_DIM_EDEFAULT;
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION__NUM_HEADS:
+				return num_heads != NUM_HEADS_EDEFAULT;
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION__DROPOUT:
+				return dropout != DROPOUT_EDEFAULT;
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION__BIAS:
+				return bias != BIAS_EDEFAULT;
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION__ADD_BIAS_KV:
+				return add_bias_kv != ADD_BIAS_KV_EDEFAULT;
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION__ADD_ZERO_ATTN:
+				return add_zero_attn != ADD_ZERO_ATTN_EDEFAULT;
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION__KDIM:
+				return kdim != KDIM_EDEFAULT;
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION__VDIM:
+				return vdim != VDIM_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (embed_dim: "); //$NON-NLS-1$
+		result.append(embed_dim);
+		result.append(", num_heads: "); //$NON-NLS-1$
+		result.append(num_heads);
+		result.append(", dropout: "); //$NON-NLS-1$
+		result.append(dropout);
+		result.append(", bias: "); //$NON-NLS-1$
+		result.append(bias);
+		result.append(", add_bias_kv: "); //$NON-NLS-1$
+		result.append(add_bias_kv);
+		result.append(", add_zero_attn: "); //$NON-NLS-1$
+		result.append(add_zero_attn);
+		result.append(", kdim: "); //$NON-NLS-1$
+		result.append(kdim);
+		result.append(", vdim: "); //$NON-NLS-1$
+		result.append(vdim);
+		result.append(')');
+		return result.toString();
+	}
+
+} //MultiheadAttentionImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/NonLinearActivationsFactoryImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/NonLinearActivationsFactoryImpl.java
new file mode 100644
index 0000000..8ec0dd4
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/NonLinearActivationsFactoryImpl.java
@@ -0,0 +1,334 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NonLinearActivationsFactoryImpl extends EFactoryImpl implements NonLinearActivationsFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static NonLinearActivationsFactory init() {
+		try {
+			NonLinearActivationsFactory theNonLinearActivationsFactory = (NonLinearActivationsFactory)EPackage.Registry.INSTANCE.getEFactory(NonLinearActivationsPackage.eNS_URI);
+			if (theNonLinearActivationsFactory != null) {
+				return theNonLinearActivationsFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new NonLinearActivationsFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NonLinearActivationsFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case NonLinearActivationsPackage.ELU: return createELU();
+			case NonLinearActivationsPackage.LEAKY_RE_LU: return createLeakyReLU();
+			case NonLinearActivationsPackage.LOG_SIGMOID: return createLogSigmoid();
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION: return createMultiheadAttention();
+			case NonLinearActivationsPackage.PRE_LU: return createPReLU();
+			case NonLinearActivationsPackage.RE_LU: return createReLU();
+			case NonLinearActivationsPackage.RE_LU6: return createReLU6();
+			case NonLinearActivationsPackage.SELU: return createSELU();
+			case NonLinearActivationsPackage.RRE_LU: return createRReLU();
+			case NonLinearActivationsPackage.CELU: return createCELU();
+			case NonLinearActivationsPackage.GELU: return createGELU();
+			case NonLinearActivationsPackage.SIGMOID: return createSigmoid();
+			case NonLinearActivationsPackage.SOFTPLUS: return createSoftplus();
+			case NonLinearActivationsPackage.SOFTSHRINK: return createSoftshrink();
+			case NonLinearActivationsPackage.HARDSHRINK: return createHardshrink();
+			case NonLinearActivationsPackage.SOFTSIGN: return createSoftsign();
+			case NonLinearActivationsPackage.TANHSHRINK: return createTanhshrink();
+			case NonLinearActivationsPackage.TANH: return createTanh();
+			case NonLinearActivationsPackage.THRESHOLD: return createThreshold();
+			case NonLinearActivationsPackage.HARDTANH: return createHardtanh();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ELU createELU() {
+		ELUImpl elu = new ELUImpl();
+		return elu;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public LeakyReLU createLeakyReLU() {
+		LeakyReLUImpl leakyReLU = new LeakyReLUImpl();
+		return leakyReLU;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public LogSigmoid createLogSigmoid() {
+		LogSigmoidImpl logSigmoid = new LogSigmoidImpl();
+		return logSigmoid;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public MultiheadAttention createMultiheadAttention() {
+		MultiheadAttentionImpl multiheadAttention = new MultiheadAttentionImpl();
+		return multiheadAttention;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public PReLU createPReLU() {
+		PReLUImpl pReLU = new PReLUImpl();
+		return pReLU;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ReLU createReLU() {
+		ReLUImpl reLU = new ReLUImpl();
+		return reLU;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ReLU6 createReLU6() {
+		ReLU6Impl reLU6 = new ReLU6Impl();
+		return reLU6;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public SELU createSELU() {
+		SELUImpl selu = new SELUImpl();
+		return selu;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public RReLU createRReLU() {
+		RReLUImpl rReLU = new RReLUImpl();
+		return rReLU;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public CELU createCELU() {
+		CELUImpl celu = new CELUImpl();
+		return celu;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public GELU createGELU() {
+		GELUImpl gelu = new GELUImpl();
+		return gelu;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Sigmoid createSigmoid() {
+		SigmoidImpl sigmoid = new SigmoidImpl();
+		return sigmoid;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Softplus createSoftplus() {
+		SoftplusImpl softplus = new SoftplusImpl();
+		return softplus;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Softshrink createSoftshrink() {
+		SoftshrinkImpl softshrink = new SoftshrinkImpl();
+		return softshrink;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Hardshrink createHardshrink() {
+		HardshrinkImpl hardshrink = new HardshrinkImpl();
+		return hardshrink;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Softsign createSoftsign() {
+		SoftsignImpl softsign = new SoftsignImpl();
+		return softsign;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Tanhshrink createTanhshrink() {
+		TanhshrinkImpl tanhshrink = new TanhshrinkImpl();
+		return tanhshrink;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Tanh createTanh() {
+		TanhImpl tanh = new TanhImpl();
+		return tanh;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Threshold createThreshold() {
+		ThresholdImpl threshold = new ThresholdImpl();
+		return threshold;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Hardtanh createHardtanh() {
+		HardtanhImpl hardtanh = new HardtanhImpl();
+		return hardtanh;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NonLinearActivationsPackage getNonLinearActivationsPackage() {
+		return (NonLinearActivationsPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static NonLinearActivationsPackage getPackage() {
+		return NonLinearActivationsPackage.eINSTANCE;
+	}
+
+} //NonLinearActivationsFactoryImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/NonLinearActivationsPackageImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/NonLinearActivationsPackageImpl.java
new file mode 100644
index 0000000..22492e9
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/NonLinearActivationsPackageImpl.java
@@ -0,0 +1,1169 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.AIMLPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.Layer_weight_regularizersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModulePackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Hardshrink;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Hardtanh;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.LeakyReLU;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.LogSigmoid;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsFactory;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Nonlinear_activations_weightedsumnonlinearity;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Nonlinear_activations_weightedsumnonlinearity_1;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.PReLU;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.RReLU;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.ReLU;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.ReLU6;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Sigmoid;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Softplus;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Softshrink;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Softsign;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Tanh;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Tanhshrink;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Threshold;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.shrink;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.DatatypesPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl.DatatypesPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.impl.AIMLPackageImpl;
+
+import org.eclipse.uml2.types.TypesPackage;
+
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class NonLinearActivationsPackageImpl extends EPackageImpl implements NonLinearActivationsPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass nonlinear_activations_weightedsumnonlinearityEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass eluEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass nonlinear_activations_weightedsumnonlinearity_1EClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass shrinkEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass leakyReLUEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass logSigmoidEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass multiheadAttentionEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass pReLUEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass reLUEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass reLU6EClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass seluEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass rReLUEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass celuEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass geluEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass sigmoidEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass softplusEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass softshrinkEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass hardshrinkEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass softsignEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass tanhshrinkEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass tanhEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass thresholdEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass hardtanhEClass = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private NonLinearActivationsPackageImpl() {
+		super(eNS_URI, NonLinearActivationsFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>This method is used to initialize {@link NonLinearActivationsPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static NonLinearActivationsPackage init() {
+		if (isInited) return (NonLinearActivationsPackage)EPackage.Registry.INSTANCE.getEPackage(NonLinearActivationsPackage.eNS_URI);
+
+		// Obtain or create and register package
+		Object registeredNonLinearActivationsPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		NonLinearActivationsPackageImpl theNonLinearActivationsPackage = registeredNonLinearActivationsPackage instanceof NonLinearActivationsPackageImpl ? (NonLinearActivationsPackageImpl)registeredNonLinearActivationsPackage : new NonLinearActivationsPackageImpl();
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		EcorePackage.eINSTANCE.eClass();
+		TypesPackage.eINSTANCE.eClass();
+		UMLPackage.eINSTANCE.eClass();
+
+		// Obtain or create and register interdependencies
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AIMLPackage.eNS_URI);
+		AIMLPackageImpl theAIMLPackage = (AIMLPackageImpl)(registeredPackage instanceof AIMLPackageImpl ? registeredPackage : AIMLPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		ModulePackageImpl theModulePackage = (ModulePackageImpl)(registeredPackage instanceof ModulePackageImpl ? registeredPackage : ModulePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(TensorPackage.eNS_URI);
+		TensorPackageImpl theTensorPackage = (TensorPackageImpl)(registeredPackage instanceof TensorPackageImpl ? registeredPackage : TensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DatatypesPackage.eNS_URI);
+		DatatypesPackageImpl theDatatypesPackage = (DatatypesPackageImpl)(registeredPackage instanceof DatatypesPackageImpl ? registeredPackage : DatatypesPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Pooling_layersPackage.eNS_URI);
+		Pooling_layersPackageImpl thePooling_layersPackage = (Pooling_layersPackageImpl)(registeredPackage instanceof Pooling_layersPackageImpl ? registeredPackage : Pooling_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Convolution_layersPackage.eNS_URI);
+		Convolution_layersPackageImpl theConvolution_layersPackage = (Convolution_layersPackageImpl)(registeredPackage instanceof Convolution_layersPackageImpl ? registeredPackage : Convolution_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_constraintsPackage.eNS_URI);
+		Layer_weight_constraintsPackageImpl theLayer_weight_constraintsPackage = (Layer_weight_constraintsPackageImpl)(registeredPackage instanceof Layer_weight_constraintsPackageImpl ? registeredPackage : Layer_weight_constraintsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Padding_layersPackage.eNS_URI);
+		Padding_layersPackageImpl thePadding_layersPackage = (Padding_layersPackageImpl)(registeredPackage instanceof Padding_layersPackageImpl ? registeredPackage : Padding_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftMinMaxActivationsPackage.eNS_URI);
+		SoftMinMaxActivationsPackageImpl theSoftMinMaxActivationsPackage = (SoftMinMaxActivationsPackageImpl)(registeredPackage instanceof SoftMinMaxActivationsPackageImpl ? registeredPackage : SoftMinMaxActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Normalization_layersPackage.eNS_URI);
+		Normalization_layersPackageImpl theNormalization_layersPackage = (Normalization_layersPackageImpl)(registeredPackage instanceof Normalization_layersPackageImpl ? registeredPackage : Normalization_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Recurrent_layersPackage.eNS_URI);
+		Recurrent_layersPackageImpl theRecurrent_layersPackage = (Recurrent_layersPackageImpl)(registeredPackage instanceof Recurrent_layersPackageImpl ? registeredPackage : Recurrent_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Transformer_layersPackage.eNS_URI);
+		Transformer_layersPackageImpl theTransformer_layersPackage = (Transformer_layersPackageImpl)(registeredPackage instanceof Transformer_layersPackageImpl ? registeredPackage : Transformer_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Linear_layersPackage.eNS_URI);
+		Linear_layersPackageImpl theLinear_layersPackage = (Linear_layersPackageImpl)(registeredPackage instanceof Linear_layersPackageImpl ? registeredPackage : Linear_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Dropout_layersPackage.eNS_URI);
+		Dropout_layersPackageImpl theDropout_layersPackage = (Dropout_layersPackageImpl)(registeredPackage instanceof Dropout_layersPackageImpl ? registeredPackage : Dropout_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Sparse_layersPackage.eNS_URI);
+		Sparse_layersPackageImpl theSparse_layersPackage = (Sparse_layersPackageImpl)(registeredPackage instanceof Sparse_layersPackageImpl ? registeredPackage : Sparse_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Distance_functionsPackage.eNS_URI);
+		Distance_functionsPackageImpl theDistance_functionsPackage = (Distance_functionsPackageImpl)(registeredPackage instanceof Distance_functionsPackageImpl ? registeredPackage : Distance_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Loss_functionsPackage.eNS_URI);
+		Loss_functionsPackageImpl theLoss_functionsPackage = (Loss_functionsPackageImpl)(registeredPackage instanceof Loss_functionsPackageImpl ? registeredPackage : Loss_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Vision_layersPackage.eNS_URI);
+		Vision_layersPackageImpl theVision_layersPackage = (Vision_layersPackageImpl)(registeredPackage instanceof Vision_layersPackageImpl ? registeredPackage : Vision_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DataParallel_layersPackage.eNS_URI);
+		DataParallel_layersPackageImpl theDataParallel_layersPackage = (DataParallel_layersPackageImpl)(registeredPackage instanceof DataParallel_layersPackageImpl ? registeredPackage : DataParallel_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_regularizersPackage.eNS_URI);
+		Layer_weight_regularizersPackageImpl theLayer_weight_regularizersPackage = (Layer_weight_regularizersPackageImpl)(registeredPackage instanceof Layer_weight_regularizersPackageImpl ? registeredPackage : Layer_weight_regularizersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_initializersPackage.eNS_URI);
+		Layer_weight_initializersPackageImpl theLayer_weight_initializersPackage = (Layer_weight_initializersPackageImpl)(registeredPackage instanceof Layer_weight_initializersPackageImpl ? registeredPackage : Layer_weight_initializersPackage.eINSTANCE);
+
+		// Create package meta-data objects
+		theNonLinearActivationsPackage.createPackageContents();
+		theAIMLPackage.createPackageContents();
+		theModulePackage.createPackageContents();
+		theTensorPackage.createPackageContents();
+		theDatatypesPackage.createPackageContents();
+		thePooling_layersPackage.createPackageContents();
+		theConvolution_layersPackage.createPackageContents();
+		theLayer_weight_constraintsPackage.createPackageContents();
+		thePadding_layersPackage.createPackageContents();
+		theSoftMinMaxActivationsPackage.createPackageContents();
+		theNormalization_layersPackage.createPackageContents();
+		theRecurrent_layersPackage.createPackageContents();
+		theTransformer_layersPackage.createPackageContents();
+		theLinear_layersPackage.createPackageContents();
+		theDropout_layersPackage.createPackageContents();
+		theSparse_layersPackage.createPackageContents();
+		theDistance_functionsPackage.createPackageContents();
+		theLoss_functionsPackage.createPackageContents();
+		theVision_layersPackage.createPackageContents();
+		theDataParallel_layersPackage.createPackageContents();
+		theLayer_weight_regularizersPackage.createPackageContents();
+		theLayer_weight_initializersPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theNonLinearActivationsPackage.initializePackageContents();
+		theAIMLPackage.initializePackageContents();
+		theModulePackage.initializePackageContents();
+		theTensorPackage.initializePackageContents();
+		theDatatypesPackage.initializePackageContents();
+		thePooling_layersPackage.initializePackageContents();
+		theConvolution_layersPackage.initializePackageContents();
+		theLayer_weight_constraintsPackage.initializePackageContents();
+		thePadding_layersPackage.initializePackageContents();
+		theSoftMinMaxActivationsPackage.initializePackageContents();
+		theNormalization_layersPackage.initializePackageContents();
+		theRecurrent_layersPackage.initializePackageContents();
+		theTransformer_layersPackage.initializePackageContents();
+		theLinear_layersPackage.initializePackageContents();
+		theDropout_layersPackage.initializePackageContents();
+		theSparse_layersPackage.initializePackageContents();
+		theDistance_functionsPackage.initializePackageContents();
+		theLoss_functionsPackage.initializePackageContents();
+		theVision_layersPackage.initializePackageContents();
+		theDataParallel_layersPackage.initializePackageContents();
+		theLayer_weight_regularizersPackage.initializePackageContents();
+		theLayer_weight_initializersPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theNonLinearActivationsPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(NonLinearActivationsPackage.eNS_URI, theNonLinearActivationsPackage);
+		return theNonLinearActivationsPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getNonlinear_activations_weightedsumnonlinearity() {
+		return nonlinear_activations_weightedsumnonlinearityEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getELU() {
+		return eluEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getELU_Alpha() {
+		return (EAttribute)eluEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getNonlinear_activations_weightedsumnonlinearity_1() {
+		return nonlinear_activations_weightedsumnonlinearity_1EClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getNonlinear_activations_weightedsumnonlinearity_1_Inplace() {
+		return (EAttribute)nonlinear_activations_weightedsumnonlinearity_1EClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getshrink() {
+		return shrinkEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getshrink_Lambd() {
+		return (EAttribute)shrinkEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getLeakyReLU() {
+		return leakyReLUEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLeakyReLU_Negative_slope() {
+		return (EAttribute)leakyReLUEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getLogSigmoid() {
+		return logSigmoidEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getMultiheadAttention() {
+		return multiheadAttentionEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getMultiheadAttention_Embed_dim() {
+		return (EAttribute)multiheadAttentionEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getMultiheadAttention_Num_heads() {
+		return (EAttribute)multiheadAttentionEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getMultiheadAttention_Dropout() {
+		return (EAttribute)multiheadAttentionEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getMultiheadAttention_Bias() {
+		return (EAttribute)multiheadAttentionEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getMultiheadAttention_Add_bias_kv() {
+		return (EAttribute)multiheadAttentionEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getMultiheadAttention_Add_zero_attn() {
+		return (EAttribute)multiheadAttentionEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getMultiheadAttention_Kdim() {
+		return (EAttribute)multiheadAttentionEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getMultiheadAttention_Vdim() {
+		return (EAttribute)multiheadAttentionEClass.getEStructuralFeatures().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getPReLU() {
+		return pReLUEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPReLU_Num_parameters() {
+		return (EAttribute)pReLUEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPReLU_Init() {
+		return (EAttribute)pReLUEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getReLU() {
+		return reLUEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getReLU6() {
+		return reLU6EClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getSELU() {
+		return seluEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getRReLU() {
+		return rReLUEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getRReLU_Lower() {
+		return (EAttribute)rReLUEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getRReLU_Upper() {
+		return (EAttribute)rReLUEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getCELU() {
+		return celuEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getCELU_Alpha() {
+		return (EAttribute)celuEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getGELU() {
+		return geluEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getSigmoid() {
+		return sigmoidEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getSoftplus() {
+		return softplusEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getSoftplus_Beta() {
+		return (EAttribute)softplusEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getSoftplus_Threshold() {
+		return (EAttribute)softplusEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getSoftshrink() {
+		return softshrinkEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getHardshrink() {
+		return hardshrinkEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getSoftsign() {
+		return softsignEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getTanhshrink() {
+		return tanhshrinkEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getTanh() {
+		return tanhEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getThreshold() {
+		return thresholdEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getThreshold_Threshold() {
+		return (EAttribute)thresholdEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getThreshold_Value() {
+		return (EAttribute)thresholdEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getHardtanh() {
+		return hardtanhEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getHardtanh_Min_val() {
+		return (EAttribute)hardtanhEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getHardtanh_Max_val() {
+		return (EAttribute)hardtanhEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public NonLinearActivationsFactory getNonLinearActivationsFactory() {
+		return (NonLinearActivationsFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		nonlinear_activations_weightedsumnonlinearityEClass = createEClass(NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY);
+
+		eluEClass = createEClass(ELU);
+		createEAttribute(eluEClass, ELU__ALPHA);
+
+		nonlinear_activations_weightedsumnonlinearity_1EClass = createEClass(NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1);
+		createEAttribute(nonlinear_activations_weightedsumnonlinearity_1EClass, NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__INPLACE);
+
+		shrinkEClass = createEClass(SHRINK);
+		createEAttribute(shrinkEClass, SHRINK__LAMBD);
+
+		leakyReLUEClass = createEClass(LEAKY_RE_LU);
+		createEAttribute(leakyReLUEClass, LEAKY_RE_LU__NEGATIVE_SLOPE);
+
+		logSigmoidEClass = createEClass(LOG_SIGMOID);
+
+		multiheadAttentionEClass = createEClass(MULTIHEAD_ATTENTION);
+		createEAttribute(multiheadAttentionEClass, MULTIHEAD_ATTENTION__EMBED_DIM);
+		createEAttribute(multiheadAttentionEClass, MULTIHEAD_ATTENTION__NUM_HEADS);
+		createEAttribute(multiheadAttentionEClass, MULTIHEAD_ATTENTION__DROPOUT);
+		createEAttribute(multiheadAttentionEClass, MULTIHEAD_ATTENTION__BIAS);
+		createEAttribute(multiheadAttentionEClass, MULTIHEAD_ATTENTION__ADD_BIAS_KV);
+		createEAttribute(multiheadAttentionEClass, MULTIHEAD_ATTENTION__ADD_ZERO_ATTN);
+		createEAttribute(multiheadAttentionEClass, MULTIHEAD_ATTENTION__KDIM);
+		createEAttribute(multiheadAttentionEClass, MULTIHEAD_ATTENTION__VDIM);
+
+		pReLUEClass = createEClass(PRE_LU);
+		createEAttribute(pReLUEClass, PRE_LU__NUM_PARAMETERS);
+		createEAttribute(pReLUEClass, PRE_LU__INIT);
+
+		reLUEClass = createEClass(RE_LU);
+
+		reLU6EClass = createEClass(RE_LU6);
+
+		seluEClass = createEClass(SELU);
+
+		rReLUEClass = createEClass(RRE_LU);
+		createEAttribute(rReLUEClass, RRE_LU__LOWER);
+		createEAttribute(rReLUEClass, RRE_LU__UPPER);
+
+		celuEClass = createEClass(CELU);
+		createEAttribute(celuEClass, CELU__ALPHA);
+
+		geluEClass = createEClass(GELU);
+
+		sigmoidEClass = createEClass(SIGMOID);
+
+		softplusEClass = createEClass(SOFTPLUS);
+		createEAttribute(softplusEClass, SOFTPLUS__BETA);
+		createEAttribute(softplusEClass, SOFTPLUS__THRESHOLD);
+
+		softshrinkEClass = createEClass(SOFTSHRINK);
+
+		hardshrinkEClass = createEClass(HARDSHRINK);
+
+		softsignEClass = createEClass(SOFTSIGN);
+
+		tanhshrinkEClass = createEClass(TANHSHRINK);
+
+		tanhEClass = createEClass(TANH);
+
+		thresholdEClass = createEClass(THRESHOLD);
+		createEAttribute(thresholdEClass, THRESHOLD__THRESHOLD);
+		createEAttribute(thresholdEClass, THRESHOLD__VALUE);
+
+		hardtanhEClass = createEClass(HARDTANH);
+		createEAttribute(hardtanhEClass, HARDTANH__MIN_VAL);
+		createEAttribute(hardtanhEClass, HARDTANH__MAX_VAL);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		ModulePackage theModulePackage = (ModulePackage)EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		nonlinear_activations_weightedsumnonlinearityEClass.getESuperTypes().add(theModulePackage.getModel());
+		eluEClass.getESuperTypes().add(this.getNonlinear_activations_weightedsumnonlinearity_1());
+		nonlinear_activations_weightedsumnonlinearity_1EClass.getESuperTypes().add(this.getNonlinear_activations_weightedsumnonlinearity());
+		shrinkEClass.getESuperTypes().add(this.getNonlinear_activations_weightedsumnonlinearity());
+		leakyReLUEClass.getESuperTypes().add(this.getNonlinear_activations_weightedsumnonlinearity_1());
+		logSigmoidEClass.getESuperTypes().add(this.getNonlinear_activations_weightedsumnonlinearity());
+		multiheadAttentionEClass.getESuperTypes().add(this.getNonlinear_activations_weightedsumnonlinearity());
+		pReLUEClass.getESuperTypes().add(this.getNonlinear_activations_weightedsumnonlinearity());
+		reLUEClass.getESuperTypes().add(this.getNonlinear_activations_weightedsumnonlinearity_1());
+		reLU6EClass.getESuperTypes().add(this.getNonlinear_activations_weightedsumnonlinearity_1());
+		seluEClass.getESuperTypes().add(this.getNonlinear_activations_weightedsumnonlinearity_1());
+		rReLUEClass.getESuperTypes().add(this.getNonlinear_activations_weightedsumnonlinearity_1());
+		celuEClass.getESuperTypes().add(this.getNonlinear_activations_weightedsumnonlinearity_1());
+		geluEClass.getESuperTypes().add(this.getNonlinear_activations_weightedsumnonlinearity());
+		sigmoidEClass.getESuperTypes().add(this.getNonlinear_activations_weightedsumnonlinearity());
+		softplusEClass.getESuperTypes().add(this.getNonlinear_activations_weightedsumnonlinearity());
+		softshrinkEClass.getESuperTypes().add(this.getshrink());
+		hardshrinkEClass.getESuperTypes().add(this.getshrink());
+		softsignEClass.getESuperTypes().add(this.getNonlinear_activations_weightedsumnonlinearity());
+		tanhshrinkEClass.getESuperTypes().add(this.getNonlinear_activations_weightedsumnonlinearity());
+		tanhEClass.getESuperTypes().add(this.getNonlinear_activations_weightedsumnonlinearity());
+		thresholdEClass.getESuperTypes().add(this.getNonlinear_activations_weightedsumnonlinearity_1());
+		hardtanhEClass.getESuperTypes().add(this.getNonlinear_activations_weightedsumnonlinearity_1());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(nonlinear_activations_weightedsumnonlinearityEClass, Nonlinear_activations_weightedsumnonlinearity.class, "Nonlinear_activations_weightedsumnonlinearity", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(eluEClass, org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.ELU.class, "ELU", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getELU_Alpha(), theTypesPackage.getReal(), "alpha", null, 0, 1, org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.ELU.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(nonlinear_activations_weightedsumnonlinearity_1EClass, Nonlinear_activations_weightedsumnonlinearity_1.class, "Nonlinear_activations_weightedsumnonlinearity_1", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getNonlinear_activations_weightedsumnonlinearity_1_Inplace(), theTypesPackage.getBoolean(), "inplace", null, 0, 1, Nonlinear_activations_weightedsumnonlinearity_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(shrinkEClass, shrink.class, "shrink", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getshrink_Lambd(), theTypesPackage.getReal(), "lambd", null, 0, 1, shrink.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(leakyReLUEClass, LeakyReLU.class, "LeakyReLU", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getLeakyReLU_Negative_slope(), theTypesPackage.getReal(), "negative_slope", null, 0, 1, LeakyReLU.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(logSigmoidEClass, LogSigmoid.class, "LogSigmoid", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(multiheadAttentionEClass, MultiheadAttention.class, "MultiheadAttention", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getMultiheadAttention_Embed_dim(), theTypesPackage.getInteger(), "embed_dim", null, 1, 1, MultiheadAttention.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getMultiheadAttention_Num_heads(), theTypesPackage.getInteger(), "num_heads", null, 1, 1, MultiheadAttention.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getMultiheadAttention_Dropout(), theTypesPackage.getReal(), "dropout", null, 0, 1, MultiheadAttention.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getMultiheadAttention_Bias(), theTypesPackage.getBoolean(), "bias", null, 0, 1, MultiheadAttention.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getMultiheadAttention_Add_bias_kv(), theTypesPackage.getBoolean(), "add_bias_kv", null, 0, 1, MultiheadAttention.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getMultiheadAttention_Add_zero_attn(), theTypesPackage.getBoolean(), "add_zero_attn", null, 0, 1, MultiheadAttention.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getMultiheadAttention_Kdim(), theTypesPackage.getInteger(), "kdim", null, 0, 1, MultiheadAttention.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getMultiheadAttention_Vdim(), theTypesPackage.getInteger(), "vdim", null, 0, 1, MultiheadAttention.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(pReLUEClass, PReLU.class, "PReLU", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getPReLU_Num_parameters(), theTypesPackage.getInteger(), "num_parameters", null, 0, 1, PReLU.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getPReLU_Init(), theTypesPackage.getReal(), "init", null, 0, 1, PReLU.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(reLUEClass, ReLU.class, "ReLU", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(reLU6EClass, ReLU6.class, "ReLU6", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(seluEClass, org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.SELU.class, "SELU", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(rReLUEClass, RReLU.class, "RReLU", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getRReLU_Lower(), theTypesPackage.getReal(), "lower", null, 0, 1, RReLU.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getRReLU_Upper(), theTypesPackage.getReal(), "upper", null, 0, 1, RReLU.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(celuEClass, org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.CELU.class, "CELU", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getCELU_Alpha(), theTypesPackage.getReal(), "alpha", null, 0, 1, org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.CELU.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(geluEClass, org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.GELU.class, "GELU", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(sigmoidEClass, Sigmoid.class, "Sigmoid", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(softplusEClass, Softplus.class, "Softplus", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getSoftplus_Beta(), theTypesPackage.getReal(), "beta", null, 0, 1, Softplus.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getSoftplus_Threshold(), theTypesPackage.getReal(), "threshold", null, 0, 1, Softplus.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(softshrinkEClass, Softshrink.class, "Softshrink", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(hardshrinkEClass, Hardshrink.class, "Hardshrink", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(softsignEClass, Softsign.class, "Softsign", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(tanhshrinkEClass, Tanhshrink.class, "Tanhshrink", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(tanhEClass, Tanh.class, "Tanh", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(thresholdEClass, Threshold.class, "Threshold", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getThreshold_Threshold(), theTypesPackage.getReal(), "threshold", null, 1, 1, Threshold.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getThreshold_Value(), theTypesPackage.getInteger(), "value", null, 1, 1, Threshold.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(hardtanhEClass, Hardtanh.class, "Hardtanh", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getHardtanh_Min_val(), theTypesPackage.getReal(), "min_val", null, 0, 1, Hardtanh.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getHardtanh_Max_val(), theTypesPackage.getReal(), "max_val", null, 0, 1, Hardtanh.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		// Create annotations
+		// http://www.eclipse.org/uml2/2.0.0/UML
+		createUMLAnnotations();
+	}
+
+	/**
+	 * Initializes the annotations for <b>http://www.eclipse.org/uml2/2.0.0/UML</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createUMLAnnotations() {
+		String source = "http://www.eclipse.org/uml2/2.0.0/UML"; //$NON-NLS-1$
+		addAnnotation
+		  (nonlinear_activations_weightedsumnonlinearityEClass,
+		   source,
+		   new String[] {
+			   "originalName", "Non-linear_activations_(weighted sum, nonlinearity)" //$NON-NLS-1$ //$NON-NLS-2$
+		   });
+		addAnnotation
+		  (nonlinear_activations_weightedsumnonlinearity_1EClass,
+		   source,
+		   new String[] {
+			   "originalName", "Non-linear_activations_(weighted sum, nonlinearity)_1" //$NON-NLS-1$ //$NON-NLS-2$
+		   });
+		addAnnotation
+		  (getMultiheadAttention_Add_bias_kv(),
+		   source,
+		   new String[] {
+			   "originalName", "add_bias_kv " //$NON-NLS-1$ //$NON-NLS-2$
+		   });
+	}
+
+} //NonLinearActivationsPackageImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/Nonlinear_activations_weightedsumnonlinearityImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/Nonlinear_activations_weightedsumnonlinearityImpl.java
new file mode 100644
index 0000000..a91f1a4
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/Nonlinear_activations_weightedsumnonlinearityImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModelImpl;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Nonlinear_activations_weightedsumnonlinearity;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Nonlinear activations weightedsumnonlinearity</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public abstract class Nonlinear_activations_weightedsumnonlinearityImpl extends ModelImpl implements Nonlinear_activations_weightedsumnonlinearity {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Nonlinear_activations_weightedsumnonlinearityImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NonLinearActivationsPackage.Literals.NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY;
+	}
+
+} //Nonlinear_activations_weightedsumnonlinearityImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/Nonlinear_activations_weightedsumnonlinearity_1Impl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/Nonlinear_activations_weightedsumnonlinearity_1Impl.java
new file mode 100644
index 0000000..37287d8
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/Nonlinear_activations_weightedsumnonlinearity_1Impl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Nonlinear_activations_weightedsumnonlinearity_1;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Nonlinear activations weightedsumnonlinearity 1</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.Nonlinear_activations_weightedsumnonlinearity_1Impl#isInplace <em>Inplace</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class Nonlinear_activations_weightedsumnonlinearity_1Impl extends Nonlinear_activations_weightedsumnonlinearityImpl implements Nonlinear_activations_weightedsumnonlinearity_1 {
+	/**
+	 * The default value of the '{@link #isInplace() <em>Inplace</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isInplace()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean INPLACE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isInplace() <em>Inplace</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isInplace()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean inplace = INPLACE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Nonlinear_activations_weightedsumnonlinearity_1Impl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NonLinearActivationsPackage.Literals.NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isInplace() {
+		return inplace;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setInplace(boolean newInplace) {
+		boolean oldInplace = inplace;
+		inplace = newInplace;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, NonLinearActivationsPackage.NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__INPLACE, oldInplace, inplace));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__INPLACE:
+				return isInplace();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__INPLACE:
+				setInplace((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__INPLACE:
+				setInplace(INPLACE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1__INPLACE:
+				return inplace != INPLACE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (inplace: "); //$NON-NLS-1$
+		result.append(inplace);
+		result.append(')');
+		return result.toString();
+	}
+
+} //Nonlinear_activations_weightedsumnonlinearity_1Impl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/PReLUImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/PReLUImpl.java
new file mode 100644
index 0000000..896f38c
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/PReLUImpl.java
@@ -0,0 +1,229 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.PReLU;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>PRe LU</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.PReLUImpl#getNum_parameters <em>Num parameters</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.PReLUImpl#getInit <em>Init</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class PReLUImpl extends Nonlinear_activations_weightedsumnonlinearityImpl implements PReLU {
+	/**
+	 * The default value of the '{@link #getNum_parameters() <em>Num parameters</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNum_parameters()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int NUM_PARAMETERS_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getNum_parameters() <em>Num parameters</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNum_parameters()
+	 * @generated
+	 * @ordered
+	 */
+	protected int num_parameters = NUM_PARAMETERS_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getInit() <em>Init</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInit()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double INIT_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getInit() <em>Init</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInit()
+	 * @generated
+	 * @ordered
+	 */
+	protected double init = INIT_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PReLUImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NonLinearActivationsPackage.Literals.PRE_LU;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getNum_parameters() {
+		return num_parameters;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setNum_parameters(int newNum_parameters) {
+		int oldNum_parameters = num_parameters;
+		num_parameters = newNum_parameters;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, NonLinearActivationsPackage.PRE_LU__NUM_PARAMETERS, oldNum_parameters, num_parameters));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getInit() {
+		return init;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setInit(double newInit) {
+		double oldInit = init;
+		init = newInit;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, NonLinearActivationsPackage.PRE_LU__INIT, oldInit, init));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.PRE_LU__NUM_PARAMETERS:
+				return getNum_parameters();
+			case NonLinearActivationsPackage.PRE_LU__INIT:
+				return getInit();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.PRE_LU__NUM_PARAMETERS:
+				setNum_parameters((Integer)newValue);
+				return;
+			case NonLinearActivationsPackage.PRE_LU__INIT:
+				setInit((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.PRE_LU__NUM_PARAMETERS:
+				setNum_parameters(NUM_PARAMETERS_EDEFAULT);
+				return;
+			case NonLinearActivationsPackage.PRE_LU__INIT:
+				setInit(INIT_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.PRE_LU__NUM_PARAMETERS:
+				return num_parameters != NUM_PARAMETERS_EDEFAULT;
+			case NonLinearActivationsPackage.PRE_LU__INIT:
+				return init != INIT_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (num_parameters: "); //$NON-NLS-1$
+		result.append(num_parameters);
+		result.append(", init: "); //$NON-NLS-1$
+		result.append(init);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PReLUImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/RReLUImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/RReLUImpl.java
new file mode 100644
index 0000000..63ba57c
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/RReLUImpl.java
@@ -0,0 +1,229 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.RReLU;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>RRe LU</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.RReLUImpl#getLower <em>Lower</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.RReLUImpl#getUpper <em>Upper</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class RReLUImpl extends Nonlinear_activations_weightedsumnonlinearity_1Impl implements RReLU {
+	/**
+	 * The default value of the '{@link #getLower() <em>Lower</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLower()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double LOWER_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getLower() <em>Lower</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLower()
+	 * @generated
+	 * @ordered
+	 */
+	protected double lower = LOWER_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getUpper() <em>Upper</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUpper()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double UPPER_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getUpper() <em>Upper</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUpper()
+	 * @generated
+	 * @ordered
+	 */
+	protected double upper = UPPER_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected RReLUImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NonLinearActivationsPackage.Literals.RRE_LU;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getLower() {
+		return lower;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setLower(double newLower) {
+		double oldLower = lower;
+		lower = newLower;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, NonLinearActivationsPackage.RRE_LU__LOWER, oldLower, lower));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getUpper() {
+		return upper;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setUpper(double newUpper) {
+		double oldUpper = upper;
+		upper = newUpper;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, NonLinearActivationsPackage.RRE_LU__UPPER, oldUpper, upper));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.RRE_LU__LOWER:
+				return getLower();
+			case NonLinearActivationsPackage.RRE_LU__UPPER:
+				return getUpper();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.RRE_LU__LOWER:
+				setLower((Double)newValue);
+				return;
+			case NonLinearActivationsPackage.RRE_LU__UPPER:
+				setUpper((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.RRE_LU__LOWER:
+				setLower(LOWER_EDEFAULT);
+				return;
+			case NonLinearActivationsPackage.RRE_LU__UPPER:
+				setUpper(UPPER_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.RRE_LU__LOWER:
+				return lower != LOWER_EDEFAULT;
+			case NonLinearActivationsPackage.RRE_LU__UPPER:
+				return upper != UPPER_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (lower: "); //$NON-NLS-1$
+		result.append(lower);
+		result.append(", upper: "); //$NON-NLS-1$
+		result.append(upper);
+		result.append(')');
+		return result.toString();
+	}
+
+} //RReLUImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/ReLU6Impl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/ReLU6Impl.java
new file mode 100644
index 0000000..e726dcb
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/ReLU6Impl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.ReLU6;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Re LU6</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ReLU6Impl extends Nonlinear_activations_weightedsumnonlinearity_1Impl implements ReLU6 {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ReLU6Impl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NonLinearActivationsPackage.Literals.RE_LU6;
+	}
+
+} //ReLU6Impl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/ReLUImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/ReLUImpl.java
new file mode 100644
index 0000000..05c83c4
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/ReLUImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.ReLU;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Re LU</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ReLUImpl extends Nonlinear_activations_weightedsumnonlinearity_1Impl implements ReLU {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ReLUImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NonLinearActivationsPackage.Literals.RE_LU;
+	}
+
+} //ReLUImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/SELUImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/SELUImpl.java
new file mode 100644
index 0000000..28c0f46
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/SELUImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.SELU;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>SELU</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class SELUImpl extends Nonlinear_activations_weightedsumnonlinearity_1Impl implements SELU {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SELUImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NonLinearActivationsPackage.Literals.SELU;
+	}
+
+} //SELUImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/SigmoidImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/SigmoidImpl.java
new file mode 100644
index 0000000..deaba4a
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/SigmoidImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Sigmoid;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Sigmoid</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class SigmoidImpl extends Nonlinear_activations_weightedsumnonlinearityImpl implements Sigmoid {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SigmoidImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NonLinearActivationsPackage.Literals.SIGMOID;
+	}
+
+} //SigmoidImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/SoftplusImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/SoftplusImpl.java
new file mode 100644
index 0000000..ffa49b7
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/SoftplusImpl.java
@@ -0,0 +1,229 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Softplus;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Softplus</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.SoftplusImpl#getBeta <em>Beta</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.SoftplusImpl#getThreshold <em>Threshold</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class SoftplusImpl extends Nonlinear_activations_weightedsumnonlinearityImpl implements Softplus {
+	/**
+	 * The default value of the '{@link #getBeta() <em>Beta</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBeta()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double BETA_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getBeta() <em>Beta</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBeta()
+	 * @generated
+	 * @ordered
+	 */
+	protected double beta = BETA_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getThreshold() <em>Threshold</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getThreshold()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double THRESHOLD_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getThreshold() <em>Threshold</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getThreshold()
+	 * @generated
+	 * @ordered
+	 */
+	protected double threshold = THRESHOLD_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SoftplusImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NonLinearActivationsPackage.Literals.SOFTPLUS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getBeta() {
+		return beta;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBeta(double newBeta) {
+		double oldBeta = beta;
+		beta = newBeta;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, NonLinearActivationsPackage.SOFTPLUS__BETA, oldBeta, beta));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getThreshold() {
+		return threshold;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setThreshold(double newThreshold) {
+		double oldThreshold = threshold;
+		threshold = newThreshold;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, NonLinearActivationsPackage.SOFTPLUS__THRESHOLD, oldThreshold, threshold));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.SOFTPLUS__BETA:
+				return getBeta();
+			case NonLinearActivationsPackage.SOFTPLUS__THRESHOLD:
+				return getThreshold();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.SOFTPLUS__BETA:
+				setBeta((Double)newValue);
+				return;
+			case NonLinearActivationsPackage.SOFTPLUS__THRESHOLD:
+				setThreshold((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.SOFTPLUS__BETA:
+				setBeta(BETA_EDEFAULT);
+				return;
+			case NonLinearActivationsPackage.SOFTPLUS__THRESHOLD:
+				setThreshold(THRESHOLD_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.SOFTPLUS__BETA:
+				return beta != BETA_EDEFAULT;
+			case NonLinearActivationsPackage.SOFTPLUS__THRESHOLD:
+				return threshold != THRESHOLD_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (beta: "); //$NON-NLS-1$
+		result.append(beta);
+		result.append(", threshold: "); //$NON-NLS-1$
+		result.append(threshold);
+		result.append(')');
+		return result.toString();
+	}
+
+} //SoftplusImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/SoftshrinkImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/SoftshrinkImpl.java
new file mode 100644
index 0000000..2b53db9
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/SoftshrinkImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Softshrink;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Softshrink</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class SoftshrinkImpl extends shrinkImpl implements Softshrink {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SoftshrinkImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NonLinearActivationsPackage.Literals.SOFTSHRINK;
+	}
+
+} //SoftshrinkImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/SoftsignImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/SoftsignImpl.java
new file mode 100644
index 0000000..219af1b
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/SoftsignImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Softsign;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Softsign</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class SoftsignImpl extends Nonlinear_activations_weightedsumnonlinearityImpl implements Softsign {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SoftsignImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NonLinearActivationsPackage.Literals.SOFTSIGN;
+	}
+
+} //SoftsignImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/TanhImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/TanhImpl.java
new file mode 100644
index 0000000..d38f202
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/TanhImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Tanh;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Tanh</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class TanhImpl extends Nonlinear_activations_weightedsumnonlinearityImpl implements Tanh {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TanhImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NonLinearActivationsPackage.Literals.TANH;
+	}
+
+} //TanhImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/TanhshrinkImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/TanhshrinkImpl.java
new file mode 100644
index 0000000..b6e93dd
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/TanhshrinkImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Tanhshrink;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Tanhshrink</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class TanhshrinkImpl extends Nonlinear_activations_weightedsumnonlinearityImpl implements Tanhshrink {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TanhshrinkImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NonLinearActivationsPackage.Literals.TANHSHRINK;
+	}
+
+} //TanhshrinkImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/ThresholdImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/ThresholdImpl.java
new file mode 100644
index 0000000..494d442
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/ThresholdImpl.java
@@ -0,0 +1,229 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Threshold;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Threshold</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.ThresholdImpl#getThreshold <em>Threshold</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.ThresholdImpl#getValue <em>Value</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class ThresholdImpl extends Nonlinear_activations_weightedsumnonlinearity_1Impl implements Threshold {
+	/**
+	 * The default value of the '{@link #getThreshold() <em>Threshold</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getThreshold()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double THRESHOLD_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getThreshold() <em>Threshold</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getThreshold()
+	 * @generated
+	 * @ordered
+	 */
+	protected double threshold = THRESHOLD_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int VALUE_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getValue() <em>Value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getValue()
+	 * @generated
+	 * @ordered
+	 */
+	protected int value = VALUE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ThresholdImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NonLinearActivationsPackage.Literals.THRESHOLD;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getThreshold() {
+		return threshold;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setThreshold(double newThreshold) {
+		double oldThreshold = threshold;
+		threshold = newThreshold;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, NonLinearActivationsPackage.THRESHOLD__THRESHOLD, oldThreshold, threshold));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getValue() {
+		return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setValue(int newValue) {
+		int oldValue = value;
+		value = newValue;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, NonLinearActivationsPackage.THRESHOLD__VALUE, oldValue, value));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.THRESHOLD__THRESHOLD:
+				return getThreshold();
+			case NonLinearActivationsPackage.THRESHOLD__VALUE:
+				return getValue();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.THRESHOLD__THRESHOLD:
+				setThreshold((Double)newValue);
+				return;
+			case NonLinearActivationsPackage.THRESHOLD__VALUE:
+				setValue((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.THRESHOLD__THRESHOLD:
+				setThreshold(THRESHOLD_EDEFAULT);
+				return;
+			case NonLinearActivationsPackage.THRESHOLD__VALUE:
+				setValue(VALUE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.THRESHOLD__THRESHOLD:
+				return threshold != THRESHOLD_EDEFAULT;
+			case NonLinearActivationsPackage.THRESHOLD__VALUE:
+				return value != VALUE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (threshold: "); //$NON-NLS-1$
+		result.append(threshold);
+		result.append(", value: "); //$NON-NLS-1$
+		result.append(value);
+		result.append(')');
+		return result.toString();
+	}
+
+} //ThresholdImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/shrinkImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/shrinkImpl.java
new file mode 100644
index 0000000..5dad585
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/impl/shrinkImpl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.shrink;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>shrink</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.shrinkImpl#getLambd <em>Lambd</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class shrinkImpl extends Nonlinear_activations_weightedsumnonlinearityImpl implements shrink {
+	/**
+	 * The default value of the '{@link #getLambd() <em>Lambd</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLambd()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double LAMBD_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getLambd() <em>Lambd</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getLambd()
+	 * @generated
+	 * @ordered
+	 */
+	protected double lambd = LAMBD_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected shrinkImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return NonLinearActivationsPackage.Literals.SHRINK;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getLambd() {
+		return lambd;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setLambd(double newLambd) {
+		double oldLambd = lambd;
+		lambd = newLambd;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, NonLinearActivationsPackage.SHRINK__LAMBD, oldLambd, lambd));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.SHRINK__LAMBD:
+				return getLambd();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.SHRINK__LAMBD:
+				setLambd((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.SHRINK__LAMBD:
+				setLambd(LAMBD_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case NonLinearActivationsPackage.SHRINK__LAMBD:
+				return lambd != LAMBD_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (lambd: "); //$NON-NLS-1$
+		result.append(lambd);
+		result.append(')');
+		return result.toString();
+	}
+
+} //shrinkImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/shrink.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/shrink.java
new file mode 100644
index 0000000..1fc6160
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/shrink.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>shrink</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.shrink#getLambd <em>Lambd</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getshrink()
+ * @model abstract="true"
+ * @generated
+ */
+public interface shrink extends Nonlinear_activations_weightedsumnonlinearity {
+	/**
+	 * Returns the value of the '<em><b>Lambd</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Lambd</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Lambd</em>' attribute.
+	 * @see #setLambd(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage#getshrink_Lambd()
+	 * @model dataType="org.eclipse.uml2.types.Real" ordered="false"
+	 * @generated
+	 */
+	double getLambd();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.shrink#getLambd <em>Lambd</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Lambd</em>' attribute.
+	 * @see #getLambd()
+	 * @generated
+	 */
+	void setLambd(double value);
+
+} // shrink
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/util/NonLinearActivationsAdapterFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/util/NonLinearActivationsAdapterFactory.java
new file mode 100644
index 0000000..9f4832b
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/util/NonLinearActivationsAdapterFactory.java
@@ -0,0 +1,543 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage
+ * @generated
+ */
+public class NonLinearActivationsAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static NonLinearActivationsPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NonLinearActivationsAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = NonLinearActivationsPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected NonLinearActivationsSwitch<Adapter> modelSwitch =
+		new NonLinearActivationsSwitch<Adapter>() {
+			@Override
+			public Adapter caseNonlinear_activations_weightedsumnonlinearity(Nonlinear_activations_weightedsumnonlinearity object) {
+				return createNonlinear_activations_weightedsumnonlinearityAdapter();
+			}
+			@Override
+			public Adapter caseELU(ELU object) {
+				return createELUAdapter();
+			}
+			@Override
+			public Adapter caseNonlinear_activations_weightedsumnonlinearity_1(Nonlinear_activations_weightedsumnonlinearity_1 object) {
+				return createNonlinear_activations_weightedsumnonlinearity_1Adapter();
+			}
+			@Override
+			public Adapter caseshrink(shrink object) {
+				return createshrinkAdapter();
+			}
+			@Override
+			public Adapter caseLeakyReLU(LeakyReLU object) {
+				return createLeakyReLUAdapter();
+			}
+			@Override
+			public Adapter caseLogSigmoid(LogSigmoid object) {
+				return createLogSigmoidAdapter();
+			}
+			@Override
+			public Adapter caseMultiheadAttention(MultiheadAttention object) {
+				return createMultiheadAttentionAdapter();
+			}
+			@Override
+			public Adapter casePReLU(PReLU object) {
+				return createPReLUAdapter();
+			}
+			@Override
+			public Adapter caseReLU(ReLU object) {
+				return createReLUAdapter();
+			}
+			@Override
+			public Adapter caseReLU6(ReLU6 object) {
+				return createReLU6Adapter();
+			}
+			@Override
+			public Adapter caseSELU(SELU object) {
+				return createSELUAdapter();
+			}
+			@Override
+			public Adapter caseRReLU(RReLU object) {
+				return createRReLUAdapter();
+			}
+			@Override
+			public Adapter caseCELU(CELU object) {
+				return createCELUAdapter();
+			}
+			@Override
+			public Adapter caseGELU(GELU object) {
+				return createGELUAdapter();
+			}
+			@Override
+			public Adapter caseSigmoid(Sigmoid object) {
+				return createSigmoidAdapter();
+			}
+			@Override
+			public Adapter caseSoftplus(Softplus object) {
+				return createSoftplusAdapter();
+			}
+			@Override
+			public Adapter caseSoftshrink(Softshrink object) {
+				return createSoftshrinkAdapter();
+			}
+			@Override
+			public Adapter caseHardshrink(Hardshrink object) {
+				return createHardshrinkAdapter();
+			}
+			@Override
+			public Adapter caseSoftsign(Softsign object) {
+				return createSoftsignAdapter();
+			}
+			@Override
+			public Adapter caseTanhshrink(Tanhshrink object) {
+				return createTanhshrinkAdapter();
+			}
+			@Override
+			public Adapter caseTanh(Tanh object) {
+				return createTanhAdapter();
+			}
+			@Override
+			public Adapter caseThreshold(Threshold object) {
+				return createThresholdAdapter();
+			}
+			@Override
+			public Adapter caseHardtanh(Hardtanh object) {
+				return createHardtanhAdapter();
+			}
+			@Override
+			public Adapter caseModel(Model object) {
+				return createModelAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Nonlinear_activations_weightedsumnonlinearity <em>Nonlinear activations weightedsumnonlinearity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Nonlinear_activations_weightedsumnonlinearity
+	 * @generated
+	 */
+	public Adapter createNonlinear_activations_weightedsumnonlinearityAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.ELU <em>ELU</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.ELU
+	 * @generated
+	 */
+	public Adapter createELUAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Nonlinear_activations_weightedsumnonlinearity_1 <em>Nonlinear activations weightedsumnonlinearity 1</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Nonlinear_activations_weightedsumnonlinearity_1
+	 * @generated
+	 */
+	public Adapter createNonlinear_activations_weightedsumnonlinearity_1Adapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.shrink <em>shrink</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.shrink
+	 * @generated
+	 */
+	public Adapter createshrinkAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.LeakyReLU <em>Leaky Re LU</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.LeakyReLU
+	 * @generated
+	 */
+	public Adapter createLeakyReLUAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.LogSigmoid <em>Log Sigmoid</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.LogSigmoid
+	 * @generated
+	 */
+	public Adapter createLogSigmoidAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention <em>Multihead Attention</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.MultiheadAttention
+	 * @generated
+	 */
+	public Adapter createMultiheadAttentionAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.PReLU <em>PRe LU</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.PReLU
+	 * @generated
+	 */
+	public Adapter createPReLUAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.ReLU <em>Re LU</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.ReLU
+	 * @generated
+	 */
+	public Adapter createReLUAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.ReLU6 <em>Re LU6</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.ReLU6
+	 * @generated
+	 */
+	public Adapter createReLU6Adapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.SELU <em>SELU</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.SELU
+	 * @generated
+	 */
+	public Adapter createSELUAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.RReLU <em>RRe LU</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.RReLU
+	 * @generated
+	 */
+	public Adapter createRReLUAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.CELU <em>CELU</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.CELU
+	 * @generated
+	 */
+	public Adapter createCELUAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.GELU <em>GELU</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.GELU
+	 * @generated
+	 */
+	public Adapter createGELUAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Sigmoid <em>Sigmoid</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Sigmoid
+	 * @generated
+	 */
+	public Adapter createSigmoidAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Softplus <em>Softplus</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Softplus
+	 * @generated
+	 */
+	public Adapter createSoftplusAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Softshrink <em>Softshrink</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Softshrink
+	 * @generated
+	 */
+	public Adapter createSoftshrinkAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Hardshrink <em>Hardshrink</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Hardshrink
+	 * @generated
+	 */
+	public Adapter createHardshrinkAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Softsign <em>Softsign</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Softsign
+	 * @generated
+	 */
+	public Adapter createSoftsignAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Tanhshrink <em>Tanhshrink</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Tanhshrink
+	 * @generated
+	 */
+	public Adapter createTanhshrinkAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Tanh <em>Tanh</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Tanh
+	 * @generated
+	 */
+	public Adapter createTanhAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Threshold <em>Threshold</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Threshold
+	 * @generated
+	 */
+	public Adapter createThresholdAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Hardtanh <em>Hardtanh</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.Hardtanh
+	 * @generated
+	 */
+	public Adapter createHardtanhAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model <em>Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.Model
+	 * @generated
+	 */
+	public Adapter createModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //NonLinearActivationsAdapterFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/util/NonLinearActivationsSwitch.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/util/NonLinearActivationsSwitch.java
new file mode 100644
index 0000000..13d96f9
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/NonLinearActivations/util/NonLinearActivationsSwitch.java
@@ -0,0 +1,652 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage
+ * @generated
+ */
+public class NonLinearActivationsSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static NonLinearActivationsPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public NonLinearActivationsSwitch() {
+		if (modelPackage == null) {
+			modelPackage = NonLinearActivationsPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case NonLinearActivationsPackage.NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY: {
+				Nonlinear_activations_weightedsumnonlinearity nonlinear_activations_weightedsumnonlinearity = (Nonlinear_activations_weightedsumnonlinearity)theEObject;
+				T result = caseNonlinear_activations_weightedsumnonlinearity(nonlinear_activations_weightedsumnonlinearity);
+				if (result == null) result = caseModel(nonlinear_activations_weightedsumnonlinearity);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case NonLinearActivationsPackage.ELU: {
+				ELU elu = (ELU)theEObject;
+				T result = caseELU(elu);
+				if (result == null) result = caseNonlinear_activations_weightedsumnonlinearity_1(elu);
+				if (result == null) result = caseNonlinear_activations_weightedsumnonlinearity(elu);
+				if (result == null) result = caseModel(elu);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case NonLinearActivationsPackage.NONLINEAR_ACTIVATIONS_WEIGHTEDSUMNONLINEARITY_1: {
+				Nonlinear_activations_weightedsumnonlinearity_1 nonlinear_activations_weightedsumnonlinearity_1 = (Nonlinear_activations_weightedsumnonlinearity_1)theEObject;
+				T result = caseNonlinear_activations_weightedsumnonlinearity_1(nonlinear_activations_weightedsumnonlinearity_1);
+				if (result == null) result = caseNonlinear_activations_weightedsumnonlinearity(nonlinear_activations_weightedsumnonlinearity_1);
+				if (result == null) result = caseModel(nonlinear_activations_weightedsumnonlinearity_1);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case NonLinearActivationsPackage.SHRINK: {
+				shrink shrink = (shrink)theEObject;
+				T result = caseshrink(shrink);
+				if (result == null) result = caseNonlinear_activations_weightedsumnonlinearity(shrink);
+				if (result == null) result = caseModel(shrink);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case NonLinearActivationsPackage.LEAKY_RE_LU: {
+				LeakyReLU leakyReLU = (LeakyReLU)theEObject;
+				T result = caseLeakyReLU(leakyReLU);
+				if (result == null) result = caseNonlinear_activations_weightedsumnonlinearity_1(leakyReLU);
+				if (result == null) result = caseNonlinear_activations_weightedsumnonlinearity(leakyReLU);
+				if (result == null) result = caseModel(leakyReLU);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case NonLinearActivationsPackage.LOG_SIGMOID: {
+				LogSigmoid logSigmoid = (LogSigmoid)theEObject;
+				T result = caseLogSigmoid(logSigmoid);
+				if (result == null) result = caseNonlinear_activations_weightedsumnonlinearity(logSigmoid);
+				if (result == null) result = caseModel(logSigmoid);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case NonLinearActivationsPackage.MULTIHEAD_ATTENTION: {
+				MultiheadAttention multiheadAttention = (MultiheadAttention)theEObject;
+				T result = caseMultiheadAttention(multiheadAttention);
+				if (result == null) result = caseNonlinear_activations_weightedsumnonlinearity(multiheadAttention);
+				if (result == null) result = caseModel(multiheadAttention);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case NonLinearActivationsPackage.PRE_LU: {
+				PReLU pReLU = (PReLU)theEObject;
+				T result = casePReLU(pReLU);
+				if (result == null) result = caseNonlinear_activations_weightedsumnonlinearity(pReLU);
+				if (result == null) result = caseModel(pReLU);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case NonLinearActivationsPackage.RE_LU: {
+				ReLU reLU = (ReLU)theEObject;
+				T result = caseReLU(reLU);
+				if (result == null) result = caseNonlinear_activations_weightedsumnonlinearity_1(reLU);
+				if (result == null) result = caseNonlinear_activations_weightedsumnonlinearity(reLU);
+				if (result == null) result = caseModel(reLU);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case NonLinearActivationsPackage.RE_LU6: {
+				ReLU6 reLU6 = (ReLU6)theEObject;
+				T result = caseReLU6(reLU6);
+				if (result == null) result = caseNonlinear_activations_weightedsumnonlinearity_1(reLU6);
+				if (result == null) result = caseNonlinear_activations_weightedsumnonlinearity(reLU6);
+				if (result == null) result = caseModel(reLU6);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case NonLinearActivationsPackage.SELU: {
+				SELU selu = (SELU)theEObject;
+				T result = caseSELU(selu);
+				if (result == null) result = caseNonlinear_activations_weightedsumnonlinearity_1(selu);
+				if (result == null) result = caseNonlinear_activations_weightedsumnonlinearity(selu);
+				if (result == null) result = caseModel(selu);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case NonLinearActivationsPackage.RRE_LU: {
+				RReLU rReLU = (RReLU)theEObject;
+				T result = caseRReLU(rReLU);
+				if (result == null) result = caseNonlinear_activations_weightedsumnonlinearity_1(rReLU);
+				if (result == null) result = caseNonlinear_activations_weightedsumnonlinearity(rReLU);
+				if (result == null) result = caseModel(rReLU);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case NonLinearActivationsPackage.CELU: {
+				CELU celu = (CELU)theEObject;
+				T result = caseCELU(celu);
+				if (result == null) result = caseNonlinear_activations_weightedsumnonlinearity_1(celu);
+				if (result == null) result = caseNonlinear_activations_weightedsumnonlinearity(celu);
+				if (result == null) result = caseModel(celu);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case NonLinearActivationsPackage.GELU: {
+				GELU gelu = (GELU)theEObject;
+				T result = caseGELU(gelu);
+				if (result == null) result = caseNonlinear_activations_weightedsumnonlinearity(gelu);
+				if (result == null) result = caseModel(gelu);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case NonLinearActivationsPackage.SIGMOID: {
+				Sigmoid sigmoid = (Sigmoid)theEObject;
+				T result = caseSigmoid(sigmoid);
+				if (result == null) result = caseNonlinear_activations_weightedsumnonlinearity(sigmoid);
+				if (result == null) result = caseModel(sigmoid);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case NonLinearActivationsPackage.SOFTPLUS: {
+				Softplus softplus = (Softplus)theEObject;
+				T result = caseSoftplus(softplus);
+				if (result == null) result = caseNonlinear_activations_weightedsumnonlinearity(softplus);
+				if (result == null) result = caseModel(softplus);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case NonLinearActivationsPackage.SOFTSHRINK: {
+				Softshrink softshrink = (Softshrink)theEObject;
+				T result = caseSoftshrink(softshrink);
+				if (result == null) result = caseshrink(softshrink);
+				if (result == null) result = caseNonlinear_activations_weightedsumnonlinearity(softshrink);
+				if (result == null) result = caseModel(softshrink);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case NonLinearActivationsPackage.HARDSHRINK: {
+				Hardshrink hardshrink = (Hardshrink)theEObject;
+				T result = caseHardshrink(hardshrink);
+				if (result == null) result = caseshrink(hardshrink);
+				if (result == null) result = caseNonlinear_activations_weightedsumnonlinearity(hardshrink);
+				if (result == null) result = caseModel(hardshrink);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case NonLinearActivationsPackage.SOFTSIGN: {
+				Softsign softsign = (Softsign)theEObject;
+				T result = caseSoftsign(softsign);
+				if (result == null) result = caseNonlinear_activations_weightedsumnonlinearity(softsign);
+				if (result == null) result = caseModel(softsign);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case NonLinearActivationsPackage.TANHSHRINK: {
+				Tanhshrink tanhshrink = (Tanhshrink)theEObject;
+				T result = caseTanhshrink(tanhshrink);
+				if (result == null) result = caseNonlinear_activations_weightedsumnonlinearity(tanhshrink);
+				if (result == null) result = caseModel(tanhshrink);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case NonLinearActivationsPackage.TANH: {
+				Tanh tanh = (Tanh)theEObject;
+				T result = caseTanh(tanh);
+				if (result == null) result = caseNonlinear_activations_weightedsumnonlinearity(tanh);
+				if (result == null) result = caseModel(tanh);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case NonLinearActivationsPackage.THRESHOLD: {
+				Threshold threshold = (Threshold)theEObject;
+				T result = caseThreshold(threshold);
+				if (result == null) result = caseNonlinear_activations_weightedsumnonlinearity_1(threshold);
+				if (result == null) result = caseNonlinear_activations_weightedsumnonlinearity(threshold);
+				if (result == null) result = caseModel(threshold);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case NonLinearActivationsPackage.HARDTANH: {
+				Hardtanh hardtanh = (Hardtanh)theEObject;
+				T result = caseHardtanh(hardtanh);
+				if (result == null) result = caseNonlinear_activations_weightedsumnonlinearity_1(hardtanh);
+				if (result == null) result = caseNonlinear_activations_weightedsumnonlinearity(hardtanh);
+				if (result == null) result = caseModel(hardtanh);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Nonlinear activations weightedsumnonlinearity</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Nonlinear activations weightedsumnonlinearity</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseNonlinear_activations_weightedsumnonlinearity(Nonlinear_activations_weightedsumnonlinearity object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>ELU</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>ELU</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseELU(ELU object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Nonlinear activations weightedsumnonlinearity 1</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Nonlinear activations weightedsumnonlinearity 1</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseNonlinear_activations_weightedsumnonlinearity_1(Nonlinear_activations_weightedsumnonlinearity_1 object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>shrink</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>shrink</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseshrink(shrink object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Leaky Re LU</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Leaky Re LU</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLeakyReLU(LeakyReLU object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Log Sigmoid</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Log Sigmoid</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLogSigmoid(LogSigmoid object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Multihead Attention</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Multihead Attention</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseMultiheadAttention(MultiheadAttention object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>PRe LU</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>PRe LU</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePReLU(PReLU object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Re LU</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Re LU</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseReLU(ReLU object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Re LU6</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Re LU6</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseReLU6(ReLU6 object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>SELU</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>SELU</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSELU(SELU object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>RRe LU</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>RRe LU</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseRReLU(RReLU object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>CELU</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>CELU</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseCELU(CELU object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>GELU</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>GELU</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseGELU(GELU object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Sigmoid</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Sigmoid</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSigmoid(Sigmoid object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Softplus</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Softplus</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSoftplus(Softplus object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Softshrink</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Softshrink</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSoftshrink(Softshrink object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Hardshrink</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Hardshrink</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseHardshrink(Hardshrink object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Softsign</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Softsign</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSoftsign(Softsign object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Tanhshrink</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Tanhshrink</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTanhshrink(Tanhshrink object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Tanh</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Tanh</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTanh(Tanh object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Threshold</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Threshold</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseThreshold(Threshold object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Hardtanh</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Hardtanh</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseHardtanh(Hardtanh object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseModel(Model object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //NonLinearActivationsSwitch
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/BatchNorm1d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/BatchNorm1d.java
new file mode 100644
index 0000000..552e893
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/BatchNorm1d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Batch Norm1d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage#getBatchNorm1d()
+ * @model
+ * @generated
+ */
+public interface BatchNorm1d extends Normalization_layers_1_1_1 {
+} // BatchNorm1d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/BatchNorm2d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/BatchNorm2d.java
new file mode 100644
index 0000000..cb19622
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/BatchNorm2d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Batch Norm2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage#getBatchNorm2d()
+ * @model
+ * @generated
+ */
+public interface BatchNorm2d extends Normalization_layers_1_1_1 {
+} // BatchNorm2d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/BatchNorm3d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/BatchNorm3d.java
new file mode 100644
index 0000000..0857ddc
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/BatchNorm3d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Batch Norm3d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage#getBatchNorm3d()
+ * @model
+ * @generated
+ */
+public interface BatchNorm3d extends Normalization_layers_1_1_1 {
+} // BatchNorm3d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/GroupNorm.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/GroupNorm.java
new file mode 100644
index 0000000..0ddf07b
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/GroupNorm.java
@@ -0,0 +1,85 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Group Norm</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.GroupNorm#getNum_groups <em>Num groups</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.GroupNorm#getNum_channels <em>Num channels</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage#getGroupNorm()
+ * @model
+ * @generated
+ */
+public interface GroupNorm extends Normalization_layers_1_1 {
+	/**
+	 * Returns the value of the '<em><b>Num groups</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Num groups</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Num groups</em>' attribute.
+	 * @see #setNum_groups(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage#getGroupNorm_Num_groups()
+	 * @model dataType="org.eclipse.uml2.types.Integer" required="true" ordered="false"
+	 * @generated
+	 */
+	int getNum_groups();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.GroupNorm#getNum_groups <em>Num groups</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Num groups</em>' attribute.
+	 * @see #getNum_groups()
+	 * @generated
+	 */
+	void setNum_groups(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Num channels</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Num channels</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Num channels</em>' attribute.
+	 * @see #setNum_channels(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage#getGroupNorm_Num_channels()
+	 * @model dataType="org.eclipse.uml2.types.Integer" required="true" ordered="false"
+	 * @generated
+	 */
+	int getNum_channels();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.GroupNorm#getNum_channels <em>Num channels</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Num channels</em>' attribute.
+	 * @see #getNum_channels()
+	 * @generated
+	 */
+	void setNum_channels(int value);
+
+} // GroupNorm
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/InstanceNorm1d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/InstanceNorm1d.java
new file mode 100644
index 0000000..a50655f
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/InstanceNorm1d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Instance Norm1d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage#getInstanceNorm1d()
+ * @model
+ * @generated
+ */
+public interface InstanceNorm1d extends Normalization_layers_1_1_1 {
+} // InstanceNorm1d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/InstanceNorm2d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/InstanceNorm2d.java
new file mode 100644
index 0000000..0901fc8
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/InstanceNorm2d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Instance Norm2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage#getInstanceNorm2d()
+ * @model
+ * @generated
+ */
+public interface InstanceNorm2d extends Normalization_layers_1_1_1 {
+} // InstanceNorm2d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/InstanceNorm3d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/InstanceNorm3d.java
new file mode 100644
index 0000000..7591d12
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/InstanceNorm3d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Instance Norm3d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage#getInstanceNorm3d()
+ * @model
+ * @generated
+ */
+public interface InstanceNorm3d extends Normalization_layers_1_1_1 {
+} // InstanceNorm3d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/LayerNorm.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/LayerNorm.java
new file mode 100644
index 0000000..6f8e72b
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/LayerNorm.java
@@ -0,0 +1,76 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Layer Norm</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LayerNorm#getNormalized_shape <em>Normalized shape</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LayerNorm#isElementwise_affine <em>Elementwise affine</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage#getLayerNorm()
+ * @model
+ * @generated
+ */
+public interface LayerNorm extends Normalization_layers_1 {
+	/**
+	 * Returns the value of the '<em><b>Normalized shape</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.Integer}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Normalized shape</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Normalized shape</em>' attribute list.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage#getLayerNorm_Normalized_shape()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	EList<Integer> getNormalized_shape();
+
+	/**
+	 * Returns the value of the '<em><b>Elementwise affine</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Elementwise affine</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Elementwise affine</em>' attribute.
+	 * @see #setElementwise_affine(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage#getLayerNorm_Elementwise_affine()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isElementwise_affine();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LayerNorm#isElementwise_affine <em>Elementwise affine</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Elementwise affine</em>' attribute.
+	 * @see #isElementwise_affine()
+	 * @generated
+	 */
+	void setElementwise_affine(boolean value);
+
+} // LayerNorm
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/LocalResponseNorm.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/LocalResponseNorm.java
new file mode 100644
index 0000000..c97b761
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/LocalResponseNorm.java
@@ -0,0 +1,139 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Local Response Norm</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LocalResponseNorm#getSize <em>Size</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LocalResponseNorm#getAlpha <em>Alpha</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LocalResponseNorm#getBeta <em>Beta</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LocalResponseNorm#getK <em>K</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage#getLocalResponseNorm()
+ * @model
+ * @generated
+ */
+public interface LocalResponseNorm extends Normalization_layers {
+	/**
+	 * Returns the value of the '<em><b>Size</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Size</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Size</em>' attribute.
+	 * @see #setSize(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage#getLocalResponseNorm_Size()
+	 * @model dataType="org.eclipse.uml2.types.Integer" required="true" ordered="false"
+	 * @generated
+	 */
+	int getSize();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LocalResponseNorm#getSize <em>Size</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Size</em>' attribute.
+	 * @see #getSize()
+	 * @generated
+	 */
+	void setSize(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Alpha</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Alpha</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Alpha</em>' attribute.
+	 * @see #setAlpha(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage#getLocalResponseNorm_Alpha()
+	 * @model dataType="org.eclipse.uml2.types.Real" ordered="false"
+	 * @generated
+	 */
+	double getAlpha();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LocalResponseNorm#getAlpha <em>Alpha</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Alpha</em>' attribute.
+	 * @see #getAlpha()
+	 * @generated
+	 */
+	void setAlpha(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Beta</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Beta</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Beta</em>' attribute.
+	 * @see #setBeta(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage#getLocalResponseNorm_Beta()
+	 * @model dataType="org.eclipse.uml2.types.Real" ordered="false"
+	 * @generated
+	 */
+	double getBeta();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LocalResponseNorm#getBeta <em>Beta</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Beta</em>' attribute.
+	 * @see #getBeta()
+	 * @generated
+	 */
+	void setBeta(double value);
+
+	/**
+	 * Returns the value of the '<em><b>K</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>K</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>K</em>' attribute.
+	 * @see #setK(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage#getLocalResponseNorm_K()
+	 * @model dataType="org.eclipse.uml2.types.Real" ordered="false"
+	 * @generated
+	 */
+	double getK();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LocalResponseNorm#getK <em>K</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>K</em>' attribute.
+	 * @see #getK()
+	 * @generated
+	 */
+	void setK(double value);
+
+} // LocalResponseNorm
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/Normalization_layers.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/Normalization_layers.java
new file mode 100644
index 0000000..fceb021
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/Normalization_layers.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Normalization layers</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage#getNormalization_layers()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Normalization_layers extends Model {
+} // Normalization_layers
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/Normalization_layersFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/Normalization_layersFactory.java
new file mode 100644
index 0000000..f723156
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/Normalization_layersFactory.java
@@ -0,0 +1,141 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage
+ * @generated
+ */
+public interface Normalization_layersFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	Normalization_layersFactory eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Layer Norm</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Layer Norm</em>'.
+	 * @generated
+	 */
+	LayerNorm createLayerNorm();
+
+	/**
+	 * Returns a new object of class '<em>Local Response Norm</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Local Response Norm</em>'.
+	 * @generated
+	 */
+	LocalResponseNorm createLocalResponseNorm();
+
+	/**
+	 * Returns a new object of class '<em>Normalization layers 11</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Normalization layers 11</em>'.
+	 * @generated
+	 */
+	Normalization_layers_1_1 createNormalization_layers_1_1();
+
+	/**
+	 * Returns a new object of class '<em>Group Norm</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Group Norm</em>'.
+	 * @generated
+	 */
+	GroupNorm createGroupNorm();
+
+	/**
+	 * Returns a new object of class '<em>Batch Norm1d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Batch Norm1d</em>'.
+	 * @generated
+	 */
+	BatchNorm1d createBatchNorm1d();
+
+	/**
+	 * Returns a new object of class '<em>Batch Norm2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Batch Norm2d</em>'.
+	 * @generated
+	 */
+	BatchNorm2d createBatchNorm2d();
+
+	/**
+	 * Returns a new object of class '<em>Batch Norm3d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Batch Norm3d</em>'.
+	 * @generated
+	 */
+	BatchNorm3d createBatchNorm3d();
+
+	/**
+	 * Returns a new object of class '<em>Sync Batch Norm</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Sync Batch Norm</em>'.
+	 * @generated
+	 */
+	SyncBatchNorm createSyncBatchNorm();
+
+	/**
+	 * Returns a new object of class '<em>Instance Norm1d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Instance Norm1d</em>'.
+	 * @generated
+	 */
+	InstanceNorm1d createInstanceNorm1d();
+
+	/**
+	 * Returns a new object of class '<em>Instance Norm2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Instance Norm2d</em>'.
+	 * @generated
+	 */
+	InstanceNorm2d createInstanceNorm2d();
+
+	/**
+	 * Returns a new object of class '<em>Instance Norm3d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Instance Norm3d</em>'.
+	 * @generated
+	 */
+	InstanceNorm3d createInstanceNorm3d();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	Normalization_layersPackage getNormalization_layersPackage();
+
+} //Normalization_layersFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/Normalization_layersPackage.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/Normalization_layersPackage.java
new file mode 100644
index 0000000..6537495
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/Normalization_layersPackage.java
@@ -0,0 +1,2410 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface Normalization_layersPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "Normalization_layers"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://www.eclipse.org/papyrus/AIML/normalization/1"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "AIML.Normalization_layers"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	Normalization_layersPackage eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersImpl <em>Normalization layers</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl#getNormalization_layers()
+	 * @generated
+	 */
+	int NORMALIZATION_LAYERS = 0;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS__BASE_CLASS = ModulePackage.MODEL__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS__NAME = ModulePackage.MODEL__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS__DATA = ModulePackage.MODEL__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS__REQUIRES_GRAD = ModulePackage.MODEL__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS__SUB_MODULE = ModulePackage.MODEL__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS__OPTIMIZER = ModulePackage.MODEL__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS__LOSS = ModulePackage.MODEL__LOSS;
+
+	/**
+	 * The number of structural features of the '<em>Normalization layers</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_FEATURE_COUNT = ModulePackage.MODEL_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Normalization layers</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_OPERATION_COUNT = ModulePackage.MODEL_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layers_1Impl <em>Normalization layers 1</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layers_1Impl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl#getNormalization_layers_1()
+	 * @generated
+	 */
+	int NORMALIZATION_LAYERS_1 = 1;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_1__BASE_CLASS = NORMALIZATION_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_1__NAME = NORMALIZATION_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_1__DATA = NORMALIZATION_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_1__REQUIRES_GRAD = NORMALIZATION_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_1__SUB_MODULE = NORMALIZATION_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_1__OPTIMIZER = NORMALIZATION_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_1__LOSS = NORMALIZATION_LAYERS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Eps</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_1__EPS = NORMALIZATION_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Normalization layers 1</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_1_FEATURE_COUNT = NORMALIZATION_LAYERS_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Normalization layers 1</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_1_OPERATION_COUNT = NORMALIZATION_LAYERS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.LayerNormImpl <em>Layer Norm</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.LayerNormImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl#getLayerNorm()
+	 * @generated
+	 */
+	int LAYER_NORM = 2;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_NORM__BASE_CLASS = NORMALIZATION_LAYERS_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_NORM__NAME = NORMALIZATION_LAYERS_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_NORM__DATA = NORMALIZATION_LAYERS_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_NORM__REQUIRES_GRAD = NORMALIZATION_LAYERS_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_NORM__SUB_MODULE = NORMALIZATION_LAYERS_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_NORM__OPTIMIZER = NORMALIZATION_LAYERS_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_NORM__LOSS = NORMALIZATION_LAYERS_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Eps</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_NORM__EPS = NORMALIZATION_LAYERS_1__EPS;
+
+	/**
+	 * The feature id for the '<em><b>Normalized shape</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_NORM__NORMALIZED_SHAPE = NORMALIZATION_LAYERS_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Elementwise affine</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_NORM__ELEMENTWISE_AFFINE = NORMALIZATION_LAYERS_1_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Layer Norm</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_NORM_FEATURE_COUNT = NORMALIZATION_LAYERS_1_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Layer Norm</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LAYER_NORM_OPERATION_COUNT = NORMALIZATION_LAYERS_1_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.LocalResponseNormImpl <em>Local Response Norm</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.LocalResponseNormImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl#getLocalResponseNorm()
+	 * @generated
+	 */
+	int LOCAL_RESPONSE_NORM = 3;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOCAL_RESPONSE_NORM__BASE_CLASS = NORMALIZATION_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOCAL_RESPONSE_NORM__NAME = NORMALIZATION_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOCAL_RESPONSE_NORM__DATA = NORMALIZATION_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOCAL_RESPONSE_NORM__REQUIRES_GRAD = NORMALIZATION_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOCAL_RESPONSE_NORM__SUB_MODULE = NORMALIZATION_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOCAL_RESPONSE_NORM__OPTIMIZER = NORMALIZATION_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOCAL_RESPONSE_NORM__LOSS = NORMALIZATION_LAYERS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Size</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOCAL_RESPONSE_NORM__SIZE = NORMALIZATION_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Alpha</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOCAL_RESPONSE_NORM__ALPHA = NORMALIZATION_LAYERS_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Beta</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOCAL_RESPONSE_NORM__BETA = NORMALIZATION_LAYERS_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>K</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOCAL_RESPONSE_NORM__K = NORMALIZATION_LAYERS_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the '<em>Local Response Norm</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOCAL_RESPONSE_NORM_FEATURE_COUNT = NORMALIZATION_LAYERS_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of operations of the '<em>Local Response Norm</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOCAL_RESPONSE_NORM_OPERATION_COUNT = NORMALIZATION_LAYERS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layers_1_1Impl <em>Normalization layers 11</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layers_1_1Impl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl#getNormalization_layers_1_1()
+	 * @generated
+	 */
+	int NORMALIZATION_LAYERS_11 = 4;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_11__BASE_CLASS = NORMALIZATION_LAYERS_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_11__NAME = NORMALIZATION_LAYERS_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_11__DATA = NORMALIZATION_LAYERS_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_11__REQUIRES_GRAD = NORMALIZATION_LAYERS_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_11__SUB_MODULE = NORMALIZATION_LAYERS_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_11__OPTIMIZER = NORMALIZATION_LAYERS_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_11__LOSS = NORMALIZATION_LAYERS_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Eps</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_11__EPS = NORMALIZATION_LAYERS_1__EPS;
+
+	/**
+	 * The feature id for the '<em><b>Affine</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_11__AFFINE = NORMALIZATION_LAYERS_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Normalization layers 11</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_11_FEATURE_COUNT = NORMALIZATION_LAYERS_1_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Normalization layers 11</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_11_OPERATION_COUNT = NORMALIZATION_LAYERS_1_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layers_1_1_1Impl <em>Normalization layers 111</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layers_1_1_1Impl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl#getNormalization_layers_1_1_1()
+	 * @generated
+	 */
+	int NORMALIZATION_LAYERS_111 = 5;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_111__BASE_CLASS = NORMALIZATION_LAYERS_11__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_111__NAME = NORMALIZATION_LAYERS_11__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_111__DATA = NORMALIZATION_LAYERS_11__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_111__REQUIRES_GRAD = NORMALIZATION_LAYERS_11__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_111__SUB_MODULE = NORMALIZATION_LAYERS_11__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_111__OPTIMIZER = NORMALIZATION_LAYERS_11__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_111__LOSS = NORMALIZATION_LAYERS_11__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Eps</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_111__EPS = NORMALIZATION_LAYERS_11__EPS;
+
+	/**
+	 * The feature id for the '<em><b>Affine</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_111__AFFINE = NORMALIZATION_LAYERS_11__AFFINE;
+
+	/**
+	 * The feature id for the '<em><b>Num features</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_111__NUM_FEATURES = NORMALIZATION_LAYERS_11_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Momentum</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_111__MOMENTUM = NORMALIZATION_LAYERS_11_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Track running stats</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_111__TRACK_RUNNING_STATS = NORMALIZATION_LAYERS_11_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Normalization layers 111</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_111_FEATURE_COUNT = NORMALIZATION_LAYERS_11_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of operations of the '<em>Normalization layers 111</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int NORMALIZATION_LAYERS_111_OPERATION_COUNT = NORMALIZATION_LAYERS_11_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.GroupNormImpl <em>Group Norm</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.GroupNormImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl#getGroupNorm()
+	 * @generated
+	 */
+	int GROUP_NORM = 6;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GROUP_NORM__BASE_CLASS = NORMALIZATION_LAYERS_11__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GROUP_NORM__NAME = NORMALIZATION_LAYERS_11__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GROUP_NORM__DATA = NORMALIZATION_LAYERS_11__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GROUP_NORM__REQUIRES_GRAD = NORMALIZATION_LAYERS_11__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GROUP_NORM__SUB_MODULE = NORMALIZATION_LAYERS_11__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GROUP_NORM__OPTIMIZER = NORMALIZATION_LAYERS_11__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GROUP_NORM__LOSS = NORMALIZATION_LAYERS_11__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Eps</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GROUP_NORM__EPS = NORMALIZATION_LAYERS_11__EPS;
+
+	/**
+	 * The feature id for the '<em><b>Affine</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GROUP_NORM__AFFINE = NORMALIZATION_LAYERS_11__AFFINE;
+
+	/**
+	 * The feature id for the '<em><b>Num groups</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GROUP_NORM__NUM_GROUPS = NORMALIZATION_LAYERS_11_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Num channels</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GROUP_NORM__NUM_CHANNELS = NORMALIZATION_LAYERS_11_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Group Norm</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GROUP_NORM_FEATURE_COUNT = NORMALIZATION_LAYERS_11_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Group Norm</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GROUP_NORM_OPERATION_COUNT = NORMALIZATION_LAYERS_11_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.BatchNorm1dImpl <em>Batch Norm1d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.BatchNorm1dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl#getBatchNorm1d()
+	 * @generated
+	 */
+	int BATCH_NORM1D = 7;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM1D__BASE_CLASS = NORMALIZATION_LAYERS_111__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM1D__NAME = NORMALIZATION_LAYERS_111__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM1D__DATA = NORMALIZATION_LAYERS_111__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM1D__REQUIRES_GRAD = NORMALIZATION_LAYERS_111__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM1D__SUB_MODULE = NORMALIZATION_LAYERS_111__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM1D__OPTIMIZER = NORMALIZATION_LAYERS_111__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM1D__LOSS = NORMALIZATION_LAYERS_111__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Eps</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM1D__EPS = NORMALIZATION_LAYERS_111__EPS;
+
+	/**
+	 * The feature id for the '<em><b>Affine</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM1D__AFFINE = NORMALIZATION_LAYERS_111__AFFINE;
+
+	/**
+	 * The feature id for the '<em><b>Num features</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM1D__NUM_FEATURES = NORMALIZATION_LAYERS_111__NUM_FEATURES;
+
+	/**
+	 * The feature id for the '<em><b>Momentum</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM1D__MOMENTUM = NORMALIZATION_LAYERS_111__MOMENTUM;
+
+	/**
+	 * The feature id for the '<em><b>Track running stats</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM1D__TRACK_RUNNING_STATS = NORMALIZATION_LAYERS_111__TRACK_RUNNING_STATS;
+
+	/**
+	 * The number of structural features of the '<em>Batch Norm1d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM1D_FEATURE_COUNT = NORMALIZATION_LAYERS_111_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Batch Norm1d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM1D_OPERATION_COUNT = NORMALIZATION_LAYERS_111_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.BatchNorm2dImpl <em>Batch Norm2d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.BatchNorm2dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl#getBatchNorm2d()
+	 * @generated
+	 */
+	int BATCH_NORM2D = 8;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM2D__BASE_CLASS = NORMALIZATION_LAYERS_111__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM2D__NAME = NORMALIZATION_LAYERS_111__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM2D__DATA = NORMALIZATION_LAYERS_111__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM2D__REQUIRES_GRAD = NORMALIZATION_LAYERS_111__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM2D__SUB_MODULE = NORMALIZATION_LAYERS_111__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM2D__OPTIMIZER = NORMALIZATION_LAYERS_111__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM2D__LOSS = NORMALIZATION_LAYERS_111__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Eps</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM2D__EPS = NORMALIZATION_LAYERS_111__EPS;
+
+	/**
+	 * The feature id for the '<em><b>Affine</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM2D__AFFINE = NORMALIZATION_LAYERS_111__AFFINE;
+
+	/**
+	 * The feature id for the '<em><b>Num features</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM2D__NUM_FEATURES = NORMALIZATION_LAYERS_111__NUM_FEATURES;
+
+	/**
+	 * The feature id for the '<em><b>Momentum</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM2D__MOMENTUM = NORMALIZATION_LAYERS_111__MOMENTUM;
+
+	/**
+	 * The feature id for the '<em><b>Track running stats</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM2D__TRACK_RUNNING_STATS = NORMALIZATION_LAYERS_111__TRACK_RUNNING_STATS;
+
+	/**
+	 * The number of structural features of the '<em>Batch Norm2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM2D_FEATURE_COUNT = NORMALIZATION_LAYERS_111_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Batch Norm2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM2D_OPERATION_COUNT = NORMALIZATION_LAYERS_111_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.BatchNorm3dImpl <em>Batch Norm3d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.BatchNorm3dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl#getBatchNorm3d()
+	 * @generated
+	 */
+	int BATCH_NORM3D = 9;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM3D__BASE_CLASS = NORMALIZATION_LAYERS_111__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM3D__NAME = NORMALIZATION_LAYERS_111__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM3D__DATA = NORMALIZATION_LAYERS_111__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM3D__REQUIRES_GRAD = NORMALIZATION_LAYERS_111__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM3D__SUB_MODULE = NORMALIZATION_LAYERS_111__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM3D__OPTIMIZER = NORMALIZATION_LAYERS_111__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM3D__LOSS = NORMALIZATION_LAYERS_111__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Eps</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM3D__EPS = NORMALIZATION_LAYERS_111__EPS;
+
+	/**
+	 * The feature id for the '<em><b>Affine</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM3D__AFFINE = NORMALIZATION_LAYERS_111__AFFINE;
+
+	/**
+	 * The feature id for the '<em><b>Num features</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM3D__NUM_FEATURES = NORMALIZATION_LAYERS_111__NUM_FEATURES;
+
+	/**
+	 * The feature id for the '<em><b>Momentum</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM3D__MOMENTUM = NORMALIZATION_LAYERS_111__MOMENTUM;
+
+	/**
+	 * The feature id for the '<em><b>Track running stats</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM3D__TRACK_RUNNING_STATS = NORMALIZATION_LAYERS_111__TRACK_RUNNING_STATS;
+
+	/**
+	 * The number of structural features of the '<em>Batch Norm3d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM3D_FEATURE_COUNT = NORMALIZATION_LAYERS_111_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Batch Norm3d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int BATCH_NORM3D_OPERATION_COUNT = NORMALIZATION_LAYERS_111_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.SyncBatchNormImpl <em>Sync Batch Norm</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.SyncBatchNormImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl#getSyncBatchNorm()
+	 * @generated
+	 */
+	int SYNC_BATCH_NORM = 10;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SYNC_BATCH_NORM__BASE_CLASS = NORMALIZATION_LAYERS_111__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SYNC_BATCH_NORM__NAME = NORMALIZATION_LAYERS_111__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SYNC_BATCH_NORM__DATA = NORMALIZATION_LAYERS_111__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SYNC_BATCH_NORM__REQUIRES_GRAD = NORMALIZATION_LAYERS_111__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SYNC_BATCH_NORM__SUB_MODULE = NORMALIZATION_LAYERS_111__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SYNC_BATCH_NORM__OPTIMIZER = NORMALIZATION_LAYERS_111__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SYNC_BATCH_NORM__LOSS = NORMALIZATION_LAYERS_111__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Eps</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SYNC_BATCH_NORM__EPS = NORMALIZATION_LAYERS_111__EPS;
+
+	/**
+	 * The feature id for the '<em><b>Affine</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SYNC_BATCH_NORM__AFFINE = NORMALIZATION_LAYERS_111__AFFINE;
+
+	/**
+	 * The feature id for the '<em><b>Num features</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SYNC_BATCH_NORM__NUM_FEATURES = NORMALIZATION_LAYERS_111__NUM_FEATURES;
+
+	/**
+	 * The feature id for the '<em><b>Momentum</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SYNC_BATCH_NORM__MOMENTUM = NORMALIZATION_LAYERS_111__MOMENTUM;
+
+	/**
+	 * The feature id for the '<em><b>Track running stats</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SYNC_BATCH_NORM__TRACK_RUNNING_STATS = NORMALIZATION_LAYERS_111__TRACK_RUNNING_STATS;
+
+	/**
+	 * The feature id for the '<em><b>Process group</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SYNC_BATCH_NORM__PROCESS_GROUP = NORMALIZATION_LAYERS_111_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Sync Batch Norm</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SYNC_BATCH_NORM_FEATURE_COUNT = NORMALIZATION_LAYERS_111_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Sync Batch Norm</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SYNC_BATCH_NORM_OPERATION_COUNT = NORMALIZATION_LAYERS_111_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.InstanceNorm1dImpl <em>Instance Norm1d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.InstanceNorm1dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl#getInstanceNorm1d()
+	 * @generated
+	 */
+	int INSTANCE_NORM1D = 11;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM1D__BASE_CLASS = NORMALIZATION_LAYERS_111__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM1D__NAME = NORMALIZATION_LAYERS_111__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM1D__DATA = NORMALIZATION_LAYERS_111__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM1D__REQUIRES_GRAD = NORMALIZATION_LAYERS_111__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM1D__SUB_MODULE = NORMALIZATION_LAYERS_111__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM1D__OPTIMIZER = NORMALIZATION_LAYERS_111__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM1D__LOSS = NORMALIZATION_LAYERS_111__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Eps</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM1D__EPS = NORMALIZATION_LAYERS_111__EPS;
+
+	/**
+	 * The feature id for the '<em><b>Affine</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM1D__AFFINE = NORMALIZATION_LAYERS_111__AFFINE;
+
+	/**
+	 * The feature id for the '<em><b>Num features</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM1D__NUM_FEATURES = NORMALIZATION_LAYERS_111__NUM_FEATURES;
+
+	/**
+	 * The feature id for the '<em><b>Momentum</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM1D__MOMENTUM = NORMALIZATION_LAYERS_111__MOMENTUM;
+
+	/**
+	 * The feature id for the '<em><b>Track running stats</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM1D__TRACK_RUNNING_STATS = NORMALIZATION_LAYERS_111__TRACK_RUNNING_STATS;
+
+	/**
+	 * The number of structural features of the '<em>Instance Norm1d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM1D_FEATURE_COUNT = NORMALIZATION_LAYERS_111_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Instance Norm1d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM1D_OPERATION_COUNT = NORMALIZATION_LAYERS_111_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.InstanceNorm2dImpl <em>Instance Norm2d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.InstanceNorm2dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl#getInstanceNorm2d()
+	 * @generated
+	 */
+	int INSTANCE_NORM2D = 12;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM2D__BASE_CLASS = NORMALIZATION_LAYERS_111__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM2D__NAME = NORMALIZATION_LAYERS_111__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM2D__DATA = NORMALIZATION_LAYERS_111__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM2D__REQUIRES_GRAD = NORMALIZATION_LAYERS_111__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM2D__SUB_MODULE = NORMALIZATION_LAYERS_111__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM2D__OPTIMIZER = NORMALIZATION_LAYERS_111__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM2D__LOSS = NORMALIZATION_LAYERS_111__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Eps</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM2D__EPS = NORMALIZATION_LAYERS_111__EPS;
+
+	/**
+	 * The feature id for the '<em><b>Affine</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM2D__AFFINE = NORMALIZATION_LAYERS_111__AFFINE;
+
+	/**
+	 * The feature id for the '<em><b>Num features</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM2D__NUM_FEATURES = NORMALIZATION_LAYERS_111__NUM_FEATURES;
+
+	/**
+	 * The feature id for the '<em><b>Momentum</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM2D__MOMENTUM = NORMALIZATION_LAYERS_111__MOMENTUM;
+
+	/**
+	 * The feature id for the '<em><b>Track running stats</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM2D__TRACK_RUNNING_STATS = NORMALIZATION_LAYERS_111__TRACK_RUNNING_STATS;
+
+	/**
+	 * The number of structural features of the '<em>Instance Norm2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM2D_FEATURE_COUNT = NORMALIZATION_LAYERS_111_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Instance Norm2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM2D_OPERATION_COUNT = NORMALIZATION_LAYERS_111_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.InstanceNorm3dImpl <em>Instance Norm3d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.InstanceNorm3dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl#getInstanceNorm3d()
+	 * @generated
+	 */
+	int INSTANCE_NORM3D = 13;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM3D__BASE_CLASS = NORMALIZATION_LAYERS_111__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM3D__NAME = NORMALIZATION_LAYERS_111__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM3D__DATA = NORMALIZATION_LAYERS_111__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM3D__REQUIRES_GRAD = NORMALIZATION_LAYERS_111__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM3D__SUB_MODULE = NORMALIZATION_LAYERS_111__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM3D__OPTIMIZER = NORMALIZATION_LAYERS_111__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM3D__LOSS = NORMALIZATION_LAYERS_111__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Eps</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM3D__EPS = NORMALIZATION_LAYERS_111__EPS;
+
+	/**
+	 * The feature id for the '<em><b>Affine</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM3D__AFFINE = NORMALIZATION_LAYERS_111__AFFINE;
+
+	/**
+	 * The feature id for the '<em><b>Num features</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM3D__NUM_FEATURES = NORMALIZATION_LAYERS_111__NUM_FEATURES;
+
+	/**
+	 * The feature id for the '<em><b>Momentum</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM3D__MOMENTUM = NORMALIZATION_LAYERS_111__MOMENTUM;
+
+	/**
+	 * The feature id for the '<em><b>Track running stats</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM3D__TRACK_RUNNING_STATS = NORMALIZATION_LAYERS_111__TRACK_RUNNING_STATS;
+
+	/**
+	 * The number of structural features of the '<em>Instance Norm3d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM3D_FEATURE_COUNT = NORMALIZATION_LAYERS_111_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Instance Norm3d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int INSTANCE_NORM3D_OPERATION_COUNT = NORMALIZATION_LAYERS_111_OPERATION_COUNT + 0;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers <em>Normalization layers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Normalization layers</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers
+	 * @generated
+	 */
+	EClass getNormalization_layers();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1 <em>Normalization layers 1</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Normalization layers 1</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1
+	 * @generated
+	 */
+	EClass getNormalization_layers_1();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1#getEps <em>Eps</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Eps</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1#getEps()
+	 * @see #getNormalization_layers_1()
+	 * @generated
+	 */
+	EAttribute getNormalization_layers_1_Eps();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LayerNorm <em>Layer Norm</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Layer Norm</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LayerNorm
+	 * @generated
+	 */
+	EClass getLayerNorm();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LayerNorm#getNormalized_shape <em>Normalized shape</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Normalized shape</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LayerNorm#getNormalized_shape()
+	 * @see #getLayerNorm()
+	 * @generated
+	 */
+	EAttribute getLayerNorm_Normalized_shape();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LayerNorm#isElementwise_affine <em>Elementwise affine</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Elementwise affine</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LayerNorm#isElementwise_affine()
+	 * @see #getLayerNorm()
+	 * @generated
+	 */
+	EAttribute getLayerNorm_Elementwise_affine();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LocalResponseNorm <em>Local Response Norm</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Local Response Norm</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LocalResponseNorm
+	 * @generated
+	 */
+	EClass getLocalResponseNorm();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LocalResponseNorm#getSize <em>Size</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Size</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LocalResponseNorm#getSize()
+	 * @see #getLocalResponseNorm()
+	 * @generated
+	 */
+	EAttribute getLocalResponseNorm_Size();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LocalResponseNorm#getAlpha <em>Alpha</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Alpha</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LocalResponseNorm#getAlpha()
+	 * @see #getLocalResponseNorm()
+	 * @generated
+	 */
+	EAttribute getLocalResponseNorm_Alpha();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LocalResponseNorm#getBeta <em>Beta</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Beta</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LocalResponseNorm#getBeta()
+	 * @see #getLocalResponseNorm()
+	 * @generated
+	 */
+	EAttribute getLocalResponseNorm_Beta();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LocalResponseNorm#getK <em>K</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>K</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LocalResponseNorm#getK()
+	 * @see #getLocalResponseNorm()
+	 * @generated
+	 */
+	EAttribute getLocalResponseNorm_K();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1_1 <em>Normalization layers 11</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Normalization layers 11</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1_1
+	 * @generated
+	 */
+	EClass getNormalization_layers_1_1();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1_1#isAffine <em>Affine</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Affine</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1_1#isAffine()
+	 * @see #getNormalization_layers_1_1()
+	 * @generated
+	 */
+	EAttribute getNormalization_layers_1_1_Affine();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1_1_1 <em>Normalization layers 111</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Normalization layers 111</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1_1_1
+	 * @generated
+	 */
+	EClass getNormalization_layers_1_1_1();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1_1_1#getNum_features <em>Num features</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Num features</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1_1_1#getNum_features()
+	 * @see #getNormalization_layers_1_1_1()
+	 * @generated
+	 */
+	EAttribute getNormalization_layers_1_1_1_Num_features();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1_1_1#getMomentum <em>Momentum</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Momentum</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1_1_1#getMomentum()
+	 * @see #getNormalization_layers_1_1_1()
+	 * @generated
+	 */
+	EAttribute getNormalization_layers_1_1_1_Momentum();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1_1_1#isTrack_running_stats <em>Track running stats</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Track running stats</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1_1_1#isTrack_running_stats()
+	 * @see #getNormalization_layers_1_1_1()
+	 * @generated
+	 */
+	EAttribute getNormalization_layers_1_1_1_Track_running_stats();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.GroupNorm <em>Group Norm</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Group Norm</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.GroupNorm
+	 * @generated
+	 */
+	EClass getGroupNorm();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.GroupNorm#getNum_groups <em>Num groups</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Num groups</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.GroupNorm#getNum_groups()
+	 * @see #getGroupNorm()
+	 * @generated
+	 */
+	EAttribute getGroupNorm_Num_groups();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.GroupNorm#getNum_channels <em>Num channels</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Num channels</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.GroupNorm#getNum_channels()
+	 * @see #getGroupNorm()
+	 * @generated
+	 */
+	EAttribute getGroupNorm_Num_channels();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.BatchNorm1d <em>Batch Norm1d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Batch Norm1d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.BatchNorm1d
+	 * @generated
+	 */
+	EClass getBatchNorm1d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.BatchNorm2d <em>Batch Norm2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Batch Norm2d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.BatchNorm2d
+	 * @generated
+	 */
+	EClass getBatchNorm2d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.BatchNorm3d <em>Batch Norm3d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Batch Norm3d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.BatchNorm3d
+	 * @generated
+	 */
+	EClass getBatchNorm3d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.SyncBatchNorm <em>Sync Batch Norm</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Sync Batch Norm</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.SyncBatchNorm
+	 * @generated
+	 */
+	EClass getSyncBatchNorm();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.SyncBatchNorm#getProcess_group <em>Process group</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Process group</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.SyncBatchNorm#getProcess_group()
+	 * @see #getSyncBatchNorm()
+	 * @generated
+	 */
+	EAttribute getSyncBatchNorm_Process_group();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.InstanceNorm1d <em>Instance Norm1d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Instance Norm1d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.InstanceNorm1d
+	 * @generated
+	 */
+	EClass getInstanceNorm1d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.InstanceNorm2d <em>Instance Norm2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Instance Norm2d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.InstanceNorm2d
+	 * @generated
+	 */
+	EClass getInstanceNorm2d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.InstanceNorm3d <em>Instance Norm3d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Instance Norm3d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.InstanceNorm3d
+	 * @generated
+	 */
+	EClass getInstanceNorm3d();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	Normalization_layersFactory getNormalization_layersFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersImpl <em>Normalization layers</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl#getNormalization_layers()
+		 * @generated
+		 */
+		EClass NORMALIZATION_LAYERS = eINSTANCE.getNormalization_layers();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layers_1Impl <em>Normalization layers 1</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layers_1Impl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl#getNormalization_layers_1()
+		 * @generated
+		 */
+		EClass NORMALIZATION_LAYERS_1 = eINSTANCE.getNormalization_layers_1();
+
+		/**
+		 * The meta object literal for the '<em><b>Eps</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute NORMALIZATION_LAYERS_1__EPS = eINSTANCE.getNormalization_layers_1_Eps();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.LayerNormImpl <em>Layer Norm</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.LayerNormImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl#getLayerNorm()
+		 * @generated
+		 */
+		EClass LAYER_NORM = eINSTANCE.getLayerNorm();
+
+		/**
+		 * The meta object literal for the '<em><b>Normalized shape</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LAYER_NORM__NORMALIZED_SHAPE = eINSTANCE.getLayerNorm_Normalized_shape();
+
+		/**
+		 * The meta object literal for the '<em><b>Elementwise affine</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LAYER_NORM__ELEMENTWISE_AFFINE = eINSTANCE.getLayerNorm_Elementwise_affine();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.LocalResponseNormImpl <em>Local Response Norm</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.LocalResponseNormImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl#getLocalResponseNorm()
+		 * @generated
+		 */
+		EClass LOCAL_RESPONSE_NORM = eINSTANCE.getLocalResponseNorm();
+
+		/**
+		 * The meta object literal for the '<em><b>Size</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LOCAL_RESPONSE_NORM__SIZE = eINSTANCE.getLocalResponseNorm_Size();
+
+		/**
+		 * The meta object literal for the '<em><b>Alpha</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LOCAL_RESPONSE_NORM__ALPHA = eINSTANCE.getLocalResponseNorm_Alpha();
+
+		/**
+		 * The meta object literal for the '<em><b>Beta</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LOCAL_RESPONSE_NORM__BETA = eINSTANCE.getLocalResponseNorm_Beta();
+
+		/**
+		 * The meta object literal for the '<em><b>K</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute LOCAL_RESPONSE_NORM__K = eINSTANCE.getLocalResponseNorm_K();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layers_1_1Impl <em>Normalization layers 11</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layers_1_1Impl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl#getNormalization_layers_1_1()
+		 * @generated
+		 */
+		EClass NORMALIZATION_LAYERS_11 = eINSTANCE.getNormalization_layers_1_1();
+
+		/**
+		 * The meta object literal for the '<em><b>Affine</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute NORMALIZATION_LAYERS_11__AFFINE = eINSTANCE.getNormalization_layers_1_1_Affine();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layers_1_1_1Impl <em>Normalization layers 111</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layers_1_1_1Impl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl#getNormalization_layers_1_1_1()
+		 * @generated
+		 */
+		EClass NORMALIZATION_LAYERS_111 = eINSTANCE.getNormalization_layers_1_1_1();
+
+		/**
+		 * The meta object literal for the '<em><b>Num features</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute NORMALIZATION_LAYERS_111__NUM_FEATURES = eINSTANCE.getNormalization_layers_1_1_1_Num_features();
+
+		/**
+		 * The meta object literal for the '<em><b>Momentum</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute NORMALIZATION_LAYERS_111__MOMENTUM = eINSTANCE.getNormalization_layers_1_1_1_Momentum();
+
+		/**
+		 * The meta object literal for the '<em><b>Track running stats</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute NORMALIZATION_LAYERS_111__TRACK_RUNNING_STATS = eINSTANCE.getNormalization_layers_1_1_1_Track_running_stats();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.GroupNormImpl <em>Group Norm</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.GroupNormImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl#getGroupNorm()
+		 * @generated
+		 */
+		EClass GROUP_NORM = eINSTANCE.getGroupNorm();
+
+		/**
+		 * The meta object literal for the '<em><b>Num groups</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute GROUP_NORM__NUM_GROUPS = eINSTANCE.getGroupNorm_Num_groups();
+
+		/**
+		 * The meta object literal for the '<em><b>Num channels</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute GROUP_NORM__NUM_CHANNELS = eINSTANCE.getGroupNorm_Num_channels();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.BatchNorm1dImpl <em>Batch Norm1d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.BatchNorm1dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl#getBatchNorm1d()
+		 * @generated
+		 */
+		EClass BATCH_NORM1D = eINSTANCE.getBatchNorm1d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.BatchNorm2dImpl <em>Batch Norm2d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.BatchNorm2dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl#getBatchNorm2d()
+		 * @generated
+		 */
+		EClass BATCH_NORM2D = eINSTANCE.getBatchNorm2d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.BatchNorm3dImpl <em>Batch Norm3d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.BatchNorm3dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl#getBatchNorm3d()
+		 * @generated
+		 */
+		EClass BATCH_NORM3D = eINSTANCE.getBatchNorm3d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.SyncBatchNormImpl <em>Sync Batch Norm</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.SyncBatchNormImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl#getSyncBatchNorm()
+		 * @generated
+		 */
+		EClass SYNC_BATCH_NORM = eINSTANCE.getSyncBatchNorm();
+
+		/**
+		 * The meta object literal for the '<em><b>Process group</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SYNC_BATCH_NORM__PROCESS_GROUP = eINSTANCE.getSyncBatchNorm_Process_group();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.InstanceNorm1dImpl <em>Instance Norm1d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.InstanceNorm1dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl#getInstanceNorm1d()
+		 * @generated
+		 */
+		EClass INSTANCE_NORM1D = eINSTANCE.getInstanceNorm1d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.InstanceNorm2dImpl <em>Instance Norm2d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.InstanceNorm2dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl#getInstanceNorm2d()
+		 * @generated
+		 */
+		EClass INSTANCE_NORM2D = eINSTANCE.getInstanceNorm2d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.InstanceNorm3dImpl <em>Instance Norm3d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.InstanceNorm3dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl#getInstanceNorm3d()
+		 * @generated
+		 */
+		EClass INSTANCE_NORM3D = eINSTANCE.getInstanceNorm3d();
+
+	}
+
+} //Normalization_layersPackage
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/Normalization_layers_1.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/Normalization_layers_1.java
new file mode 100644
index 0000000..acbed68
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/Normalization_layers_1.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Normalization layers 1</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1#getEps <em>Eps</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage#getNormalization_layers_1()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Normalization_layers_1 extends Normalization_layers {
+	/**
+	 * Returns the value of the '<em><b>Eps</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Eps</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Eps</em>' attribute.
+	 * @see #setEps(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage#getNormalization_layers_1_Eps()
+	 * @model dataType="org.eclipse.uml2.types.Real" ordered="false"
+	 * @generated
+	 */
+	double getEps();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1#getEps <em>Eps</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Eps</em>' attribute.
+	 * @see #getEps()
+	 * @generated
+	 */
+	void setEps(double value);
+
+} // Normalization_layers_1
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/Normalization_layers_1_1.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/Normalization_layers_1_1.java
new file mode 100644
index 0000000..abb248f
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/Normalization_layers_1_1.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Normalization layers 11</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1_1#isAffine <em>Affine</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage#getNormalization_layers_1_1()
+ * @model
+ * @generated
+ */
+public interface Normalization_layers_1_1 extends Normalization_layers_1 {
+	/**
+	 * Returns the value of the '<em><b>Affine</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Affine</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Affine</em>' attribute.
+	 * @see #setAffine(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage#getNormalization_layers_1_1_Affine()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isAffine();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1_1#isAffine <em>Affine</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Affine</em>' attribute.
+	 * @see #isAffine()
+	 * @generated
+	 */
+	void setAffine(boolean value);
+
+} // Normalization_layers_1_1
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/Normalization_layers_1_1_1.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/Normalization_layers_1_1_1.java
new file mode 100644
index 0000000..c17194d
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/Normalization_layers_1_1_1.java
@@ -0,0 +1,113 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Normalization layers 111</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1_1_1#getNum_features <em>Num features</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1_1_1#getMomentum <em>Momentum</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1_1_1#isTrack_running_stats <em>Track running stats</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage#getNormalization_layers_1_1_1()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Normalization_layers_1_1_1 extends Normalization_layers_1_1 {
+	/**
+	 * Returns the value of the '<em><b>Num features</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Num features</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Num features</em>' attribute.
+	 * @see #setNum_features(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage#getNormalization_layers_1_1_1_Num_features()
+	 * @model dataType="org.eclipse.uml2.types.Integer" required="true" ordered="false"
+	 * @generated
+	 */
+	int getNum_features();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1_1_1#getNum_features <em>Num features</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Num features</em>' attribute.
+	 * @see #getNum_features()
+	 * @generated
+	 */
+	void setNum_features(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Momentum</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Momentum</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Momentum</em>' attribute.
+	 * @see #setMomentum(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage#getNormalization_layers_1_1_1_Momentum()
+	 * @model dataType="org.eclipse.uml2.types.Real" ordered="false"
+	 * @generated
+	 */
+	double getMomentum();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1_1_1#getMomentum <em>Momentum</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Momentum</em>' attribute.
+	 * @see #getMomentum()
+	 * @generated
+	 */
+	void setMomentum(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Track running stats</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Track running stats</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Track running stats</em>' attribute.
+	 * @see #setTrack_running_stats(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage#getNormalization_layers_1_1_1_Track_running_stats()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 *        annotation="http://www.eclipse.org/uml2/2.0.0/UML originalName='track_running_stats '"
+	 * @generated
+	 */
+	boolean isTrack_running_stats();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1_1_1#isTrack_running_stats <em>Track running stats</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Track running stats</em>' attribute.
+	 * @see #isTrack_running_stats()
+	 * @generated
+	 */
+	void setTrack_running_stats(boolean value);
+
+} // Normalization_layers_1_1_1
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/SyncBatchNorm.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/SyncBatchNorm.java
new file mode 100644
index 0000000..f16b3ea
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/SyncBatchNorm.java
@@ -0,0 +1,59 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Sync Batch Norm</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.SyncBatchNorm#getProcess_group <em>Process group</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage#getSyncBatchNorm()
+ * @model
+ * @generated
+ */
+public interface SyncBatchNorm extends Normalization_layers_1_1_1 {
+	/**
+	 * Returns the value of the '<em><b>Process group</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Process group</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Process group</em>' attribute.
+	 * @see #setProcess_group(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage#getSyncBatchNorm_Process_group()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 *        annotation="http://www.eclipse.org/uml2/2.0.0/UML originalName='process_group '"
+	 * @generated
+	 */
+	int getProcess_group();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.SyncBatchNorm#getProcess_group <em>Process group</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Process group</em>' attribute.
+	 * @see #getProcess_group()
+	 * @generated
+	 */
+	void setProcess_group(int value);
+
+} // SyncBatchNorm
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/BatchNorm1dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/BatchNorm1dImpl.java
new file mode 100644
index 0000000..d0d856b
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/BatchNorm1dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.BatchNorm1d;
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Batch Norm1d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class BatchNorm1dImpl extends Normalization_layers_1_1_1Impl implements BatchNorm1d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected BatchNorm1dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Normalization_layersPackage.Literals.BATCH_NORM1D;
+	}
+
+} //BatchNorm1dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/BatchNorm2dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/BatchNorm2dImpl.java
new file mode 100644
index 0000000..22d357b
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/BatchNorm2dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.BatchNorm2d;
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Batch Norm2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class BatchNorm2dImpl extends Normalization_layers_1_1_1Impl implements BatchNorm2d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected BatchNorm2dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Normalization_layersPackage.Literals.BATCH_NORM2D;
+	}
+
+} //BatchNorm2dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/BatchNorm3dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/BatchNorm3dImpl.java
new file mode 100644
index 0000000..2269d0e
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/BatchNorm3dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.BatchNorm3d;
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Batch Norm3d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class BatchNorm3dImpl extends Normalization_layers_1_1_1Impl implements BatchNorm3d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected BatchNorm3dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Normalization_layersPackage.Literals.BATCH_NORM3D;
+	}
+
+} //BatchNorm3dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/GroupNormImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/GroupNormImpl.java
new file mode 100644
index 0000000..859aa9e
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/GroupNormImpl.java
@@ -0,0 +1,229 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.GroupNorm;
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Group Norm</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.GroupNormImpl#getNum_groups <em>Num groups</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.GroupNormImpl#getNum_channels <em>Num channels</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class GroupNormImpl extends Normalization_layers_1_1Impl implements GroupNorm {
+	/**
+	 * The default value of the '{@link #getNum_groups() <em>Num groups</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNum_groups()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int NUM_GROUPS_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getNum_groups() <em>Num groups</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNum_groups()
+	 * @generated
+	 * @ordered
+	 */
+	protected int num_groups = NUM_GROUPS_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getNum_channels() <em>Num channels</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNum_channels()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int NUM_CHANNELS_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getNum_channels() <em>Num channels</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNum_channels()
+	 * @generated
+	 * @ordered
+	 */
+	protected int num_channels = NUM_CHANNELS_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected GroupNormImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Normalization_layersPackage.Literals.GROUP_NORM;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getNum_groups() {
+		return num_groups;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setNum_groups(int newNum_groups) {
+		int oldNum_groups = num_groups;
+		num_groups = newNum_groups;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Normalization_layersPackage.GROUP_NORM__NUM_GROUPS, oldNum_groups, num_groups));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getNum_channels() {
+		return num_channels;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setNum_channels(int newNum_channels) {
+		int oldNum_channels = num_channels;
+		num_channels = newNum_channels;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Normalization_layersPackage.GROUP_NORM__NUM_CHANNELS, oldNum_channels, num_channels));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Normalization_layersPackage.GROUP_NORM__NUM_GROUPS:
+				return getNum_groups();
+			case Normalization_layersPackage.GROUP_NORM__NUM_CHANNELS:
+				return getNum_channels();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Normalization_layersPackage.GROUP_NORM__NUM_GROUPS:
+				setNum_groups((Integer)newValue);
+				return;
+			case Normalization_layersPackage.GROUP_NORM__NUM_CHANNELS:
+				setNum_channels((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Normalization_layersPackage.GROUP_NORM__NUM_GROUPS:
+				setNum_groups(NUM_GROUPS_EDEFAULT);
+				return;
+			case Normalization_layersPackage.GROUP_NORM__NUM_CHANNELS:
+				setNum_channels(NUM_CHANNELS_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Normalization_layersPackage.GROUP_NORM__NUM_GROUPS:
+				return num_groups != NUM_GROUPS_EDEFAULT;
+			case Normalization_layersPackage.GROUP_NORM__NUM_CHANNELS:
+				return num_channels != NUM_CHANNELS_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (num_groups: "); //$NON-NLS-1$
+		result.append(num_groups);
+		result.append(", num_channels: "); //$NON-NLS-1$
+		result.append(num_channels);
+		result.append(')');
+		return result.toString();
+	}
+
+} //GroupNormImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/InstanceNorm1dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/InstanceNorm1dImpl.java
new file mode 100644
index 0000000..5e1be3a
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/InstanceNorm1dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.InstanceNorm1d;
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Instance Norm1d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class InstanceNorm1dImpl extends Normalization_layers_1_1_1Impl implements InstanceNorm1d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected InstanceNorm1dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Normalization_layersPackage.Literals.INSTANCE_NORM1D;
+	}
+
+} //InstanceNorm1dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/InstanceNorm2dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/InstanceNorm2dImpl.java
new file mode 100644
index 0000000..656a8b5
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/InstanceNorm2dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.InstanceNorm2d;
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Instance Norm2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class InstanceNorm2dImpl extends Normalization_layers_1_1_1Impl implements InstanceNorm2d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected InstanceNorm2dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Normalization_layersPackage.Literals.INSTANCE_NORM2D;
+	}
+
+} //InstanceNorm2dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/InstanceNorm3dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/InstanceNorm3dImpl.java
new file mode 100644
index 0000000..3c52981
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/InstanceNorm3dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.InstanceNorm3d;
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Instance Norm3d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class InstanceNorm3dImpl extends Normalization_layers_1_1_1Impl implements InstanceNorm3d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected InstanceNorm3dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Normalization_layersPackage.Literals.INSTANCE_NORM3D;
+	}
+
+} //InstanceNorm3dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/LayerNormImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/LayerNormImpl.java
new file mode 100644
index 0000000..a0b5555
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/LayerNormImpl.java
@@ -0,0 +1,217 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LayerNorm;
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Layer Norm</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.LayerNormImpl#getNormalized_shape <em>Normalized shape</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.LayerNormImpl#isElementwise_affine <em>Elementwise affine</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class LayerNormImpl extends Normalization_layers_1Impl implements LayerNorm {
+	/**
+	 * The cached value of the '{@link #getNormalized_shape() <em>Normalized shape</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNormalized_shape()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Integer> normalized_shape;
+
+	/**
+	 * The default value of the '{@link #isElementwise_affine() <em>Elementwise affine</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isElementwise_affine()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean ELEMENTWISE_AFFINE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isElementwise_affine() <em>Elementwise affine</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isElementwise_affine()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean elementwise_affine = ELEMENTWISE_AFFINE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LayerNormImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Normalization_layersPackage.Literals.LAYER_NORM;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Integer> getNormalized_shape() {
+		if (normalized_shape == null) {
+			normalized_shape = new EDataTypeUniqueEList<Integer>(Integer.class, this, Normalization_layersPackage.LAYER_NORM__NORMALIZED_SHAPE);
+		}
+		return normalized_shape;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isElementwise_affine() {
+		return elementwise_affine;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setElementwise_affine(boolean newElementwise_affine) {
+		boolean oldElementwise_affine = elementwise_affine;
+		elementwise_affine = newElementwise_affine;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Normalization_layersPackage.LAYER_NORM__ELEMENTWISE_AFFINE, oldElementwise_affine, elementwise_affine));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Normalization_layersPackage.LAYER_NORM__NORMALIZED_SHAPE:
+				return getNormalized_shape();
+			case Normalization_layersPackage.LAYER_NORM__ELEMENTWISE_AFFINE:
+				return isElementwise_affine();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Normalization_layersPackage.LAYER_NORM__NORMALIZED_SHAPE:
+				getNormalized_shape().clear();
+				getNormalized_shape().addAll((Collection<? extends Integer>)newValue);
+				return;
+			case Normalization_layersPackage.LAYER_NORM__ELEMENTWISE_AFFINE:
+				setElementwise_affine((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Normalization_layersPackage.LAYER_NORM__NORMALIZED_SHAPE:
+				getNormalized_shape().clear();
+				return;
+			case Normalization_layersPackage.LAYER_NORM__ELEMENTWISE_AFFINE:
+				setElementwise_affine(ELEMENTWISE_AFFINE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Normalization_layersPackage.LAYER_NORM__NORMALIZED_SHAPE:
+				return normalized_shape != null && !normalized_shape.isEmpty();
+			case Normalization_layersPackage.LAYER_NORM__ELEMENTWISE_AFFINE:
+				return elementwise_affine != ELEMENTWISE_AFFINE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (normalized_shape: "); //$NON-NLS-1$
+		result.append(normalized_shape);
+		result.append(", elementwise_affine: "); //$NON-NLS-1$
+		result.append(elementwise_affine);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LayerNormImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/LocalResponseNormImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/LocalResponseNormImpl.java
new file mode 100644
index 0000000..12d3b9e
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/LocalResponseNormImpl.java
@@ -0,0 +1,341 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LocalResponseNorm;
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Local Response Norm</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.LocalResponseNormImpl#getSize <em>Size</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.LocalResponseNormImpl#getAlpha <em>Alpha</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.LocalResponseNormImpl#getBeta <em>Beta</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.LocalResponseNormImpl#getK <em>K</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class LocalResponseNormImpl extends Normalization_layersImpl implements LocalResponseNorm {
+	/**
+	 * The default value of the '{@link #getSize() <em>Size</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSize()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int SIZE_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getSize() <em>Size</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSize()
+	 * @generated
+	 * @ordered
+	 */
+	protected int size = SIZE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getAlpha() <em>Alpha</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAlpha()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double ALPHA_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getAlpha() <em>Alpha</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getAlpha()
+	 * @generated
+	 * @ordered
+	 */
+	protected double alpha = ALPHA_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getBeta() <em>Beta</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBeta()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double BETA_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getBeta() <em>Beta</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBeta()
+	 * @generated
+	 * @ordered
+	 */
+	protected double beta = BETA_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getK() <em>K</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getK()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double K_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getK() <em>K</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getK()
+	 * @generated
+	 * @ordered
+	 */
+	protected double k = K_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LocalResponseNormImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Normalization_layersPackage.Literals.LOCAL_RESPONSE_NORM;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getSize() {
+		return size;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setSize(int newSize) {
+		int oldSize = size;
+		size = newSize;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Normalization_layersPackage.LOCAL_RESPONSE_NORM__SIZE, oldSize, size));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getAlpha() {
+		return alpha;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setAlpha(double newAlpha) {
+		double oldAlpha = alpha;
+		alpha = newAlpha;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Normalization_layersPackage.LOCAL_RESPONSE_NORM__ALPHA, oldAlpha, alpha));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getBeta() {
+		return beta;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBeta(double newBeta) {
+		double oldBeta = beta;
+		beta = newBeta;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Normalization_layersPackage.LOCAL_RESPONSE_NORM__BETA, oldBeta, beta));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getK() {
+		return k;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setK(double newK) {
+		double oldK = k;
+		k = newK;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Normalization_layersPackage.LOCAL_RESPONSE_NORM__K, oldK, k));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Normalization_layersPackage.LOCAL_RESPONSE_NORM__SIZE:
+				return getSize();
+			case Normalization_layersPackage.LOCAL_RESPONSE_NORM__ALPHA:
+				return getAlpha();
+			case Normalization_layersPackage.LOCAL_RESPONSE_NORM__BETA:
+				return getBeta();
+			case Normalization_layersPackage.LOCAL_RESPONSE_NORM__K:
+				return getK();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Normalization_layersPackage.LOCAL_RESPONSE_NORM__SIZE:
+				setSize((Integer)newValue);
+				return;
+			case Normalization_layersPackage.LOCAL_RESPONSE_NORM__ALPHA:
+				setAlpha((Double)newValue);
+				return;
+			case Normalization_layersPackage.LOCAL_RESPONSE_NORM__BETA:
+				setBeta((Double)newValue);
+				return;
+			case Normalization_layersPackage.LOCAL_RESPONSE_NORM__K:
+				setK((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Normalization_layersPackage.LOCAL_RESPONSE_NORM__SIZE:
+				setSize(SIZE_EDEFAULT);
+				return;
+			case Normalization_layersPackage.LOCAL_RESPONSE_NORM__ALPHA:
+				setAlpha(ALPHA_EDEFAULT);
+				return;
+			case Normalization_layersPackage.LOCAL_RESPONSE_NORM__BETA:
+				setBeta(BETA_EDEFAULT);
+				return;
+			case Normalization_layersPackage.LOCAL_RESPONSE_NORM__K:
+				setK(K_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Normalization_layersPackage.LOCAL_RESPONSE_NORM__SIZE:
+				return size != SIZE_EDEFAULT;
+			case Normalization_layersPackage.LOCAL_RESPONSE_NORM__ALPHA:
+				return alpha != ALPHA_EDEFAULT;
+			case Normalization_layersPackage.LOCAL_RESPONSE_NORM__BETA:
+				return beta != BETA_EDEFAULT;
+			case Normalization_layersPackage.LOCAL_RESPONSE_NORM__K:
+				return k != K_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (size: "); //$NON-NLS-1$
+		result.append(size);
+		result.append(", alpha: "); //$NON-NLS-1$
+		result.append(alpha);
+		result.append(", beta: "); //$NON-NLS-1$
+		result.append(beta);
+		result.append(", k: "); //$NON-NLS-1$
+		result.append(k);
+		result.append(')');
+		return result.toString();
+	}
+
+} //LocalResponseNormImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/Normalization_layersFactoryImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/Normalization_layersFactoryImpl.java
new file mode 100644
index 0000000..fd7b2ff
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/Normalization_layersFactoryImpl.java
@@ -0,0 +1,226 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class Normalization_layersFactoryImpl extends EFactoryImpl implements Normalization_layersFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static Normalization_layersFactory init() {
+		try {
+			Normalization_layersFactory theNormalization_layersFactory = (Normalization_layersFactory)EPackage.Registry.INSTANCE.getEFactory(Normalization_layersPackage.eNS_URI);
+			if (theNormalization_layersFactory != null) {
+				return theNormalization_layersFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new Normalization_layersFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Normalization_layersFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case Normalization_layersPackage.LAYER_NORM: return createLayerNorm();
+			case Normalization_layersPackage.LOCAL_RESPONSE_NORM: return createLocalResponseNorm();
+			case Normalization_layersPackage.NORMALIZATION_LAYERS_11: return createNormalization_layers_1_1();
+			case Normalization_layersPackage.GROUP_NORM: return createGroupNorm();
+			case Normalization_layersPackage.BATCH_NORM1D: return createBatchNorm1d();
+			case Normalization_layersPackage.BATCH_NORM2D: return createBatchNorm2d();
+			case Normalization_layersPackage.BATCH_NORM3D: return createBatchNorm3d();
+			case Normalization_layersPackage.SYNC_BATCH_NORM: return createSyncBatchNorm();
+			case Normalization_layersPackage.INSTANCE_NORM1D: return createInstanceNorm1d();
+			case Normalization_layersPackage.INSTANCE_NORM2D: return createInstanceNorm2d();
+			case Normalization_layersPackage.INSTANCE_NORM3D: return createInstanceNorm3d();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public LayerNorm createLayerNorm() {
+		LayerNormImpl layerNorm = new LayerNormImpl();
+		return layerNorm;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public LocalResponseNorm createLocalResponseNorm() {
+		LocalResponseNormImpl localResponseNorm = new LocalResponseNormImpl();
+		return localResponseNorm;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Normalization_layers_1_1 createNormalization_layers_1_1() {
+		Normalization_layers_1_1Impl normalization_layers_1_1 = new Normalization_layers_1_1Impl();
+		return normalization_layers_1_1;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public GroupNorm createGroupNorm() {
+		GroupNormImpl groupNorm = new GroupNormImpl();
+		return groupNorm;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public BatchNorm1d createBatchNorm1d() {
+		BatchNorm1dImpl batchNorm1d = new BatchNorm1dImpl();
+		return batchNorm1d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public BatchNorm2d createBatchNorm2d() {
+		BatchNorm2dImpl batchNorm2d = new BatchNorm2dImpl();
+		return batchNorm2d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public BatchNorm3d createBatchNorm3d() {
+		BatchNorm3dImpl batchNorm3d = new BatchNorm3dImpl();
+		return batchNorm3d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public SyncBatchNorm createSyncBatchNorm() {
+		SyncBatchNormImpl syncBatchNorm = new SyncBatchNormImpl();
+		return syncBatchNorm;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public InstanceNorm1d createInstanceNorm1d() {
+		InstanceNorm1dImpl instanceNorm1d = new InstanceNorm1dImpl();
+		return instanceNorm1d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public InstanceNorm2d createInstanceNorm2d() {
+		InstanceNorm2dImpl instanceNorm2d = new InstanceNorm2dImpl();
+		return instanceNorm2d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public InstanceNorm3d createInstanceNorm3d() {
+		InstanceNorm3dImpl instanceNorm3d = new InstanceNorm3dImpl();
+		return instanceNorm3d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Normalization_layersPackage getNormalization_layersPackage() {
+		return (Normalization_layersPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static Normalization_layersPackage getPackage() {
+		return Normalization_layersPackage.eINSTANCE;
+	}
+
+} //Normalization_layersFactoryImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/Normalization_layersImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/Normalization_layersImpl.java
new file mode 100644
index 0000000..8ee3a25
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/Normalization_layersImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModelImpl;
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers;
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Normalization layers</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public abstract class Normalization_layersImpl extends ModelImpl implements Normalization_layers {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Normalization_layersImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Normalization_layersPackage.Literals.NORMALIZATION_LAYERS;
+	}
+
+} //Normalization_layersImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/Normalization_layersPackageImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/Normalization_layersPackageImpl.java
new file mode 100644
index 0000000..05237fc
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/Normalization_layersPackageImpl.java
@@ -0,0 +1,852 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.AIMLPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.Layer_weight_regularizersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModulePackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.BatchNorm1d;
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.BatchNorm2d;
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.BatchNorm3d;
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.GroupNorm;
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.InstanceNorm1d;
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.InstanceNorm2d;
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.InstanceNorm3d;
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LayerNorm;
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LocalResponseNorm;
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers;
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersFactory;
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1;
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1_1;
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1_1_1;
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.SyncBatchNorm;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.DatatypesPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl.DatatypesPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.impl.AIMLPackageImpl;
+
+import org.eclipse.uml2.types.TypesPackage;
+
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class Normalization_layersPackageImpl extends EPackageImpl implements Normalization_layersPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass normalization_layersEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass normalization_layers_1EClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass layerNormEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass localResponseNormEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass normalization_layers_1_1EClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass normalization_layers_1_1_1EClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass groupNormEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass batchNorm1dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass batchNorm2dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass batchNorm3dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass syncBatchNormEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass instanceNorm1dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass instanceNorm2dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass instanceNorm3dEClass = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private Normalization_layersPackageImpl() {
+		super(eNS_URI, Normalization_layersFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>This method is used to initialize {@link Normalization_layersPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static Normalization_layersPackage init() {
+		if (isInited) return (Normalization_layersPackage)EPackage.Registry.INSTANCE.getEPackage(Normalization_layersPackage.eNS_URI);
+
+		// Obtain or create and register package
+		Object registeredNormalization_layersPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		Normalization_layersPackageImpl theNormalization_layersPackage = registeredNormalization_layersPackage instanceof Normalization_layersPackageImpl ? (Normalization_layersPackageImpl)registeredNormalization_layersPackage : new Normalization_layersPackageImpl();
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		EcorePackage.eINSTANCE.eClass();
+		TypesPackage.eINSTANCE.eClass();
+		UMLPackage.eINSTANCE.eClass();
+
+		// Obtain or create and register interdependencies
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AIMLPackage.eNS_URI);
+		AIMLPackageImpl theAIMLPackage = (AIMLPackageImpl)(registeredPackage instanceof AIMLPackageImpl ? registeredPackage : AIMLPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		ModulePackageImpl theModulePackage = (ModulePackageImpl)(registeredPackage instanceof ModulePackageImpl ? registeredPackage : ModulePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(TensorPackage.eNS_URI);
+		TensorPackageImpl theTensorPackage = (TensorPackageImpl)(registeredPackage instanceof TensorPackageImpl ? registeredPackage : TensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DatatypesPackage.eNS_URI);
+		DatatypesPackageImpl theDatatypesPackage = (DatatypesPackageImpl)(registeredPackage instanceof DatatypesPackageImpl ? registeredPackage : DatatypesPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Pooling_layersPackage.eNS_URI);
+		Pooling_layersPackageImpl thePooling_layersPackage = (Pooling_layersPackageImpl)(registeredPackage instanceof Pooling_layersPackageImpl ? registeredPackage : Pooling_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Convolution_layersPackage.eNS_URI);
+		Convolution_layersPackageImpl theConvolution_layersPackage = (Convolution_layersPackageImpl)(registeredPackage instanceof Convolution_layersPackageImpl ? registeredPackage : Convolution_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_constraintsPackage.eNS_URI);
+		Layer_weight_constraintsPackageImpl theLayer_weight_constraintsPackage = (Layer_weight_constraintsPackageImpl)(registeredPackage instanceof Layer_weight_constraintsPackageImpl ? registeredPackage : Layer_weight_constraintsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Padding_layersPackage.eNS_URI);
+		Padding_layersPackageImpl thePadding_layersPackage = (Padding_layersPackageImpl)(registeredPackage instanceof Padding_layersPackageImpl ? registeredPackage : Padding_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NonLinearActivationsPackage.eNS_URI);
+		NonLinearActivationsPackageImpl theNonLinearActivationsPackage = (NonLinearActivationsPackageImpl)(registeredPackage instanceof NonLinearActivationsPackageImpl ? registeredPackage : NonLinearActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftMinMaxActivationsPackage.eNS_URI);
+		SoftMinMaxActivationsPackageImpl theSoftMinMaxActivationsPackage = (SoftMinMaxActivationsPackageImpl)(registeredPackage instanceof SoftMinMaxActivationsPackageImpl ? registeredPackage : SoftMinMaxActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Recurrent_layersPackage.eNS_URI);
+		Recurrent_layersPackageImpl theRecurrent_layersPackage = (Recurrent_layersPackageImpl)(registeredPackage instanceof Recurrent_layersPackageImpl ? registeredPackage : Recurrent_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Transformer_layersPackage.eNS_URI);
+		Transformer_layersPackageImpl theTransformer_layersPackage = (Transformer_layersPackageImpl)(registeredPackage instanceof Transformer_layersPackageImpl ? registeredPackage : Transformer_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Linear_layersPackage.eNS_URI);
+		Linear_layersPackageImpl theLinear_layersPackage = (Linear_layersPackageImpl)(registeredPackage instanceof Linear_layersPackageImpl ? registeredPackage : Linear_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Dropout_layersPackage.eNS_URI);
+		Dropout_layersPackageImpl theDropout_layersPackage = (Dropout_layersPackageImpl)(registeredPackage instanceof Dropout_layersPackageImpl ? registeredPackage : Dropout_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Sparse_layersPackage.eNS_URI);
+		Sparse_layersPackageImpl theSparse_layersPackage = (Sparse_layersPackageImpl)(registeredPackage instanceof Sparse_layersPackageImpl ? registeredPackage : Sparse_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Distance_functionsPackage.eNS_URI);
+		Distance_functionsPackageImpl theDistance_functionsPackage = (Distance_functionsPackageImpl)(registeredPackage instanceof Distance_functionsPackageImpl ? registeredPackage : Distance_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Loss_functionsPackage.eNS_URI);
+		Loss_functionsPackageImpl theLoss_functionsPackage = (Loss_functionsPackageImpl)(registeredPackage instanceof Loss_functionsPackageImpl ? registeredPackage : Loss_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Vision_layersPackage.eNS_URI);
+		Vision_layersPackageImpl theVision_layersPackage = (Vision_layersPackageImpl)(registeredPackage instanceof Vision_layersPackageImpl ? registeredPackage : Vision_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DataParallel_layersPackage.eNS_URI);
+		DataParallel_layersPackageImpl theDataParallel_layersPackage = (DataParallel_layersPackageImpl)(registeredPackage instanceof DataParallel_layersPackageImpl ? registeredPackage : DataParallel_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_regularizersPackage.eNS_URI);
+		Layer_weight_regularizersPackageImpl theLayer_weight_regularizersPackage = (Layer_weight_regularizersPackageImpl)(registeredPackage instanceof Layer_weight_regularizersPackageImpl ? registeredPackage : Layer_weight_regularizersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_initializersPackage.eNS_URI);
+		Layer_weight_initializersPackageImpl theLayer_weight_initializersPackage = (Layer_weight_initializersPackageImpl)(registeredPackage instanceof Layer_weight_initializersPackageImpl ? registeredPackage : Layer_weight_initializersPackage.eINSTANCE);
+
+		// Create package meta-data objects
+		theNormalization_layersPackage.createPackageContents();
+		theAIMLPackage.createPackageContents();
+		theModulePackage.createPackageContents();
+		theTensorPackage.createPackageContents();
+		theDatatypesPackage.createPackageContents();
+		thePooling_layersPackage.createPackageContents();
+		theConvolution_layersPackage.createPackageContents();
+		theLayer_weight_constraintsPackage.createPackageContents();
+		thePadding_layersPackage.createPackageContents();
+		theNonLinearActivationsPackage.createPackageContents();
+		theSoftMinMaxActivationsPackage.createPackageContents();
+		theRecurrent_layersPackage.createPackageContents();
+		theTransformer_layersPackage.createPackageContents();
+		theLinear_layersPackage.createPackageContents();
+		theDropout_layersPackage.createPackageContents();
+		theSparse_layersPackage.createPackageContents();
+		theDistance_functionsPackage.createPackageContents();
+		theLoss_functionsPackage.createPackageContents();
+		theVision_layersPackage.createPackageContents();
+		theDataParallel_layersPackage.createPackageContents();
+		theLayer_weight_regularizersPackage.createPackageContents();
+		theLayer_weight_initializersPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theNormalization_layersPackage.initializePackageContents();
+		theAIMLPackage.initializePackageContents();
+		theModulePackage.initializePackageContents();
+		theTensorPackage.initializePackageContents();
+		theDatatypesPackage.initializePackageContents();
+		thePooling_layersPackage.initializePackageContents();
+		theConvolution_layersPackage.initializePackageContents();
+		theLayer_weight_constraintsPackage.initializePackageContents();
+		thePadding_layersPackage.initializePackageContents();
+		theNonLinearActivationsPackage.initializePackageContents();
+		theSoftMinMaxActivationsPackage.initializePackageContents();
+		theRecurrent_layersPackage.initializePackageContents();
+		theTransformer_layersPackage.initializePackageContents();
+		theLinear_layersPackage.initializePackageContents();
+		theDropout_layersPackage.initializePackageContents();
+		theSparse_layersPackage.initializePackageContents();
+		theDistance_functionsPackage.initializePackageContents();
+		theLoss_functionsPackage.initializePackageContents();
+		theVision_layersPackage.initializePackageContents();
+		theDataParallel_layersPackage.initializePackageContents();
+		theLayer_weight_regularizersPackage.initializePackageContents();
+		theLayer_weight_initializersPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theNormalization_layersPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(Normalization_layersPackage.eNS_URI, theNormalization_layersPackage);
+		return theNormalization_layersPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getNormalization_layers() {
+		return normalization_layersEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getNormalization_layers_1() {
+		return normalization_layers_1EClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getNormalization_layers_1_Eps() {
+		return (EAttribute)normalization_layers_1EClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getLayerNorm() {
+		return layerNormEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLayerNorm_Normalized_shape() {
+		return (EAttribute)layerNormEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLayerNorm_Elementwise_affine() {
+		return (EAttribute)layerNormEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getLocalResponseNorm() {
+		return localResponseNormEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLocalResponseNorm_Size() {
+		return (EAttribute)localResponseNormEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLocalResponseNorm_Alpha() {
+		return (EAttribute)localResponseNormEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLocalResponseNorm_Beta() {
+		return (EAttribute)localResponseNormEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getLocalResponseNorm_K() {
+		return (EAttribute)localResponseNormEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getNormalization_layers_1_1() {
+		return normalization_layers_1_1EClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getNormalization_layers_1_1_Affine() {
+		return (EAttribute)normalization_layers_1_1EClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getNormalization_layers_1_1_1() {
+		return normalization_layers_1_1_1EClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getNormalization_layers_1_1_1_Num_features() {
+		return (EAttribute)normalization_layers_1_1_1EClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getNormalization_layers_1_1_1_Momentum() {
+		return (EAttribute)normalization_layers_1_1_1EClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getNormalization_layers_1_1_1_Track_running_stats() {
+		return (EAttribute)normalization_layers_1_1_1EClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getGroupNorm() {
+		return groupNormEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getGroupNorm_Num_groups() {
+		return (EAttribute)groupNormEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getGroupNorm_Num_channels() {
+		return (EAttribute)groupNormEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getBatchNorm1d() {
+		return batchNorm1dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getBatchNorm2d() {
+		return batchNorm2dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getBatchNorm3d() {
+		return batchNorm3dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getSyncBatchNorm() {
+		return syncBatchNormEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getSyncBatchNorm_Process_group() {
+		return (EAttribute)syncBatchNormEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getInstanceNorm1d() {
+		return instanceNorm1dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getInstanceNorm2d() {
+		return instanceNorm2dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getInstanceNorm3d() {
+		return instanceNorm3dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Normalization_layersFactory getNormalization_layersFactory() {
+		return (Normalization_layersFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		normalization_layersEClass = createEClass(NORMALIZATION_LAYERS);
+
+		normalization_layers_1EClass = createEClass(NORMALIZATION_LAYERS_1);
+		createEAttribute(normalization_layers_1EClass, NORMALIZATION_LAYERS_1__EPS);
+
+		layerNormEClass = createEClass(LAYER_NORM);
+		createEAttribute(layerNormEClass, LAYER_NORM__NORMALIZED_SHAPE);
+		createEAttribute(layerNormEClass, LAYER_NORM__ELEMENTWISE_AFFINE);
+
+		localResponseNormEClass = createEClass(LOCAL_RESPONSE_NORM);
+		createEAttribute(localResponseNormEClass, LOCAL_RESPONSE_NORM__SIZE);
+		createEAttribute(localResponseNormEClass, LOCAL_RESPONSE_NORM__ALPHA);
+		createEAttribute(localResponseNormEClass, LOCAL_RESPONSE_NORM__BETA);
+		createEAttribute(localResponseNormEClass, LOCAL_RESPONSE_NORM__K);
+
+		normalization_layers_1_1EClass = createEClass(NORMALIZATION_LAYERS_11);
+		createEAttribute(normalization_layers_1_1EClass, NORMALIZATION_LAYERS_11__AFFINE);
+
+		normalization_layers_1_1_1EClass = createEClass(NORMALIZATION_LAYERS_111);
+		createEAttribute(normalization_layers_1_1_1EClass, NORMALIZATION_LAYERS_111__NUM_FEATURES);
+		createEAttribute(normalization_layers_1_1_1EClass, NORMALIZATION_LAYERS_111__MOMENTUM);
+		createEAttribute(normalization_layers_1_1_1EClass, NORMALIZATION_LAYERS_111__TRACK_RUNNING_STATS);
+
+		groupNormEClass = createEClass(GROUP_NORM);
+		createEAttribute(groupNormEClass, GROUP_NORM__NUM_GROUPS);
+		createEAttribute(groupNormEClass, GROUP_NORM__NUM_CHANNELS);
+
+		batchNorm1dEClass = createEClass(BATCH_NORM1D);
+
+		batchNorm2dEClass = createEClass(BATCH_NORM2D);
+
+		batchNorm3dEClass = createEClass(BATCH_NORM3D);
+
+		syncBatchNormEClass = createEClass(SYNC_BATCH_NORM);
+		createEAttribute(syncBatchNormEClass, SYNC_BATCH_NORM__PROCESS_GROUP);
+
+		instanceNorm1dEClass = createEClass(INSTANCE_NORM1D);
+
+		instanceNorm2dEClass = createEClass(INSTANCE_NORM2D);
+
+		instanceNorm3dEClass = createEClass(INSTANCE_NORM3D);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		ModulePackage theModulePackage = (ModulePackage)EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		normalization_layersEClass.getESuperTypes().add(theModulePackage.getModel());
+		normalization_layers_1EClass.getESuperTypes().add(this.getNormalization_layers());
+		layerNormEClass.getESuperTypes().add(this.getNormalization_layers_1());
+		localResponseNormEClass.getESuperTypes().add(this.getNormalization_layers());
+		normalization_layers_1_1EClass.getESuperTypes().add(this.getNormalization_layers_1());
+		normalization_layers_1_1_1EClass.getESuperTypes().add(this.getNormalization_layers_1_1());
+		groupNormEClass.getESuperTypes().add(this.getNormalization_layers_1_1());
+		batchNorm1dEClass.getESuperTypes().add(this.getNormalization_layers_1_1_1());
+		batchNorm2dEClass.getESuperTypes().add(this.getNormalization_layers_1_1_1());
+		batchNorm3dEClass.getESuperTypes().add(this.getNormalization_layers_1_1_1());
+		syncBatchNormEClass.getESuperTypes().add(this.getNormalization_layers_1_1_1());
+		instanceNorm1dEClass.getESuperTypes().add(this.getNormalization_layers_1_1_1());
+		instanceNorm2dEClass.getESuperTypes().add(this.getNormalization_layers_1_1_1());
+		instanceNorm3dEClass.getESuperTypes().add(this.getNormalization_layers_1_1_1());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(normalization_layersEClass, Normalization_layers.class, "Normalization_layers", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(normalization_layers_1EClass, Normalization_layers_1.class, "Normalization_layers_1", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getNormalization_layers_1_Eps(), theTypesPackage.getReal(), "eps", null, 0, 1, Normalization_layers_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(layerNormEClass, LayerNorm.class, "LayerNorm", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getLayerNorm_Normalized_shape(), theTypesPackage.getInteger(), "normalized_shape", null, 0, -1, LayerNorm.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getLayerNorm_Elementwise_affine(), theTypesPackage.getBoolean(), "elementwise_affine", null, 0, 1, LayerNorm.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(localResponseNormEClass, LocalResponseNorm.class, "LocalResponseNorm", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getLocalResponseNorm_Size(), theTypesPackage.getInteger(), "size", null, 1, 1, LocalResponseNorm.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getLocalResponseNorm_Alpha(), theTypesPackage.getReal(), "alpha", null, 0, 1, LocalResponseNorm.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getLocalResponseNorm_Beta(), theTypesPackage.getReal(), "beta", null, 0, 1, LocalResponseNorm.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getLocalResponseNorm_K(), theTypesPackage.getReal(), "k", null, 0, 1, LocalResponseNorm.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(normalization_layers_1_1EClass, Normalization_layers_1_1.class, "Normalization_layers_1_1", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getNormalization_layers_1_1_Affine(), theTypesPackage.getBoolean(), "affine", null, 0, 1, Normalization_layers_1_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(normalization_layers_1_1_1EClass, Normalization_layers_1_1_1.class, "Normalization_layers_1_1_1", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getNormalization_layers_1_1_1_Num_features(), theTypesPackage.getInteger(), "num_features", null, 1, 1, Normalization_layers_1_1_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getNormalization_layers_1_1_1_Momentum(), theTypesPackage.getReal(), "momentum", null, 0, 1, Normalization_layers_1_1_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getNormalization_layers_1_1_1_Track_running_stats(), theTypesPackage.getBoolean(), "track_running_stats", null, 0, 1, Normalization_layers_1_1_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(groupNormEClass, GroupNorm.class, "GroupNorm", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getGroupNorm_Num_groups(), theTypesPackage.getInteger(), "num_groups", null, 1, 1, GroupNorm.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getGroupNorm_Num_channels(), theTypesPackage.getInteger(), "num_channels", null, 1, 1, GroupNorm.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(batchNorm1dEClass, BatchNorm1d.class, "BatchNorm1d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(batchNorm2dEClass, BatchNorm2d.class, "BatchNorm2d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(batchNorm3dEClass, BatchNorm3d.class, "BatchNorm3d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(syncBatchNormEClass, SyncBatchNorm.class, "SyncBatchNorm", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getSyncBatchNorm_Process_group(), theTypesPackage.getInteger(), "process_group", null, 0, 1, SyncBatchNorm.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(instanceNorm1dEClass, InstanceNorm1d.class, "InstanceNorm1d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(instanceNorm2dEClass, InstanceNorm2d.class, "InstanceNorm2d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(instanceNorm3dEClass, InstanceNorm3d.class, "InstanceNorm3d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		// Create annotations
+		// http://www.eclipse.org/uml2/2.0.0/UML
+		createUMLAnnotations();
+	}
+
+	/**
+	 * Initializes the annotations for <b>http://www.eclipse.org/uml2/2.0.0/UML</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createUMLAnnotations() {
+		String source = "http://www.eclipse.org/uml2/2.0.0/UML"; //$NON-NLS-1$
+		addAnnotation
+		  (getNormalization_layers_1_1_1_Track_running_stats(),
+		   source,
+		   new String[] {
+			   "originalName", "track_running_stats " //$NON-NLS-1$ //$NON-NLS-2$
+		   });
+		addAnnotation
+		  (getSyncBatchNorm_Process_group(),
+		   source,
+		   new String[] {
+			   "originalName", "process_group " //$NON-NLS-1$ //$NON-NLS-2$
+		   });
+	}
+
+} //Normalization_layersPackageImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/Normalization_layers_1Impl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/Normalization_layers_1Impl.java
new file mode 100644
index 0000000..df7bff6
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/Normalization_layers_1Impl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Normalization layers 1</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layers_1Impl#getEps <em>Eps</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class Normalization_layers_1Impl extends Normalization_layersImpl implements Normalization_layers_1 {
+	/**
+	 * The default value of the '{@link #getEps() <em>Eps</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEps()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double EPS_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getEps() <em>Eps</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEps()
+	 * @generated
+	 * @ordered
+	 */
+	protected double eps = EPS_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Normalization_layers_1Impl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Normalization_layersPackage.Literals.NORMALIZATION_LAYERS_1;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getEps() {
+		return eps;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setEps(double newEps) {
+		double oldEps = eps;
+		eps = newEps;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Normalization_layersPackage.NORMALIZATION_LAYERS_1__EPS, oldEps, eps));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Normalization_layersPackage.NORMALIZATION_LAYERS_1__EPS:
+				return getEps();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Normalization_layersPackage.NORMALIZATION_LAYERS_1__EPS:
+				setEps((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Normalization_layersPackage.NORMALIZATION_LAYERS_1__EPS:
+				setEps(EPS_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Normalization_layersPackage.NORMALIZATION_LAYERS_1__EPS:
+				return eps != EPS_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (eps: "); //$NON-NLS-1$
+		result.append(eps);
+		result.append(')');
+		return result.toString();
+	}
+
+} //Normalization_layers_1Impl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/Normalization_layers_1_1Impl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/Normalization_layers_1_1Impl.java
new file mode 100644
index 0000000..aa899cc
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/Normalization_layers_1_1Impl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1_1;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Normalization layers 11</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layers_1_1Impl#isAffine <em>Affine</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class Normalization_layers_1_1Impl extends Normalization_layers_1Impl implements Normalization_layers_1_1 {
+	/**
+	 * The default value of the '{@link #isAffine() <em>Affine</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isAffine()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean AFFINE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isAffine() <em>Affine</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isAffine()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean affine = AFFINE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Normalization_layers_1_1Impl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Normalization_layersPackage.Literals.NORMALIZATION_LAYERS_11;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isAffine() {
+		return affine;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setAffine(boolean newAffine) {
+		boolean oldAffine = affine;
+		affine = newAffine;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Normalization_layersPackage.NORMALIZATION_LAYERS_11__AFFINE, oldAffine, affine));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Normalization_layersPackage.NORMALIZATION_LAYERS_11__AFFINE:
+				return isAffine();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Normalization_layersPackage.NORMALIZATION_LAYERS_11__AFFINE:
+				setAffine((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Normalization_layersPackage.NORMALIZATION_LAYERS_11__AFFINE:
+				setAffine(AFFINE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Normalization_layersPackage.NORMALIZATION_LAYERS_11__AFFINE:
+				return affine != AFFINE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (affine: "); //$NON-NLS-1$
+		result.append(affine);
+		result.append(')');
+		return result.toString();
+	}
+
+} //Normalization_layers_1_1Impl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/Normalization_layers_1_1_1Impl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/Normalization_layers_1_1_1Impl.java
new file mode 100644
index 0000000..991f74f
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/Normalization_layers_1_1_1Impl.java
@@ -0,0 +1,285 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1_1_1;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Normalization layers 111</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layers_1_1_1Impl#getNum_features <em>Num features</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layers_1_1_1Impl#getMomentum <em>Momentum</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layers_1_1_1Impl#isTrack_running_stats <em>Track running stats</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class Normalization_layers_1_1_1Impl extends Normalization_layers_1_1Impl implements Normalization_layers_1_1_1 {
+	/**
+	 * The default value of the '{@link #getNum_features() <em>Num features</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNum_features()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int NUM_FEATURES_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getNum_features() <em>Num features</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNum_features()
+	 * @generated
+	 * @ordered
+	 */
+	protected int num_features = NUM_FEATURES_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMomentum() <em>Momentum</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMomentum()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double MOMENTUM_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getMomentum() <em>Momentum</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMomentum()
+	 * @generated
+	 * @ordered
+	 */
+	protected double momentum = MOMENTUM_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isTrack_running_stats() <em>Track running stats</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isTrack_running_stats()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean TRACK_RUNNING_STATS_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isTrack_running_stats() <em>Track running stats</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isTrack_running_stats()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean track_running_stats = TRACK_RUNNING_STATS_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Normalization_layers_1_1_1Impl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Normalization_layersPackage.Literals.NORMALIZATION_LAYERS_111;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getNum_features() {
+		return num_features;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setNum_features(int newNum_features) {
+		int oldNum_features = num_features;
+		num_features = newNum_features;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Normalization_layersPackage.NORMALIZATION_LAYERS_111__NUM_FEATURES, oldNum_features, num_features));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getMomentum() {
+		return momentum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setMomentum(double newMomentum) {
+		double oldMomentum = momentum;
+		momentum = newMomentum;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Normalization_layersPackage.NORMALIZATION_LAYERS_111__MOMENTUM, oldMomentum, momentum));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isTrack_running_stats() {
+		return track_running_stats;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setTrack_running_stats(boolean newTrack_running_stats) {
+		boolean oldTrack_running_stats = track_running_stats;
+		track_running_stats = newTrack_running_stats;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Normalization_layersPackage.NORMALIZATION_LAYERS_111__TRACK_RUNNING_STATS, oldTrack_running_stats, track_running_stats));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Normalization_layersPackage.NORMALIZATION_LAYERS_111__NUM_FEATURES:
+				return getNum_features();
+			case Normalization_layersPackage.NORMALIZATION_LAYERS_111__MOMENTUM:
+				return getMomentum();
+			case Normalization_layersPackage.NORMALIZATION_LAYERS_111__TRACK_RUNNING_STATS:
+				return isTrack_running_stats();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Normalization_layersPackage.NORMALIZATION_LAYERS_111__NUM_FEATURES:
+				setNum_features((Integer)newValue);
+				return;
+			case Normalization_layersPackage.NORMALIZATION_LAYERS_111__MOMENTUM:
+				setMomentum((Double)newValue);
+				return;
+			case Normalization_layersPackage.NORMALIZATION_LAYERS_111__TRACK_RUNNING_STATS:
+				setTrack_running_stats((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Normalization_layersPackage.NORMALIZATION_LAYERS_111__NUM_FEATURES:
+				setNum_features(NUM_FEATURES_EDEFAULT);
+				return;
+			case Normalization_layersPackage.NORMALIZATION_LAYERS_111__MOMENTUM:
+				setMomentum(MOMENTUM_EDEFAULT);
+				return;
+			case Normalization_layersPackage.NORMALIZATION_LAYERS_111__TRACK_RUNNING_STATS:
+				setTrack_running_stats(TRACK_RUNNING_STATS_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Normalization_layersPackage.NORMALIZATION_LAYERS_111__NUM_FEATURES:
+				return num_features != NUM_FEATURES_EDEFAULT;
+			case Normalization_layersPackage.NORMALIZATION_LAYERS_111__MOMENTUM:
+				return momentum != MOMENTUM_EDEFAULT;
+			case Normalization_layersPackage.NORMALIZATION_LAYERS_111__TRACK_RUNNING_STATS:
+				return track_running_stats != TRACK_RUNNING_STATS_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (num_features: "); //$NON-NLS-1$
+		result.append(num_features);
+		result.append(", momentum: "); //$NON-NLS-1$
+		result.append(momentum);
+		result.append(", track_running_stats: "); //$NON-NLS-1$
+		result.append(track_running_stats);
+		result.append(')');
+		return result.toString();
+	}
+
+} //Normalization_layers_1_1_1Impl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/SyncBatchNormImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/SyncBatchNormImpl.java
new file mode 100644
index 0000000..5a2c22e
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/impl/SyncBatchNormImpl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.SyncBatchNorm;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Sync Batch Norm</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.SyncBatchNormImpl#getProcess_group <em>Process group</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class SyncBatchNormImpl extends Normalization_layers_1_1_1Impl implements SyncBatchNorm {
+	/**
+	 * The default value of the '{@link #getProcess_group() <em>Process group</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getProcess_group()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int PROCESS_GROUP_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getProcess_group() <em>Process group</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getProcess_group()
+	 * @generated
+	 * @ordered
+	 */
+	protected int process_group = PROCESS_GROUP_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SyncBatchNormImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Normalization_layersPackage.Literals.SYNC_BATCH_NORM;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getProcess_group() {
+		return process_group;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setProcess_group(int newProcess_group) {
+		int oldProcess_group = process_group;
+		process_group = newProcess_group;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Normalization_layersPackage.SYNC_BATCH_NORM__PROCESS_GROUP, oldProcess_group, process_group));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Normalization_layersPackage.SYNC_BATCH_NORM__PROCESS_GROUP:
+				return getProcess_group();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Normalization_layersPackage.SYNC_BATCH_NORM__PROCESS_GROUP:
+				setProcess_group((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Normalization_layersPackage.SYNC_BATCH_NORM__PROCESS_GROUP:
+				setProcess_group(PROCESS_GROUP_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Normalization_layersPackage.SYNC_BATCH_NORM__PROCESS_GROUP:
+				return process_group != PROCESS_GROUP_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (process_group: "); //$NON-NLS-1$
+		result.append(process_group);
+		result.append(')');
+		return result.toString();
+	}
+
+} //SyncBatchNormImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/util/Normalization_layersAdapterFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/util/Normalization_layersAdapterFactory.java
new file mode 100644
index 0000000..67f8cfb
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/util/Normalization_layersAdapterFactory.java
@@ -0,0 +1,381 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage
+ * @generated
+ */
+public class Normalization_layersAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static Normalization_layersPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Normalization_layersAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = Normalization_layersPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Normalization_layersSwitch<Adapter> modelSwitch =
+		new Normalization_layersSwitch<Adapter>() {
+			@Override
+			public Adapter caseNormalization_layers(Normalization_layers object) {
+				return createNormalization_layersAdapter();
+			}
+			@Override
+			public Adapter caseNormalization_layers_1(Normalization_layers_1 object) {
+				return createNormalization_layers_1Adapter();
+			}
+			@Override
+			public Adapter caseLayerNorm(LayerNorm object) {
+				return createLayerNormAdapter();
+			}
+			@Override
+			public Adapter caseLocalResponseNorm(LocalResponseNorm object) {
+				return createLocalResponseNormAdapter();
+			}
+			@Override
+			public Adapter caseNormalization_layers_1_1(Normalization_layers_1_1 object) {
+				return createNormalization_layers_1_1Adapter();
+			}
+			@Override
+			public Adapter caseNormalization_layers_1_1_1(Normalization_layers_1_1_1 object) {
+				return createNormalization_layers_1_1_1Adapter();
+			}
+			@Override
+			public Adapter caseGroupNorm(GroupNorm object) {
+				return createGroupNormAdapter();
+			}
+			@Override
+			public Adapter caseBatchNorm1d(BatchNorm1d object) {
+				return createBatchNorm1dAdapter();
+			}
+			@Override
+			public Adapter caseBatchNorm2d(BatchNorm2d object) {
+				return createBatchNorm2dAdapter();
+			}
+			@Override
+			public Adapter caseBatchNorm3d(BatchNorm3d object) {
+				return createBatchNorm3dAdapter();
+			}
+			@Override
+			public Adapter caseSyncBatchNorm(SyncBatchNorm object) {
+				return createSyncBatchNormAdapter();
+			}
+			@Override
+			public Adapter caseInstanceNorm1d(InstanceNorm1d object) {
+				return createInstanceNorm1dAdapter();
+			}
+			@Override
+			public Adapter caseInstanceNorm2d(InstanceNorm2d object) {
+				return createInstanceNorm2dAdapter();
+			}
+			@Override
+			public Adapter caseInstanceNorm3d(InstanceNorm3d object) {
+				return createInstanceNorm3dAdapter();
+			}
+			@Override
+			public Adapter caseModel(Model object) {
+				return createModelAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers <em>Normalization layers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers
+	 * @generated
+	 */
+	public Adapter createNormalization_layersAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1 <em>Normalization layers 1</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1
+	 * @generated
+	 */
+	public Adapter createNormalization_layers_1Adapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LayerNorm <em>Layer Norm</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LayerNorm
+	 * @generated
+	 */
+	public Adapter createLayerNormAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LocalResponseNorm <em>Local Response Norm</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LocalResponseNorm
+	 * @generated
+	 */
+	public Adapter createLocalResponseNormAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1_1 <em>Normalization layers 11</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1_1
+	 * @generated
+	 */
+	public Adapter createNormalization_layers_1_1Adapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1_1_1 <em>Normalization layers 111</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layers_1_1_1
+	 * @generated
+	 */
+	public Adapter createNormalization_layers_1_1_1Adapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.GroupNorm <em>Group Norm</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.GroupNorm
+	 * @generated
+	 */
+	public Adapter createGroupNormAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.BatchNorm1d <em>Batch Norm1d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.BatchNorm1d
+	 * @generated
+	 */
+	public Adapter createBatchNorm1dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.BatchNorm2d <em>Batch Norm2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.BatchNorm2d
+	 * @generated
+	 */
+	public Adapter createBatchNorm2dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.BatchNorm3d <em>Batch Norm3d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.BatchNorm3d
+	 * @generated
+	 */
+	public Adapter createBatchNorm3dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.SyncBatchNorm <em>Sync Batch Norm</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.SyncBatchNorm
+	 * @generated
+	 */
+	public Adapter createSyncBatchNormAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.InstanceNorm1d <em>Instance Norm1d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.InstanceNorm1d
+	 * @generated
+	 */
+	public Adapter createInstanceNorm1dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.InstanceNorm2d <em>Instance Norm2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.InstanceNorm2d
+	 * @generated
+	 */
+	public Adapter createInstanceNorm2dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.InstanceNorm3d <em>Instance Norm3d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.InstanceNorm3d
+	 * @generated
+	 */
+	public Adapter createInstanceNorm3dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model <em>Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.Model
+	 * @generated
+	 */
+	public Adapter createModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //Normalization_layersAdapterFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/util/Normalization_layersSwitch.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/util/Normalization_layersSwitch.java
new file mode 100644
index 0000000..4e922b5
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Normalization_layers/util/Normalization_layersSwitch.java
@@ -0,0 +1,461 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage
+ * @generated
+ */
+public class Normalization_layersSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static Normalization_layersPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Normalization_layersSwitch() {
+		if (modelPackage == null) {
+			modelPackage = Normalization_layersPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case Normalization_layersPackage.NORMALIZATION_LAYERS: {
+				Normalization_layers normalization_layers = (Normalization_layers)theEObject;
+				T result = caseNormalization_layers(normalization_layers);
+				if (result == null) result = caseModel(normalization_layers);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Normalization_layersPackage.NORMALIZATION_LAYERS_1: {
+				Normalization_layers_1 normalization_layers_1 = (Normalization_layers_1)theEObject;
+				T result = caseNormalization_layers_1(normalization_layers_1);
+				if (result == null) result = caseNormalization_layers(normalization_layers_1);
+				if (result == null) result = caseModel(normalization_layers_1);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Normalization_layersPackage.LAYER_NORM: {
+				LayerNorm layerNorm = (LayerNorm)theEObject;
+				T result = caseLayerNorm(layerNorm);
+				if (result == null) result = caseNormalization_layers_1(layerNorm);
+				if (result == null) result = caseNormalization_layers(layerNorm);
+				if (result == null) result = caseModel(layerNorm);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Normalization_layersPackage.LOCAL_RESPONSE_NORM: {
+				LocalResponseNorm localResponseNorm = (LocalResponseNorm)theEObject;
+				T result = caseLocalResponseNorm(localResponseNorm);
+				if (result == null) result = caseNormalization_layers(localResponseNorm);
+				if (result == null) result = caseModel(localResponseNorm);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Normalization_layersPackage.NORMALIZATION_LAYERS_11: {
+				Normalization_layers_1_1 normalization_layers_1_1 = (Normalization_layers_1_1)theEObject;
+				T result = caseNormalization_layers_1_1(normalization_layers_1_1);
+				if (result == null) result = caseNormalization_layers_1(normalization_layers_1_1);
+				if (result == null) result = caseNormalization_layers(normalization_layers_1_1);
+				if (result == null) result = caseModel(normalization_layers_1_1);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Normalization_layersPackage.NORMALIZATION_LAYERS_111: {
+				Normalization_layers_1_1_1 normalization_layers_1_1_1 = (Normalization_layers_1_1_1)theEObject;
+				T result = caseNormalization_layers_1_1_1(normalization_layers_1_1_1);
+				if (result == null) result = caseNormalization_layers_1_1(normalization_layers_1_1_1);
+				if (result == null) result = caseNormalization_layers_1(normalization_layers_1_1_1);
+				if (result == null) result = caseNormalization_layers(normalization_layers_1_1_1);
+				if (result == null) result = caseModel(normalization_layers_1_1_1);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Normalization_layersPackage.GROUP_NORM: {
+				GroupNorm groupNorm = (GroupNorm)theEObject;
+				T result = caseGroupNorm(groupNorm);
+				if (result == null) result = caseNormalization_layers_1_1(groupNorm);
+				if (result == null) result = caseNormalization_layers_1(groupNorm);
+				if (result == null) result = caseNormalization_layers(groupNorm);
+				if (result == null) result = caseModel(groupNorm);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Normalization_layersPackage.BATCH_NORM1D: {
+				BatchNorm1d batchNorm1d = (BatchNorm1d)theEObject;
+				T result = caseBatchNorm1d(batchNorm1d);
+				if (result == null) result = caseNormalization_layers_1_1_1(batchNorm1d);
+				if (result == null) result = caseNormalization_layers_1_1(batchNorm1d);
+				if (result == null) result = caseNormalization_layers_1(batchNorm1d);
+				if (result == null) result = caseNormalization_layers(batchNorm1d);
+				if (result == null) result = caseModel(batchNorm1d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Normalization_layersPackage.BATCH_NORM2D: {
+				BatchNorm2d batchNorm2d = (BatchNorm2d)theEObject;
+				T result = caseBatchNorm2d(batchNorm2d);
+				if (result == null) result = caseNormalization_layers_1_1_1(batchNorm2d);
+				if (result == null) result = caseNormalization_layers_1_1(batchNorm2d);
+				if (result == null) result = caseNormalization_layers_1(batchNorm2d);
+				if (result == null) result = caseNormalization_layers(batchNorm2d);
+				if (result == null) result = caseModel(batchNorm2d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Normalization_layersPackage.BATCH_NORM3D: {
+				BatchNorm3d batchNorm3d = (BatchNorm3d)theEObject;
+				T result = caseBatchNorm3d(batchNorm3d);
+				if (result == null) result = caseNormalization_layers_1_1_1(batchNorm3d);
+				if (result == null) result = caseNormalization_layers_1_1(batchNorm3d);
+				if (result == null) result = caseNormalization_layers_1(batchNorm3d);
+				if (result == null) result = caseNormalization_layers(batchNorm3d);
+				if (result == null) result = caseModel(batchNorm3d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Normalization_layersPackage.SYNC_BATCH_NORM: {
+				SyncBatchNorm syncBatchNorm = (SyncBatchNorm)theEObject;
+				T result = caseSyncBatchNorm(syncBatchNorm);
+				if (result == null) result = caseNormalization_layers_1_1_1(syncBatchNorm);
+				if (result == null) result = caseNormalization_layers_1_1(syncBatchNorm);
+				if (result == null) result = caseNormalization_layers_1(syncBatchNorm);
+				if (result == null) result = caseNormalization_layers(syncBatchNorm);
+				if (result == null) result = caseModel(syncBatchNorm);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Normalization_layersPackage.INSTANCE_NORM1D: {
+				InstanceNorm1d instanceNorm1d = (InstanceNorm1d)theEObject;
+				T result = caseInstanceNorm1d(instanceNorm1d);
+				if (result == null) result = caseNormalization_layers_1_1_1(instanceNorm1d);
+				if (result == null) result = caseNormalization_layers_1_1(instanceNorm1d);
+				if (result == null) result = caseNormalization_layers_1(instanceNorm1d);
+				if (result == null) result = caseNormalization_layers(instanceNorm1d);
+				if (result == null) result = caseModel(instanceNorm1d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Normalization_layersPackage.INSTANCE_NORM2D: {
+				InstanceNorm2d instanceNorm2d = (InstanceNorm2d)theEObject;
+				T result = caseInstanceNorm2d(instanceNorm2d);
+				if (result == null) result = caseNormalization_layers_1_1_1(instanceNorm2d);
+				if (result == null) result = caseNormalization_layers_1_1(instanceNorm2d);
+				if (result == null) result = caseNormalization_layers_1(instanceNorm2d);
+				if (result == null) result = caseNormalization_layers(instanceNorm2d);
+				if (result == null) result = caseModel(instanceNorm2d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Normalization_layersPackage.INSTANCE_NORM3D: {
+				InstanceNorm3d instanceNorm3d = (InstanceNorm3d)theEObject;
+				T result = caseInstanceNorm3d(instanceNorm3d);
+				if (result == null) result = caseNormalization_layers_1_1_1(instanceNorm3d);
+				if (result == null) result = caseNormalization_layers_1_1(instanceNorm3d);
+				if (result == null) result = caseNormalization_layers_1(instanceNorm3d);
+				if (result == null) result = caseNormalization_layers(instanceNorm3d);
+				if (result == null) result = caseModel(instanceNorm3d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Normalization layers</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Normalization layers</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseNormalization_layers(Normalization_layers object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Normalization layers 1</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Normalization layers 1</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseNormalization_layers_1(Normalization_layers_1 object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Layer Norm</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Layer Norm</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLayerNorm(LayerNorm object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Local Response Norm</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Local Response Norm</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLocalResponseNorm(LocalResponseNorm object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Normalization layers 11</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Normalization layers 11</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseNormalization_layers_1_1(Normalization_layers_1_1 object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Normalization layers 111</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Normalization layers 111</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseNormalization_layers_1_1_1(Normalization_layers_1_1_1 object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Group Norm</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Group Norm</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseGroupNorm(GroupNorm object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Batch Norm1d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Batch Norm1d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseBatchNorm1d(BatchNorm1d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Batch Norm2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Batch Norm2d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseBatchNorm2d(BatchNorm2d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Batch Norm3d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Batch Norm3d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseBatchNorm3d(BatchNorm3d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Sync Batch Norm</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Sync Batch Norm</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSyncBatchNorm(SyncBatchNorm object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Instance Norm1d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Instance Norm1d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseInstanceNorm1d(InstanceNorm1d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Instance Norm2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Instance Norm2d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseInstanceNorm2d(InstanceNorm2d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Instance Norm3d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Instance Norm3d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseInstanceNorm3d(InstanceNorm3d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseModel(Model object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //Normalization_layersSwitch
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/ConstantPad1d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/ConstantPad1d.java
new file mode 100644
index 0000000..6a26915
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/ConstantPad1d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Padding_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Constant Pad1d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage#getConstantPad1d()
+ * @model
+ * @generated
+ */
+public interface ConstantPad1d extends Padding_layers {
+} // ConstantPad1d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/ConstantPad2d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/ConstantPad2d.java
new file mode 100644
index 0000000..3f225d8
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/ConstantPad2d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Padding_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Constant Pad2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage#getConstantPad2d()
+ * @model
+ * @generated
+ */
+public interface ConstantPad2d extends Padding_layers {
+} // ConstantPad2d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/ConstantPad3d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/ConstantPad3d.java
new file mode 100644
index 0000000..7b3f8dd
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/ConstantPad3d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Padding_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Constant Pad3d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage#getConstantPad3d()
+ * @model
+ * @generated
+ */
+public interface ConstantPad3d extends Padding_layers {
+} // ConstantPad3d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/Padding_layers.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/Padding_layers.java
new file mode 100644
index 0000000..e70b0d2
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/Padding_layers.java
@@ -0,0 +1,50 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Padding_layers;
+
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Padding layers</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layers#getPadding <em>Padding</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage#getPadding_layers()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Padding_layers extends Model {
+	/**
+	 * Returns the value of the '<em><b>Padding</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.Integer}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Padding</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Padding</em>' attribute list.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage#getPadding_layers_Padding()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	EList<Integer> getPadding();
+
+} // Padding_layers
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/Padding_layersFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/Padding_layersFactory.java
new file mode 100644
index 0000000..1998d33
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/Padding_layersFactory.java
@@ -0,0 +1,123 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Padding_layers;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage
+ * @generated
+ */
+public interface Padding_layersFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	Padding_layersFactory eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Reflection Pad1d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Reflection Pad1d</em>'.
+	 * @generated
+	 */
+	ReflectionPad1d createReflectionPad1d();
+
+	/**
+	 * Returns a new object of class '<em>Reflection Pad2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Reflection Pad2d</em>'.
+	 * @generated
+	 */
+	ReflectionPad2d createReflectionPad2d();
+
+	/**
+	 * Returns a new object of class '<em>Replication Pad1d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Replication Pad1d</em>'.
+	 * @generated
+	 */
+	ReplicationPad1d createReplicationPad1d();
+
+	/**
+	 * Returns a new object of class '<em>Replication Pad2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Replication Pad2d</em>'.
+	 * @generated
+	 */
+	ReplicationPad2d createReplicationPad2d();
+
+	/**
+	 * Returns a new object of class '<em>Replication Pad3d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Replication Pad3d</em>'.
+	 * @generated
+	 */
+	ReplicationPad3d createReplicationPad3d();
+
+	/**
+	 * Returns a new object of class '<em>Zero Pad2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Zero Pad2d</em>'.
+	 * @generated
+	 */
+	ZeroPad2d createZeroPad2d();
+
+	/**
+	 * Returns a new object of class '<em>Constant Pad1d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Constant Pad1d</em>'.
+	 * @generated
+	 */
+	ConstantPad1d createConstantPad1d();
+
+	/**
+	 * Returns a new object of class '<em>Constant Pad2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Constant Pad2d</em>'.
+	 * @generated
+	 */
+	ConstantPad2d createConstantPad2d();
+
+	/**
+	 * Returns a new object of class '<em>Constant Pad3d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Constant Pad3d</em>'.
+	 * @generated
+	 */
+	ConstantPad3d createConstantPad3d();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	Padding_layersPackage getPadding_layersPackage();
+
+} //Padding_layersFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/Padding_layersPackage.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/Padding_layersPackage.java
new file mode 100644
index 0000000..474a1c0
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/Padding_layersPackage.java
@@ -0,0 +1,1314 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Padding_layers;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface Padding_layersPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "Padding_layers"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://www.eclipse.org/papyrus/AIML/padding/1"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "AIML.Padding_layers"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	Padding_layersPackage eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersImpl <em>Padding layers</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl#getPadding_layers()
+	 * @generated
+	 */
+	int PADDING_LAYERS = 0;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PADDING_LAYERS__BASE_CLASS = ModulePackage.MODEL__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PADDING_LAYERS__NAME = ModulePackage.MODEL__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PADDING_LAYERS__DATA = ModulePackage.MODEL__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PADDING_LAYERS__REQUIRES_GRAD = ModulePackage.MODEL__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PADDING_LAYERS__SUB_MODULE = ModulePackage.MODEL__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PADDING_LAYERS__OPTIMIZER = ModulePackage.MODEL__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PADDING_LAYERS__LOSS = ModulePackage.MODEL__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PADDING_LAYERS__PADDING = ModulePackage.MODEL_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Padding layers</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PADDING_LAYERS_FEATURE_COUNT = ModulePackage.MODEL_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Padding layers</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PADDING_LAYERS_OPERATION_COUNT = ModulePackage.MODEL_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ReflectionPad1dImpl <em>Reflection Pad1d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ReflectionPad1dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl#getReflectionPad1d()
+	 * @generated
+	 */
+	int REFLECTION_PAD1D = 1;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REFLECTION_PAD1D__BASE_CLASS = PADDING_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REFLECTION_PAD1D__NAME = PADDING_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REFLECTION_PAD1D__DATA = PADDING_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REFLECTION_PAD1D__REQUIRES_GRAD = PADDING_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REFLECTION_PAD1D__SUB_MODULE = PADDING_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REFLECTION_PAD1D__OPTIMIZER = PADDING_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REFLECTION_PAD1D__LOSS = PADDING_LAYERS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REFLECTION_PAD1D__PADDING = PADDING_LAYERS__PADDING;
+
+	/**
+	 * The number of structural features of the '<em>Reflection Pad1d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REFLECTION_PAD1D_FEATURE_COUNT = PADDING_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Reflection Pad1d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REFLECTION_PAD1D_OPERATION_COUNT = PADDING_LAYERS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ReflectionPad2dImpl <em>Reflection Pad2d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ReflectionPad2dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl#getReflectionPad2d()
+	 * @generated
+	 */
+	int REFLECTION_PAD2D = 2;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REFLECTION_PAD2D__BASE_CLASS = PADDING_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REFLECTION_PAD2D__NAME = PADDING_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REFLECTION_PAD2D__DATA = PADDING_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REFLECTION_PAD2D__REQUIRES_GRAD = PADDING_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REFLECTION_PAD2D__SUB_MODULE = PADDING_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REFLECTION_PAD2D__OPTIMIZER = PADDING_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REFLECTION_PAD2D__LOSS = PADDING_LAYERS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REFLECTION_PAD2D__PADDING = PADDING_LAYERS__PADDING;
+
+	/**
+	 * The number of structural features of the '<em>Reflection Pad2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REFLECTION_PAD2D_FEATURE_COUNT = PADDING_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Reflection Pad2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REFLECTION_PAD2D_OPERATION_COUNT = PADDING_LAYERS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ReplicationPad1dImpl <em>Replication Pad1d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ReplicationPad1dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl#getReplicationPad1d()
+	 * @generated
+	 */
+	int REPLICATION_PAD1D = 3;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REPLICATION_PAD1D__BASE_CLASS = PADDING_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REPLICATION_PAD1D__NAME = PADDING_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REPLICATION_PAD1D__DATA = PADDING_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REPLICATION_PAD1D__REQUIRES_GRAD = PADDING_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REPLICATION_PAD1D__SUB_MODULE = PADDING_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REPLICATION_PAD1D__OPTIMIZER = PADDING_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REPLICATION_PAD1D__LOSS = PADDING_LAYERS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REPLICATION_PAD1D__PADDING = PADDING_LAYERS__PADDING;
+
+	/**
+	 * The number of structural features of the '<em>Replication Pad1d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REPLICATION_PAD1D_FEATURE_COUNT = PADDING_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Replication Pad1d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REPLICATION_PAD1D_OPERATION_COUNT = PADDING_LAYERS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ReplicationPad2dImpl <em>Replication Pad2d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ReplicationPad2dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl#getReplicationPad2d()
+	 * @generated
+	 */
+	int REPLICATION_PAD2D = 4;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REPLICATION_PAD2D__BASE_CLASS = PADDING_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REPLICATION_PAD2D__NAME = PADDING_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REPLICATION_PAD2D__DATA = PADDING_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REPLICATION_PAD2D__REQUIRES_GRAD = PADDING_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REPLICATION_PAD2D__SUB_MODULE = PADDING_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REPLICATION_PAD2D__OPTIMIZER = PADDING_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REPLICATION_PAD2D__LOSS = PADDING_LAYERS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REPLICATION_PAD2D__PADDING = PADDING_LAYERS__PADDING;
+
+	/**
+	 * The number of structural features of the '<em>Replication Pad2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REPLICATION_PAD2D_FEATURE_COUNT = PADDING_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Replication Pad2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REPLICATION_PAD2D_OPERATION_COUNT = PADDING_LAYERS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ReplicationPad3dImpl <em>Replication Pad3d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ReplicationPad3dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl#getReplicationPad3d()
+	 * @generated
+	 */
+	int REPLICATION_PAD3D = 5;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REPLICATION_PAD3D__BASE_CLASS = PADDING_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REPLICATION_PAD3D__NAME = PADDING_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REPLICATION_PAD3D__DATA = PADDING_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REPLICATION_PAD3D__REQUIRES_GRAD = PADDING_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REPLICATION_PAD3D__SUB_MODULE = PADDING_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REPLICATION_PAD3D__OPTIMIZER = PADDING_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REPLICATION_PAD3D__LOSS = PADDING_LAYERS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REPLICATION_PAD3D__PADDING = PADDING_LAYERS__PADDING;
+
+	/**
+	 * The number of structural features of the '<em>Replication Pad3d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REPLICATION_PAD3D_FEATURE_COUNT = PADDING_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Replication Pad3d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int REPLICATION_PAD3D_OPERATION_COUNT = PADDING_LAYERS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ZeroPad2dImpl <em>Zero Pad2d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ZeroPad2dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl#getZeroPad2d()
+	 * @generated
+	 */
+	int ZERO_PAD2D = 6;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ZERO_PAD2D__BASE_CLASS = PADDING_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ZERO_PAD2D__NAME = PADDING_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ZERO_PAD2D__DATA = PADDING_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ZERO_PAD2D__REQUIRES_GRAD = PADDING_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ZERO_PAD2D__SUB_MODULE = PADDING_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ZERO_PAD2D__OPTIMIZER = PADDING_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ZERO_PAD2D__LOSS = PADDING_LAYERS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ZERO_PAD2D__PADDING = PADDING_LAYERS__PADDING;
+
+	/**
+	 * The number of structural features of the '<em>Zero Pad2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ZERO_PAD2D_FEATURE_COUNT = PADDING_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Zero Pad2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ZERO_PAD2D_OPERATION_COUNT = PADDING_LAYERS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ConstantPad1dImpl <em>Constant Pad1d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ConstantPad1dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl#getConstantPad1d()
+	 * @generated
+	 */
+	int CONSTANT_PAD1D = 7;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTANT_PAD1D__BASE_CLASS = PADDING_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTANT_PAD1D__NAME = PADDING_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTANT_PAD1D__DATA = PADDING_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTANT_PAD1D__REQUIRES_GRAD = PADDING_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTANT_PAD1D__SUB_MODULE = PADDING_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTANT_PAD1D__OPTIMIZER = PADDING_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTANT_PAD1D__LOSS = PADDING_LAYERS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTANT_PAD1D__PADDING = PADDING_LAYERS__PADDING;
+
+	/**
+	 * The number of structural features of the '<em>Constant Pad1d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTANT_PAD1D_FEATURE_COUNT = PADDING_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Constant Pad1d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTANT_PAD1D_OPERATION_COUNT = PADDING_LAYERS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ConstantPad2dImpl <em>Constant Pad2d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ConstantPad2dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl#getConstantPad2d()
+	 * @generated
+	 */
+	int CONSTANT_PAD2D = 8;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTANT_PAD2D__BASE_CLASS = PADDING_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTANT_PAD2D__NAME = PADDING_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTANT_PAD2D__DATA = PADDING_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTANT_PAD2D__REQUIRES_GRAD = PADDING_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTANT_PAD2D__SUB_MODULE = PADDING_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTANT_PAD2D__OPTIMIZER = PADDING_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTANT_PAD2D__LOSS = PADDING_LAYERS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTANT_PAD2D__PADDING = PADDING_LAYERS__PADDING;
+
+	/**
+	 * The number of structural features of the '<em>Constant Pad2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTANT_PAD2D_FEATURE_COUNT = PADDING_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Constant Pad2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTANT_PAD2D_OPERATION_COUNT = PADDING_LAYERS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ConstantPad3dImpl <em>Constant Pad3d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ConstantPad3dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl#getConstantPad3d()
+	 * @generated
+	 */
+	int CONSTANT_PAD3D = 9;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTANT_PAD3D__BASE_CLASS = PADDING_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTANT_PAD3D__NAME = PADDING_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTANT_PAD3D__DATA = PADDING_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTANT_PAD3D__REQUIRES_GRAD = PADDING_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTANT_PAD3D__SUB_MODULE = PADDING_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTANT_PAD3D__OPTIMIZER = PADDING_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTANT_PAD3D__LOSS = PADDING_LAYERS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTANT_PAD3D__PADDING = PADDING_LAYERS__PADDING;
+
+	/**
+	 * The number of structural features of the '<em>Constant Pad3d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTANT_PAD3D_FEATURE_COUNT = PADDING_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Constant Pad3d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int CONSTANT_PAD3D_OPERATION_COUNT = PADDING_LAYERS_OPERATION_COUNT + 0;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layers <em>Padding layers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Padding layers</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layers
+	 * @generated
+	 */
+	EClass getPadding_layers();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layers#getPadding <em>Padding</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Padding</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layers#getPadding()
+	 * @see #getPadding_layers()
+	 * @generated
+	 */
+	EAttribute getPadding_layers_Padding();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ReflectionPad1d <em>Reflection Pad1d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Reflection Pad1d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ReflectionPad1d
+	 * @generated
+	 */
+	EClass getReflectionPad1d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ReflectionPad2d <em>Reflection Pad2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Reflection Pad2d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ReflectionPad2d
+	 * @generated
+	 */
+	EClass getReflectionPad2d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ReplicationPad1d <em>Replication Pad1d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Replication Pad1d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ReplicationPad1d
+	 * @generated
+	 */
+	EClass getReplicationPad1d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ReplicationPad2d <em>Replication Pad2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Replication Pad2d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ReplicationPad2d
+	 * @generated
+	 */
+	EClass getReplicationPad2d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ReplicationPad3d <em>Replication Pad3d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Replication Pad3d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ReplicationPad3d
+	 * @generated
+	 */
+	EClass getReplicationPad3d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ZeroPad2d <em>Zero Pad2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Zero Pad2d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ZeroPad2d
+	 * @generated
+	 */
+	EClass getZeroPad2d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ConstantPad1d <em>Constant Pad1d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Constant Pad1d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ConstantPad1d
+	 * @generated
+	 */
+	EClass getConstantPad1d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ConstantPad2d <em>Constant Pad2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Constant Pad2d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ConstantPad2d
+	 * @generated
+	 */
+	EClass getConstantPad2d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ConstantPad3d <em>Constant Pad3d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Constant Pad3d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ConstantPad3d
+	 * @generated
+	 */
+	EClass getConstantPad3d();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	Padding_layersFactory getPadding_layersFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersImpl <em>Padding layers</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl#getPadding_layers()
+		 * @generated
+		 */
+		EClass PADDING_LAYERS = eINSTANCE.getPadding_layers();
+
+		/**
+		 * The meta object literal for the '<em><b>Padding</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PADDING_LAYERS__PADDING = eINSTANCE.getPadding_layers_Padding();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ReflectionPad1dImpl <em>Reflection Pad1d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ReflectionPad1dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl#getReflectionPad1d()
+		 * @generated
+		 */
+		EClass REFLECTION_PAD1D = eINSTANCE.getReflectionPad1d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ReflectionPad2dImpl <em>Reflection Pad2d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ReflectionPad2dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl#getReflectionPad2d()
+		 * @generated
+		 */
+		EClass REFLECTION_PAD2D = eINSTANCE.getReflectionPad2d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ReplicationPad1dImpl <em>Replication Pad1d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ReplicationPad1dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl#getReplicationPad1d()
+		 * @generated
+		 */
+		EClass REPLICATION_PAD1D = eINSTANCE.getReplicationPad1d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ReplicationPad2dImpl <em>Replication Pad2d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ReplicationPad2dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl#getReplicationPad2d()
+		 * @generated
+		 */
+		EClass REPLICATION_PAD2D = eINSTANCE.getReplicationPad2d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ReplicationPad3dImpl <em>Replication Pad3d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ReplicationPad3dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl#getReplicationPad3d()
+		 * @generated
+		 */
+		EClass REPLICATION_PAD3D = eINSTANCE.getReplicationPad3d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ZeroPad2dImpl <em>Zero Pad2d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ZeroPad2dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl#getZeroPad2d()
+		 * @generated
+		 */
+		EClass ZERO_PAD2D = eINSTANCE.getZeroPad2d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ConstantPad1dImpl <em>Constant Pad1d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ConstantPad1dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl#getConstantPad1d()
+		 * @generated
+		 */
+		EClass CONSTANT_PAD1D = eINSTANCE.getConstantPad1d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ConstantPad2dImpl <em>Constant Pad2d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ConstantPad2dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl#getConstantPad2d()
+		 * @generated
+		 */
+		EClass CONSTANT_PAD2D = eINSTANCE.getConstantPad2d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ConstantPad3dImpl <em>Constant Pad3d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.ConstantPad3dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl#getConstantPad3d()
+		 * @generated
+		 */
+		EClass CONSTANT_PAD3D = eINSTANCE.getConstantPad3d();
+
+	}
+
+} //Padding_layersPackage
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/ReflectionPad1d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/ReflectionPad1d.java
new file mode 100644
index 0000000..7d12589
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/ReflectionPad1d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Padding_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Reflection Pad1d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage#getReflectionPad1d()
+ * @model
+ * @generated
+ */
+public interface ReflectionPad1d extends Padding_layers {
+} // ReflectionPad1d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/ReflectionPad2d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/ReflectionPad2d.java
new file mode 100644
index 0000000..683cd91
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/ReflectionPad2d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Padding_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Reflection Pad2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage#getReflectionPad2d()
+ * @model
+ * @generated
+ */
+public interface ReflectionPad2d extends Padding_layers {
+} // ReflectionPad2d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/ReplicationPad1d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/ReplicationPad1d.java
new file mode 100644
index 0000000..e3c25c2
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/ReplicationPad1d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Padding_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Replication Pad1d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage#getReplicationPad1d()
+ * @model
+ * @generated
+ */
+public interface ReplicationPad1d extends Padding_layers {
+} // ReplicationPad1d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/ReplicationPad2d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/ReplicationPad2d.java
new file mode 100644
index 0000000..19d5f6d
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/ReplicationPad2d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Padding_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Replication Pad2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage#getReplicationPad2d()
+ * @model
+ * @generated
+ */
+public interface ReplicationPad2d extends Padding_layers {
+} // ReplicationPad2d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/ReplicationPad3d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/ReplicationPad3d.java
new file mode 100644
index 0000000..68c5c8a
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/ReplicationPad3d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Padding_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Replication Pad3d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage#getReplicationPad3d()
+ * @model
+ * @generated
+ */
+public interface ReplicationPad3d extends Padding_layers {
+} // ReplicationPad3d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/ZeroPad2d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/ZeroPad2d.java
new file mode 100644
index 0000000..cf4ca6b
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/ZeroPad2d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Padding_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Zero Pad2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage#getZeroPad2d()
+ * @model
+ * @generated
+ */
+public interface ZeroPad2d extends Padding_layers {
+} // ZeroPad2d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/ConstantPad1dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/ConstantPad1dImpl.java
new file mode 100644
index 0000000..a18d322
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/ConstantPad1dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ConstantPad1d;
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Constant Pad1d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ConstantPad1dImpl extends Padding_layersImpl implements ConstantPad1d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ConstantPad1dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Padding_layersPackage.Literals.CONSTANT_PAD1D;
+	}
+
+} //ConstantPad1dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/ConstantPad2dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/ConstantPad2dImpl.java
new file mode 100644
index 0000000..7a4fd95
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/ConstantPad2dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ConstantPad2d;
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Constant Pad2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ConstantPad2dImpl extends Padding_layersImpl implements ConstantPad2d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ConstantPad2dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Padding_layersPackage.Literals.CONSTANT_PAD2D;
+	}
+
+} //ConstantPad2dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/ConstantPad3dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/ConstantPad3dImpl.java
new file mode 100644
index 0000000..65c2aa9
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/ConstantPad3dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ConstantPad3d;
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Constant Pad3d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ConstantPad3dImpl extends Padding_layersImpl implements ConstantPad3d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ConstantPad3dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Padding_layersPackage.Literals.CONSTANT_PAD3D;
+	}
+
+} //ConstantPad3dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/Padding_layersFactoryImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/Padding_layersFactoryImpl.java
new file mode 100644
index 0000000..718b914
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/Padding_layersFactoryImpl.java
@@ -0,0 +1,202 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class Padding_layersFactoryImpl extends EFactoryImpl implements Padding_layersFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static Padding_layersFactory init() {
+		try {
+			Padding_layersFactory thePadding_layersFactory = (Padding_layersFactory)EPackage.Registry.INSTANCE.getEFactory(Padding_layersPackage.eNS_URI);
+			if (thePadding_layersFactory != null) {
+				return thePadding_layersFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new Padding_layersFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Padding_layersFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case Padding_layersPackage.REFLECTION_PAD1D: return createReflectionPad1d();
+			case Padding_layersPackage.REFLECTION_PAD2D: return createReflectionPad2d();
+			case Padding_layersPackage.REPLICATION_PAD1D: return createReplicationPad1d();
+			case Padding_layersPackage.REPLICATION_PAD2D: return createReplicationPad2d();
+			case Padding_layersPackage.REPLICATION_PAD3D: return createReplicationPad3d();
+			case Padding_layersPackage.ZERO_PAD2D: return createZeroPad2d();
+			case Padding_layersPackage.CONSTANT_PAD1D: return createConstantPad1d();
+			case Padding_layersPackage.CONSTANT_PAD2D: return createConstantPad2d();
+			case Padding_layersPackage.CONSTANT_PAD3D: return createConstantPad3d();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ReflectionPad1d createReflectionPad1d() {
+		ReflectionPad1dImpl reflectionPad1d = new ReflectionPad1dImpl();
+		return reflectionPad1d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ReflectionPad2d createReflectionPad2d() {
+		ReflectionPad2dImpl reflectionPad2d = new ReflectionPad2dImpl();
+		return reflectionPad2d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ReplicationPad1d createReplicationPad1d() {
+		ReplicationPad1dImpl replicationPad1d = new ReplicationPad1dImpl();
+		return replicationPad1d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ReplicationPad2d createReplicationPad2d() {
+		ReplicationPad2dImpl replicationPad2d = new ReplicationPad2dImpl();
+		return replicationPad2d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ReplicationPad3d createReplicationPad3d() {
+		ReplicationPad3dImpl replicationPad3d = new ReplicationPad3dImpl();
+		return replicationPad3d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ZeroPad2d createZeroPad2d() {
+		ZeroPad2dImpl zeroPad2d = new ZeroPad2dImpl();
+		return zeroPad2d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ConstantPad1d createConstantPad1d() {
+		ConstantPad1dImpl constantPad1d = new ConstantPad1dImpl();
+		return constantPad1d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ConstantPad2d createConstantPad2d() {
+		ConstantPad2dImpl constantPad2d = new ConstantPad2dImpl();
+		return constantPad2d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public ConstantPad3d createConstantPad3d() {
+		ConstantPad3dImpl constantPad3d = new ConstantPad3dImpl();
+		return constantPad3d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Padding_layersPackage getPadding_layersPackage() {
+		return (Padding_layersPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static Padding_layersPackage getPackage() {
+		return Padding_layersPackage.eINSTANCE;
+	}
+
+} //Padding_layersFactoryImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/Padding_layersImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/Padding_layersImpl.java
new file mode 100644
index 0000000..ab0252f
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/Padding_layersImpl.java
@@ -0,0 +1,157 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModelImpl;
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layers;
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Padding layers</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersImpl#getPadding <em>Padding</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class Padding_layersImpl extends ModelImpl implements Padding_layers {
+	/**
+	 * The cached value of the '{@link #getPadding() <em>Padding</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPadding()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Integer> padding;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Padding_layersImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Padding_layersPackage.Literals.PADDING_LAYERS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Integer> getPadding() {
+		if (padding == null) {
+			padding = new EDataTypeUniqueEList<Integer>(Integer.class, this, Padding_layersPackage.PADDING_LAYERS__PADDING);
+		}
+		return padding;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Padding_layersPackage.PADDING_LAYERS__PADDING:
+				return getPadding();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Padding_layersPackage.PADDING_LAYERS__PADDING:
+				getPadding().clear();
+				getPadding().addAll((Collection<? extends Integer>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Padding_layersPackage.PADDING_LAYERS__PADDING:
+				getPadding().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Padding_layersPackage.PADDING_LAYERS__PADDING:
+				return padding != null && !padding.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (padding: "); //$NON-NLS-1$
+		result.append(padding);
+		result.append(')');
+		return result.toString();
+	}
+
+} //Padding_layersImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/Padding_layersPackageImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/Padding_layersPackageImpl.java
new file mode 100644
index 0000000..3ecad75
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/Padding_layersPackageImpl.java
@@ -0,0 +1,578 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.AIMLPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.Layer_weight_regularizersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModulePackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ConstantPad1d;
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ConstantPad2d;
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ConstantPad3d;
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layers;
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersFactory;
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ReflectionPad1d;
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ReflectionPad2d;
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ReplicationPad1d;
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ReplicationPad2d;
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ReplicationPad3d;
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ZeroPad2d;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.DatatypesPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl.DatatypesPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.impl.AIMLPackageImpl;
+
+import org.eclipse.uml2.types.TypesPackage;
+
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class Padding_layersPackageImpl extends EPackageImpl implements Padding_layersPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass padding_layersEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass reflectionPad1dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass reflectionPad2dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass replicationPad1dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass replicationPad2dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass replicationPad3dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass zeroPad2dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass constantPad1dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass constantPad2dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass constantPad3dEClass = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private Padding_layersPackageImpl() {
+		super(eNS_URI, Padding_layersFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>This method is used to initialize {@link Padding_layersPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static Padding_layersPackage init() {
+		if (isInited) return (Padding_layersPackage)EPackage.Registry.INSTANCE.getEPackage(Padding_layersPackage.eNS_URI);
+
+		// Obtain or create and register package
+		Object registeredPadding_layersPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		Padding_layersPackageImpl thePadding_layersPackage = registeredPadding_layersPackage instanceof Padding_layersPackageImpl ? (Padding_layersPackageImpl)registeredPadding_layersPackage : new Padding_layersPackageImpl();
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		EcorePackage.eINSTANCE.eClass();
+		TypesPackage.eINSTANCE.eClass();
+		UMLPackage.eINSTANCE.eClass();
+
+		// Obtain or create and register interdependencies
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AIMLPackage.eNS_URI);
+		AIMLPackageImpl theAIMLPackage = (AIMLPackageImpl)(registeredPackage instanceof AIMLPackageImpl ? registeredPackage : AIMLPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		ModulePackageImpl theModulePackage = (ModulePackageImpl)(registeredPackage instanceof ModulePackageImpl ? registeredPackage : ModulePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(TensorPackage.eNS_URI);
+		TensorPackageImpl theTensorPackage = (TensorPackageImpl)(registeredPackage instanceof TensorPackageImpl ? registeredPackage : TensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DatatypesPackage.eNS_URI);
+		DatatypesPackageImpl theDatatypesPackage = (DatatypesPackageImpl)(registeredPackage instanceof DatatypesPackageImpl ? registeredPackage : DatatypesPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Pooling_layersPackage.eNS_URI);
+		Pooling_layersPackageImpl thePooling_layersPackage = (Pooling_layersPackageImpl)(registeredPackage instanceof Pooling_layersPackageImpl ? registeredPackage : Pooling_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Convolution_layersPackage.eNS_URI);
+		Convolution_layersPackageImpl theConvolution_layersPackage = (Convolution_layersPackageImpl)(registeredPackage instanceof Convolution_layersPackageImpl ? registeredPackage : Convolution_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_constraintsPackage.eNS_URI);
+		Layer_weight_constraintsPackageImpl theLayer_weight_constraintsPackage = (Layer_weight_constraintsPackageImpl)(registeredPackage instanceof Layer_weight_constraintsPackageImpl ? registeredPackage : Layer_weight_constraintsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NonLinearActivationsPackage.eNS_URI);
+		NonLinearActivationsPackageImpl theNonLinearActivationsPackage = (NonLinearActivationsPackageImpl)(registeredPackage instanceof NonLinearActivationsPackageImpl ? registeredPackage : NonLinearActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftMinMaxActivationsPackage.eNS_URI);
+		SoftMinMaxActivationsPackageImpl theSoftMinMaxActivationsPackage = (SoftMinMaxActivationsPackageImpl)(registeredPackage instanceof SoftMinMaxActivationsPackageImpl ? registeredPackage : SoftMinMaxActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Normalization_layersPackage.eNS_URI);
+		Normalization_layersPackageImpl theNormalization_layersPackage = (Normalization_layersPackageImpl)(registeredPackage instanceof Normalization_layersPackageImpl ? registeredPackage : Normalization_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Recurrent_layersPackage.eNS_URI);
+		Recurrent_layersPackageImpl theRecurrent_layersPackage = (Recurrent_layersPackageImpl)(registeredPackage instanceof Recurrent_layersPackageImpl ? registeredPackage : Recurrent_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Transformer_layersPackage.eNS_URI);
+		Transformer_layersPackageImpl theTransformer_layersPackage = (Transformer_layersPackageImpl)(registeredPackage instanceof Transformer_layersPackageImpl ? registeredPackage : Transformer_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Linear_layersPackage.eNS_URI);
+		Linear_layersPackageImpl theLinear_layersPackage = (Linear_layersPackageImpl)(registeredPackage instanceof Linear_layersPackageImpl ? registeredPackage : Linear_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Dropout_layersPackage.eNS_URI);
+		Dropout_layersPackageImpl theDropout_layersPackage = (Dropout_layersPackageImpl)(registeredPackage instanceof Dropout_layersPackageImpl ? registeredPackage : Dropout_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Sparse_layersPackage.eNS_URI);
+		Sparse_layersPackageImpl theSparse_layersPackage = (Sparse_layersPackageImpl)(registeredPackage instanceof Sparse_layersPackageImpl ? registeredPackage : Sparse_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Distance_functionsPackage.eNS_URI);
+		Distance_functionsPackageImpl theDistance_functionsPackage = (Distance_functionsPackageImpl)(registeredPackage instanceof Distance_functionsPackageImpl ? registeredPackage : Distance_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Loss_functionsPackage.eNS_URI);
+		Loss_functionsPackageImpl theLoss_functionsPackage = (Loss_functionsPackageImpl)(registeredPackage instanceof Loss_functionsPackageImpl ? registeredPackage : Loss_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Vision_layersPackage.eNS_URI);
+		Vision_layersPackageImpl theVision_layersPackage = (Vision_layersPackageImpl)(registeredPackage instanceof Vision_layersPackageImpl ? registeredPackage : Vision_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DataParallel_layersPackage.eNS_URI);
+		DataParallel_layersPackageImpl theDataParallel_layersPackage = (DataParallel_layersPackageImpl)(registeredPackage instanceof DataParallel_layersPackageImpl ? registeredPackage : DataParallel_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_regularizersPackage.eNS_URI);
+		Layer_weight_regularizersPackageImpl theLayer_weight_regularizersPackage = (Layer_weight_regularizersPackageImpl)(registeredPackage instanceof Layer_weight_regularizersPackageImpl ? registeredPackage : Layer_weight_regularizersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_initializersPackage.eNS_URI);
+		Layer_weight_initializersPackageImpl theLayer_weight_initializersPackage = (Layer_weight_initializersPackageImpl)(registeredPackage instanceof Layer_weight_initializersPackageImpl ? registeredPackage : Layer_weight_initializersPackage.eINSTANCE);
+
+		// Create package meta-data objects
+		thePadding_layersPackage.createPackageContents();
+		theAIMLPackage.createPackageContents();
+		theModulePackage.createPackageContents();
+		theTensorPackage.createPackageContents();
+		theDatatypesPackage.createPackageContents();
+		thePooling_layersPackage.createPackageContents();
+		theConvolution_layersPackage.createPackageContents();
+		theLayer_weight_constraintsPackage.createPackageContents();
+		theNonLinearActivationsPackage.createPackageContents();
+		theSoftMinMaxActivationsPackage.createPackageContents();
+		theNormalization_layersPackage.createPackageContents();
+		theRecurrent_layersPackage.createPackageContents();
+		theTransformer_layersPackage.createPackageContents();
+		theLinear_layersPackage.createPackageContents();
+		theDropout_layersPackage.createPackageContents();
+		theSparse_layersPackage.createPackageContents();
+		theDistance_functionsPackage.createPackageContents();
+		theLoss_functionsPackage.createPackageContents();
+		theVision_layersPackage.createPackageContents();
+		theDataParallel_layersPackage.createPackageContents();
+		theLayer_weight_regularizersPackage.createPackageContents();
+		theLayer_weight_initializersPackage.createPackageContents();
+
+		// Initialize created meta-data
+		thePadding_layersPackage.initializePackageContents();
+		theAIMLPackage.initializePackageContents();
+		theModulePackage.initializePackageContents();
+		theTensorPackage.initializePackageContents();
+		theDatatypesPackage.initializePackageContents();
+		thePooling_layersPackage.initializePackageContents();
+		theConvolution_layersPackage.initializePackageContents();
+		theLayer_weight_constraintsPackage.initializePackageContents();
+		theNonLinearActivationsPackage.initializePackageContents();
+		theSoftMinMaxActivationsPackage.initializePackageContents();
+		theNormalization_layersPackage.initializePackageContents();
+		theRecurrent_layersPackage.initializePackageContents();
+		theTransformer_layersPackage.initializePackageContents();
+		theLinear_layersPackage.initializePackageContents();
+		theDropout_layersPackage.initializePackageContents();
+		theSparse_layersPackage.initializePackageContents();
+		theDistance_functionsPackage.initializePackageContents();
+		theLoss_functionsPackage.initializePackageContents();
+		theVision_layersPackage.initializePackageContents();
+		theDataParallel_layersPackage.initializePackageContents();
+		theLayer_weight_regularizersPackage.initializePackageContents();
+		theLayer_weight_initializersPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		thePadding_layersPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(Padding_layersPackage.eNS_URI, thePadding_layersPackage);
+		return thePadding_layersPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getPadding_layers() {
+		return padding_layersEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPadding_layers_Padding() {
+		return (EAttribute)padding_layersEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getReflectionPad1d() {
+		return reflectionPad1dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getReflectionPad2d() {
+		return reflectionPad2dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getReplicationPad1d() {
+		return replicationPad1dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getReplicationPad2d() {
+		return replicationPad2dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getReplicationPad3d() {
+		return replicationPad3dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getZeroPad2d() {
+		return zeroPad2dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getConstantPad1d() {
+		return constantPad1dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getConstantPad2d() {
+		return constantPad2dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getConstantPad3d() {
+		return constantPad3dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Padding_layersFactory getPadding_layersFactory() {
+		return (Padding_layersFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		padding_layersEClass = createEClass(PADDING_LAYERS);
+		createEAttribute(padding_layersEClass, PADDING_LAYERS__PADDING);
+
+		reflectionPad1dEClass = createEClass(REFLECTION_PAD1D);
+
+		reflectionPad2dEClass = createEClass(REFLECTION_PAD2D);
+
+		replicationPad1dEClass = createEClass(REPLICATION_PAD1D);
+
+		replicationPad2dEClass = createEClass(REPLICATION_PAD2D);
+
+		replicationPad3dEClass = createEClass(REPLICATION_PAD3D);
+
+		zeroPad2dEClass = createEClass(ZERO_PAD2D);
+
+		constantPad1dEClass = createEClass(CONSTANT_PAD1D);
+
+		constantPad2dEClass = createEClass(CONSTANT_PAD2D);
+
+		constantPad3dEClass = createEClass(CONSTANT_PAD3D);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		ModulePackage theModulePackage = (ModulePackage)EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		padding_layersEClass.getESuperTypes().add(theModulePackage.getModel());
+		reflectionPad1dEClass.getESuperTypes().add(this.getPadding_layers());
+		reflectionPad2dEClass.getESuperTypes().add(this.getPadding_layers());
+		replicationPad1dEClass.getESuperTypes().add(this.getPadding_layers());
+		replicationPad2dEClass.getESuperTypes().add(this.getPadding_layers());
+		replicationPad3dEClass.getESuperTypes().add(this.getPadding_layers());
+		zeroPad2dEClass.getESuperTypes().add(this.getPadding_layers());
+		constantPad1dEClass.getESuperTypes().add(this.getPadding_layers());
+		constantPad2dEClass.getESuperTypes().add(this.getPadding_layers());
+		constantPad3dEClass.getESuperTypes().add(this.getPadding_layers());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(padding_layersEClass, Padding_layers.class, "Padding_layers", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getPadding_layers_Padding(), theTypesPackage.getInteger(), "padding", null, 0, -1, Padding_layers.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(reflectionPad1dEClass, ReflectionPad1d.class, "ReflectionPad1d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(reflectionPad2dEClass, ReflectionPad2d.class, "ReflectionPad2d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(replicationPad1dEClass, ReplicationPad1d.class, "ReplicationPad1d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(replicationPad2dEClass, ReplicationPad2d.class, "ReplicationPad2d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(replicationPad3dEClass, ReplicationPad3d.class, "ReplicationPad3d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(zeroPad2dEClass, ZeroPad2d.class, "ZeroPad2d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(constantPad1dEClass, ConstantPad1d.class, "ConstantPad1d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(constantPad2dEClass, ConstantPad2d.class, "ConstantPad2d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(constantPad3dEClass, ConstantPad3d.class, "ConstantPad3d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+	}
+
+} //Padding_layersPackageImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/ReflectionPad1dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/ReflectionPad1dImpl.java
new file mode 100644
index 0000000..016611b
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/ReflectionPad1dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ReflectionPad1d;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Reflection Pad1d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ReflectionPad1dImpl extends Padding_layersImpl implements ReflectionPad1d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ReflectionPad1dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Padding_layersPackage.Literals.REFLECTION_PAD1D;
+	}
+
+} //ReflectionPad1dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/ReflectionPad2dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/ReflectionPad2dImpl.java
new file mode 100644
index 0000000..71b1d0c
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/ReflectionPad2dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ReflectionPad2d;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Reflection Pad2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ReflectionPad2dImpl extends Padding_layersImpl implements ReflectionPad2d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ReflectionPad2dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Padding_layersPackage.Literals.REFLECTION_PAD2D;
+	}
+
+} //ReflectionPad2dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/ReplicationPad1dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/ReplicationPad1dImpl.java
new file mode 100644
index 0000000..2976667
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/ReplicationPad1dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ReplicationPad1d;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Replication Pad1d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ReplicationPad1dImpl extends Padding_layersImpl implements ReplicationPad1d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ReplicationPad1dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Padding_layersPackage.Literals.REPLICATION_PAD1D;
+	}
+
+} //ReplicationPad1dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/ReplicationPad2dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/ReplicationPad2dImpl.java
new file mode 100644
index 0000000..f958d83
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/ReplicationPad2dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ReplicationPad2d;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Replication Pad2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ReplicationPad2dImpl extends Padding_layersImpl implements ReplicationPad2d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ReplicationPad2dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Padding_layersPackage.Literals.REPLICATION_PAD2D;
+	}
+
+} //ReplicationPad2dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/ReplicationPad3dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/ReplicationPad3dImpl.java
new file mode 100644
index 0000000..23add35
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/ReplicationPad3dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ReplicationPad3d;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Replication Pad3d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ReplicationPad3dImpl extends Padding_layersImpl implements ReplicationPad3d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ReplicationPad3dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Padding_layersPackage.Literals.REPLICATION_PAD3D;
+	}
+
+} //ReplicationPad3dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/ZeroPad2dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/ZeroPad2dImpl.java
new file mode 100644
index 0000000..8c09a58
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/impl/ZeroPad2dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ZeroPad2d;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Zero Pad2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class ZeroPad2dImpl extends Padding_layersImpl implements ZeroPad2d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ZeroPad2dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Padding_layersPackage.Literals.ZERO_PAD2D;
+	}
+
+} //ZeroPad2dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/util/Padding_layersAdapterFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/util/Padding_layersAdapterFactory.java
new file mode 100644
index 0000000..4a028ce
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/util/Padding_layersAdapterFactory.java
@@ -0,0 +1,309 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage
+ * @generated
+ */
+public class Padding_layersAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static Padding_layersPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Padding_layersAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = Padding_layersPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Padding_layersSwitch<Adapter> modelSwitch =
+		new Padding_layersSwitch<Adapter>() {
+			@Override
+			public Adapter casePadding_layers(Padding_layers object) {
+				return createPadding_layersAdapter();
+			}
+			@Override
+			public Adapter caseReflectionPad1d(ReflectionPad1d object) {
+				return createReflectionPad1dAdapter();
+			}
+			@Override
+			public Adapter caseReflectionPad2d(ReflectionPad2d object) {
+				return createReflectionPad2dAdapter();
+			}
+			@Override
+			public Adapter caseReplicationPad1d(ReplicationPad1d object) {
+				return createReplicationPad1dAdapter();
+			}
+			@Override
+			public Adapter caseReplicationPad2d(ReplicationPad2d object) {
+				return createReplicationPad2dAdapter();
+			}
+			@Override
+			public Adapter caseReplicationPad3d(ReplicationPad3d object) {
+				return createReplicationPad3dAdapter();
+			}
+			@Override
+			public Adapter caseZeroPad2d(ZeroPad2d object) {
+				return createZeroPad2dAdapter();
+			}
+			@Override
+			public Adapter caseConstantPad1d(ConstantPad1d object) {
+				return createConstantPad1dAdapter();
+			}
+			@Override
+			public Adapter caseConstantPad2d(ConstantPad2d object) {
+				return createConstantPad2dAdapter();
+			}
+			@Override
+			public Adapter caseConstantPad3d(ConstantPad3d object) {
+				return createConstantPad3dAdapter();
+			}
+			@Override
+			public Adapter caseModel(Model object) {
+				return createModelAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layers <em>Padding layers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layers
+	 * @generated
+	 */
+	public Adapter createPadding_layersAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ReflectionPad1d <em>Reflection Pad1d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ReflectionPad1d
+	 * @generated
+	 */
+	public Adapter createReflectionPad1dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ReflectionPad2d <em>Reflection Pad2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ReflectionPad2d
+	 * @generated
+	 */
+	public Adapter createReflectionPad2dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ReplicationPad1d <em>Replication Pad1d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ReplicationPad1d
+	 * @generated
+	 */
+	public Adapter createReplicationPad1dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ReplicationPad2d <em>Replication Pad2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ReplicationPad2d
+	 * @generated
+	 */
+	public Adapter createReplicationPad2dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ReplicationPad3d <em>Replication Pad3d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ReplicationPad3d
+	 * @generated
+	 */
+	public Adapter createReplicationPad3dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ZeroPad2d <em>Zero Pad2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ZeroPad2d
+	 * @generated
+	 */
+	public Adapter createZeroPad2dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ConstantPad1d <em>Constant Pad1d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ConstantPad1d
+	 * @generated
+	 */
+	public Adapter createConstantPad1dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ConstantPad2d <em>Constant Pad2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ConstantPad2d
+	 * @generated
+	 */
+	public Adapter createConstantPad2dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ConstantPad3d <em>Constant Pad3d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.ConstantPad3d
+	 * @generated
+	 */
+	public Adapter createConstantPad3dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model <em>Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.Model
+	 * @generated
+	 */
+	public Adapter createModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //Padding_layersAdapterFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/util/Padding_layersSwitch.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/util/Padding_layersSwitch.java
new file mode 100644
index 0000000..d1d2839
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Padding_layers/util/Padding_layersSwitch.java
@@ -0,0 +1,342 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage
+ * @generated
+ */
+public class Padding_layersSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static Padding_layersPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Padding_layersSwitch() {
+		if (modelPackage == null) {
+			modelPackage = Padding_layersPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case Padding_layersPackage.PADDING_LAYERS: {
+				Padding_layers padding_layers = (Padding_layers)theEObject;
+				T result = casePadding_layers(padding_layers);
+				if (result == null) result = caseModel(padding_layers);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Padding_layersPackage.REFLECTION_PAD1D: {
+				ReflectionPad1d reflectionPad1d = (ReflectionPad1d)theEObject;
+				T result = caseReflectionPad1d(reflectionPad1d);
+				if (result == null) result = casePadding_layers(reflectionPad1d);
+				if (result == null) result = caseModel(reflectionPad1d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Padding_layersPackage.REFLECTION_PAD2D: {
+				ReflectionPad2d reflectionPad2d = (ReflectionPad2d)theEObject;
+				T result = caseReflectionPad2d(reflectionPad2d);
+				if (result == null) result = casePadding_layers(reflectionPad2d);
+				if (result == null) result = caseModel(reflectionPad2d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Padding_layersPackage.REPLICATION_PAD1D: {
+				ReplicationPad1d replicationPad1d = (ReplicationPad1d)theEObject;
+				T result = caseReplicationPad1d(replicationPad1d);
+				if (result == null) result = casePadding_layers(replicationPad1d);
+				if (result == null) result = caseModel(replicationPad1d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Padding_layersPackage.REPLICATION_PAD2D: {
+				ReplicationPad2d replicationPad2d = (ReplicationPad2d)theEObject;
+				T result = caseReplicationPad2d(replicationPad2d);
+				if (result == null) result = casePadding_layers(replicationPad2d);
+				if (result == null) result = caseModel(replicationPad2d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Padding_layersPackage.REPLICATION_PAD3D: {
+				ReplicationPad3d replicationPad3d = (ReplicationPad3d)theEObject;
+				T result = caseReplicationPad3d(replicationPad3d);
+				if (result == null) result = casePadding_layers(replicationPad3d);
+				if (result == null) result = caseModel(replicationPad3d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Padding_layersPackage.ZERO_PAD2D: {
+				ZeroPad2d zeroPad2d = (ZeroPad2d)theEObject;
+				T result = caseZeroPad2d(zeroPad2d);
+				if (result == null) result = casePadding_layers(zeroPad2d);
+				if (result == null) result = caseModel(zeroPad2d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Padding_layersPackage.CONSTANT_PAD1D: {
+				ConstantPad1d constantPad1d = (ConstantPad1d)theEObject;
+				T result = caseConstantPad1d(constantPad1d);
+				if (result == null) result = casePadding_layers(constantPad1d);
+				if (result == null) result = caseModel(constantPad1d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Padding_layersPackage.CONSTANT_PAD2D: {
+				ConstantPad2d constantPad2d = (ConstantPad2d)theEObject;
+				T result = caseConstantPad2d(constantPad2d);
+				if (result == null) result = casePadding_layers(constantPad2d);
+				if (result == null) result = caseModel(constantPad2d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Padding_layersPackage.CONSTANT_PAD3D: {
+				ConstantPad3d constantPad3d = (ConstantPad3d)theEObject;
+				T result = caseConstantPad3d(constantPad3d);
+				if (result == null) result = casePadding_layers(constantPad3d);
+				if (result == null) result = caseModel(constantPad3d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Padding layers</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Padding layers</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePadding_layers(Padding_layers object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Reflection Pad1d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Reflection Pad1d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseReflectionPad1d(ReflectionPad1d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Reflection Pad2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Reflection Pad2d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseReflectionPad2d(ReflectionPad2d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Replication Pad1d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Replication Pad1d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseReplicationPad1d(ReplicationPad1d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Replication Pad2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Replication Pad2d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseReplicationPad2d(ReplicationPad2d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Replication Pad3d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Replication Pad3d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseReplicationPad3d(ReplicationPad3d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Zero Pad2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Zero Pad2d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseZeroPad2d(ZeroPad2d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Constant Pad1d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Constant Pad1d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseConstantPad1d(ConstantPad1d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Constant Pad2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Constant Pad2d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseConstantPad2d(ConstantPad2d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Constant Pad3d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Constant Pad3d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseConstantPad3d(ConstantPad3d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseModel(Model object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //Padding_layersSwitch
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/AdaptativeMaxPool.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/AdaptativeMaxPool.java
new file mode 100644
index 0000000..a85d602
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/AdaptativeMaxPool.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Adaptative Max Pool</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptativeMaxPool#isReturn_indices <em>Return indices</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getAdaptativeMaxPool()
+ * @model abstract="true"
+ * @generated
+ */
+public interface AdaptativeMaxPool extends Pooling_layers_2 {
+	/**
+	 * Returns the value of the '<em><b>Return indices</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Return indices</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Return indices</em>' attribute.
+	 * @see #setReturn_indices(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getAdaptativeMaxPool_Return_indices()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" required="true" ordered="false"
+	 * @generated
+	 */
+	boolean isReturn_indices();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptativeMaxPool#isReturn_indices <em>Return indices</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Return indices</em>' attribute.
+	 * @see #isReturn_indices()
+	 * @generated
+	 */
+	void setReturn_indices(boolean value);
+
+} // AdaptativeMaxPool
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/AdaptativeMaxPool1d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/AdaptativeMaxPool1d.java
new file mode 100644
index 0000000..664e37e
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/AdaptativeMaxPool1d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Adaptative Max Pool1d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getAdaptativeMaxPool1d()
+ * @model
+ * @generated
+ */
+public interface AdaptativeMaxPool1d extends AdaptativeMaxPool {
+} // AdaptativeMaxPool1d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/AdaptativeMaxPool2d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/AdaptativeMaxPool2d.java
new file mode 100644
index 0000000..e8b5499
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/AdaptativeMaxPool2d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Adaptative Max Pool2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getAdaptativeMaxPool2d()
+ * @model
+ * @generated
+ */
+public interface AdaptativeMaxPool2d extends AdaptativeMaxPool {
+} // AdaptativeMaxPool2d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/AdaptativeMaxPool3d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/AdaptativeMaxPool3d.java
new file mode 100644
index 0000000..2d3b038
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/AdaptativeMaxPool3d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Adaptative Max Pool3d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getAdaptativeMaxPool3d()
+ * @model
+ * @generated
+ */
+public interface AdaptativeMaxPool3d extends AdaptativeMaxPool {
+} // AdaptativeMaxPool3d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/AdaptiveAvgPool1d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/AdaptiveAvgPool1d.java
new file mode 100644
index 0000000..ae590c4
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/AdaptiveAvgPool1d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Adaptive Avg Pool1d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getAdaptiveAvgPool1d()
+ * @model
+ * @generated
+ */
+public interface AdaptiveAvgPool1d extends Pooling_layers_2 {
+} // AdaptiveAvgPool1d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/AdaptiveAvgPool2d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/AdaptiveAvgPool2d.java
new file mode 100644
index 0000000..b9c1f9d
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/AdaptiveAvgPool2d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Adaptive Avg Pool2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getAdaptiveAvgPool2d()
+ * @model
+ * @generated
+ */
+public interface AdaptiveAvgPool2d extends Pooling_layers_2 {
+} // AdaptiveAvgPool2d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/AdaptiveAvgPool3d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/AdaptiveAvgPool3d.java
new file mode 100644
index 0000000..8b3c9b5
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/AdaptiveAvgPool3d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Adaptive Avg Pool3d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getAdaptiveAvgPool3d()
+ * @model
+ * @generated
+ */
+public interface AdaptiveAvgPool3d extends Pooling_layers_2 {
+} // AdaptiveAvgPool3d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/AvgPool1d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/AvgPool1d.java
new file mode 100644
index 0000000..eda8e64
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/AvgPool1d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Avg Pool1d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getAvgPool1d()
+ * @model
+ * @generated
+ */
+public interface AvgPool1d extends Pooling_layers_1_1_2_1 {
+} // AvgPool1d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/AvgPool2d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/AvgPool2d.java
new file mode 100644
index 0000000..1fad2f0
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/AvgPool2d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Avg Pool2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getAvgPool2d()
+ * @model
+ * @generated
+ */
+public interface AvgPool2d extends AvgPool2d3d {
+} // AvgPool2d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/AvgPool2d3d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/AvgPool2d3d.java
new file mode 100644
index 0000000..0753bd8
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/AvgPool2d3d.java
@@ -0,0 +1,59 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Avg Pool2d3d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AvgPool2d3d#getDivisor_override <em>Divisor override</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getAvgPool2d3d()
+ * @model abstract="true"
+ *        annotation="http://www.eclipse.org/uml2/2.0.0/UML originalName='AvgPool2d/3d'"
+ * @generated
+ */
+public interface AvgPool2d3d extends Pooling_layers_1_1_2_1 {
+	/**
+	 * Returns the value of the '<em><b>Divisor override</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Divisor override</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Divisor override</em>' attribute.
+	 * @see #setDivisor_override(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getAvgPool2d3d_Divisor_override()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	int getDivisor_override();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AvgPool2d3d#getDivisor_override <em>Divisor override</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Divisor override</em>' attribute.
+	 * @see #getDivisor_override()
+	 * @generated
+	 */
+	void setDivisor_override(int value);
+
+} // AvgPool2d3d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/AvgPool3d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/AvgPool3d.java
new file mode 100644
index 0000000..693fa6c
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/AvgPool3d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Avg Pool3d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getAvgPool3d()
+ * @model
+ * @generated
+ */
+public interface AvgPool3d extends AvgPool2d3d {
+} // AvgPool3d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/FractionalMaxPool2d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/FractionalMaxPool2d.java
new file mode 100644
index 0000000..3046663
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/FractionalMaxPool2d.java
@@ -0,0 +1,93 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Fractional Max Pool2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.FractionalMaxPool2d#getOutput_size <em>Output size</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.FractionalMaxPool2d#getOutput_ratio <em>Output ratio</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.FractionalMaxPool2d#isReturn_indices <em>Return indices</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getFractionalMaxPool2d()
+ * @model
+ * @generated
+ */
+public interface FractionalMaxPool2d extends Pooling_layers_1 {
+	/**
+	 * Returns the value of the '<em><b>Output size</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.Integer}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Output size</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Output size</em>' attribute list.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getFractionalMaxPool2d_Output_size()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	EList<Integer> getOutput_size();
+
+	/**
+	 * Returns the value of the '<em><b>Output ratio</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.Integer}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Output ratio</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Output ratio</em>' attribute list.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getFractionalMaxPool2d_Output_ratio()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	EList<Integer> getOutput_ratio();
+
+	/**
+	 * Returns the value of the '<em><b>Return indices</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Return indices</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Return indices</em>' attribute.
+	 * @see #setReturn_indices(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getFractionalMaxPool2d_Return_indices()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isReturn_indices();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.FractionalMaxPool2d#isReturn_indices <em>Return indices</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Return indices</em>' attribute.
+	 * @see #isReturn_indices()
+	 * @generated
+	 */
+	void setReturn_indices(boolean value);
+
+} // FractionalMaxPool2d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/LPPool1d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/LPPool1d.java
new file mode 100644
index 0000000..795deeb
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/LPPool1d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LP Pool1d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getLPPool1d()
+ * @model
+ * @generated
+ */
+public interface LPPool1d extends Pooling_layers_1_1_2 {
+} // LPPool1d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/LPPool2d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/LPPool2d.java
new file mode 100644
index 0000000..8296da0
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/LPPool2d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LP Pool2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getLPPool2d()
+ * @model
+ * @generated
+ */
+public interface LPPool2d extends Pooling_layers_1_1_2 {
+} // LPPool2d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/MaxPool.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/MaxPool.java
new file mode 100644
index 0000000..9bb9b60
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/MaxPool.java
@@ -0,0 +1,76 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Max Pool</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxPool#getDilation <em>Dilation</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxPool#isReturn_indices <em>Return indices</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getMaxPool()
+ * @model abstract="true"
+ * @generated
+ */
+public interface MaxPool extends Pooling_layers_1_1_1_1 {
+	/**
+	 * Returns the value of the '<em><b>Dilation</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.Integer}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Dilation</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Dilation</em>' attribute list.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getMaxPool_Dilation()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	EList<Integer> getDilation();
+
+	/**
+	 * Returns the value of the '<em><b>Return indices</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Return indices</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Return indices</em>' attribute.
+	 * @see #setReturn_indices(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getMaxPool_Return_indices()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isReturn_indices();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxPool#isReturn_indices <em>Return indices</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Return indices</em>' attribute.
+	 * @see #isReturn_indices()
+	 * @generated
+	 */
+	void setReturn_indices(boolean value);
+
+} // MaxPool
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/MaxPool1d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/MaxPool1d.java
new file mode 100644
index 0000000..0231375
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/MaxPool1d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Max Pool1d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getMaxPool1d()
+ * @model
+ * @generated
+ */
+public interface MaxPool1d extends MaxPool {
+} // MaxPool1d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/MaxPool2d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/MaxPool2d.java
new file mode 100644
index 0000000..5bb51f8
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/MaxPool2d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Max Pool2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getMaxPool2d()
+ * @model
+ * @generated
+ */
+public interface MaxPool2d extends MaxPool {
+} // MaxPool2d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/MaxPool3d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/MaxPool3d.java
new file mode 100644
index 0000000..fff7781
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/MaxPool3d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Max Pool3d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getMaxPool3d()
+ * @model
+ * @generated
+ */
+public interface MaxPool3d extends MaxPool {
+} // MaxPool3d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/MaxUnpool1d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/MaxUnpool1d.java
new file mode 100644
index 0000000..e8aadc2
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/MaxUnpool1d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Max Unpool1d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getMaxUnpool1d()
+ * @model
+ * @generated
+ */
+public interface MaxUnpool1d extends Pooling_layers_1_1_1 {
+} // MaxUnpool1d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/MaxUnpool2d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/MaxUnpool2d.java
new file mode 100644
index 0000000..4b47340
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/MaxUnpool2d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Max Unpool2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getMaxUnpool2d()
+ * @model
+ * @generated
+ */
+public interface MaxUnpool2d extends Pooling_layers_1_1_1 {
+} // MaxUnpool2d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/MaxUnpool3d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/MaxUnpool3d.java
new file mode 100644
index 0000000..aff2a32
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/MaxUnpool3d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Max Unpool3d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getMaxUnpool3d()
+ * @model
+ * @generated
+ */
+public interface MaxUnpool3d extends Pooling_layers_1_1_1 {
+} // MaxUnpool3d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/Pooling_layers.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/Pooling_layers.java
new file mode 100644
index 0000000..b513681
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/Pooling_layers.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Pooling layers</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getPooling_layers()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Pooling_layers extends Model {
+} // Pooling_layers
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/Pooling_layersFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/Pooling_layersFactory.java
new file mode 100644
index 0000000..2ff8b92
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/Pooling_layersFactory.java
@@ -0,0 +1,204 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage
+ * @generated
+ */
+public interface Pooling_layersFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	Pooling_layersFactory eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Adaptative Max Pool1d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Adaptative Max Pool1d</em>'.
+	 * @generated
+	 */
+	AdaptativeMaxPool1d createAdaptativeMaxPool1d();
+
+	/**
+	 * Returns a new object of class '<em>Adaptative Max Pool2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Adaptative Max Pool2d</em>'.
+	 * @generated
+	 */
+	AdaptativeMaxPool2d createAdaptativeMaxPool2d();
+
+	/**
+	 * Returns a new object of class '<em>Adaptative Max Pool3d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Adaptative Max Pool3d</em>'.
+	 * @generated
+	 */
+	AdaptativeMaxPool3d createAdaptativeMaxPool3d();
+
+	/**
+	 * Returns a new object of class '<em>Adaptive Avg Pool3d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Adaptive Avg Pool3d</em>'.
+	 * @generated
+	 */
+	AdaptiveAvgPool3d createAdaptiveAvgPool3d();
+
+	/**
+	 * Returns a new object of class '<em>Adaptive Avg Pool2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Adaptive Avg Pool2d</em>'.
+	 * @generated
+	 */
+	AdaptiveAvgPool2d createAdaptiveAvgPool2d();
+
+	/**
+	 * Returns a new object of class '<em>Adaptive Avg Pool1d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Adaptive Avg Pool1d</em>'.
+	 * @generated
+	 */
+	AdaptiveAvgPool1d createAdaptiveAvgPool1d();
+
+	/**
+	 * Returns a new object of class '<em>Max Pool1d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Max Pool1d</em>'.
+	 * @generated
+	 */
+	MaxPool1d createMaxPool1d();
+
+	/**
+	 * Returns a new object of class '<em>Max Unpool1d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Max Unpool1d</em>'.
+	 * @generated
+	 */
+	MaxUnpool1d createMaxUnpool1d();
+
+	/**
+	 * Returns a new object of class '<em>Avg Pool1d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Avg Pool1d</em>'.
+	 * @generated
+	 */
+	AvgPool1d createAvgPool1d();
+
+	/**
+	 * Returns a new object of class '<em>Max Unpool2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Max Unpool2d</em>'.
+	 * @generated
+	 */
+	MaxUnpool2d createMaxUnpool2d();
+
+	/**
+	 * Returns a new object of class '<em>Max Unpool3d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Max Unpool3d</em>'.
+	 * @generated
+	 */
+	MaxUnpool3d createMaxUnpool3d();
+
+	/**
+	 * Returns a new object of class '<em>LP Pool1d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LP Pool1d</em>'.
+	 * @generated
+	 */
+	LPPool1d createLPPool1d();
+
+	/**
+	 * Returns a new object of class '<em>LP Pool2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LP Pool2d</em>'.
+	 * @generated
+	 */
+	LPPool2d createLPPool2d();
+
+	/**
+	 * Returns a new object of class '<em>Avg Pool2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Avg Pool2d</em>'.
+	 * @generated
+	 */
+	AvgPool2d createAvgPool2d();
+
+	/**
+	 * Returns a new object of class '<em>Avg Pool3d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Avg Pool3d</em>'.
+	 * @generated
+	 */
+	AvgPool3d createAvgPool3d();
+
+	/**
+	 * Returns a new object of class '<em>Max Pool2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Max Pool2d</em>'.
+	 * @generated
+	 */
+	MaxPool2d createMaxPool2d();
+
+	/**
+	 * Returns a new object of class '<em>Max Pool3d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Max Pool3d</em>'.
+	 * @generated
+	 */
+	MaxPool3d createMaxPool3d();
+
+	/**
+	 * Returns a new object of class '<em>Fractional Max Pool2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Fractional Max Pool2d</em>'.
+	 * @generated
+	 */
+	FractionalMaxPool2d createFractionalMaxPool2d();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	Pooling_layersPackage getPooling_layersPackage();
+
+} //Pooling_layersFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/Pooling_layersPackage.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/Pooling_layersPackage.java
new file mode 100644
index 0000000..17dd226
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/Pooling_layersPackage.java
@@ -0,0 +1,4698 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface Pooling_layersPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "Pooling_layers"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://www.eclipse.org/papyrus/AIML/pooling/1"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "AIML.Pooling_layers"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	Pooling_layersPackage eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersImpl <em>Pooling layers</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getPooling_layers()
+	 * @generated
+	 */
+	int POOLING_LAYERS = 0;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS__BASE_CLASS = ModulePackage.MODEL__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS__NAME = ModulePackage.MODEL__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS__DATA = ModulePackage.MODEL__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS__REQUIRES_GRAD = ModulePackage.MODEL__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS__SUB_MODULE = ModulePackage.MODEL__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS__OPTIMIZER = ModulePackage.MODEL__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS__LOSS = ModulePackage.MODEL__LOSS;
+
+	/**
+	 * The number of structural features of the '<em>Pooling layers</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_FEATURE_COUNT = ModulePackage.MODEL_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Pooling layers</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_OPERATION_COUNT = ModulePackage.MODEL_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_1Impl <em>Pooling layers 1</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_1Impl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getPooling_layers_1()
+	 * @generated
+	 */
+	int POOLING_LAYERS_1 = 1;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1__BASE_CLASS = POOLING_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1__NAME = POOLING_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1__DATA = POOLING_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1__REQUIRES_GRAD = POOLING_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1__SUB_MODULE = POOLING_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1__OPTIMIZER = POOLING_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1__LOSS = POOLING_LAYERS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1__KERNEL_SIZE = POOLING_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Pooling layers 1</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1_FEATURE_COUNT = POOLING_LAYERS_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Pooling layers 1</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1_OPERATION_COUNT = POOLING_LAYERS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_2Impl <em>Pooling layers 2</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_2Impl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getPooling_layers_2()
+	 * @generated
+	 */
+	int POOLING_LAYERS_2 = 2;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_2__BASE_CLASS = POOLING_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_2__NAME = POOLING_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_2__DATA = POOLING_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_2__REQUIRES_GRAD = POOLING_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_2__SUB_MODULE = POOLING_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_2__OPTIMIZER = POOLING_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_2__LOSS = POOLING_LAYERS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Output size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_2__OUTPUT_SIZE = POOLING_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Pooling layers 2</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_2_FEATURE_COUNT = POOLING_LAYERS_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Pooling layers 2</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_2_OPERATION_COUNT = POOLING_LAYERS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AdaptativeMaxPoolImpl <em>Adaptative Max Pool</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AdaptativeMaxPoolImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getAdaptativeMaxPool()
+	 * @generated
+	 */
+	int ADAPTATIVE_MAX_POOL = 3;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL__BASE_CLASS = POOLING_LAYERS_2__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL__NAME = POOLING_LAYERS_2__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL__DATA = POOLING_LAYERS_2__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL__REQUIRES_GRAD = POOLING_LAYERS_2__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL__SUB_MODULE = POOLING_LAYERS_2__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL__OPTIMIZER = POOLING_LAYERS_2__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL__LOSS = POOLING_LAYERS_2__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Output size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL__OUTPUT_SIZE = POOLING_LAYERS_2__OUTPUT_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Return indices</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL__RETURN_INDICES = POOLING_LAYERS_2_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Adaptative Max Pool</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL_FEATURE_COUNT = POOLING_LAYERS_2_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Adaptative Max Pool</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL_OPERATION_COUNT = POOLING_LAYERS_2_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AdaptativeMaxPool1dImpl <em>Adaptative Max Pool1d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AdaptativeMaxPool1dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getAdaptativeMaxPool1d()
+	 * @generated
+	 */
+	int ADAPTATIVE_MAX_POOL1D = 4;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL1D__BASE_CLASS = ADAPTATIVE_MAX_POOL__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL1D__NAME = ADAPTATIVE_MAX_POOL__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL1D__DATA = ADAPTATIVE_MAX_POOL__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL1D__REQUIRES_GRAD = ADAPTATIVE_MAX_POOL__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL1D__SUB_MODULE = ADAPTATIVE_MAX_POOL__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL1D__OPTIMIZER = ADAPTATIVE_MAX_POOL__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL1D__LOSS = ADAPTATIVE_MAX_POOL__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Output size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL1D__OUTPUT_SIZE = ADAPTATIVE_MAX_POOL__OUTPUT_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Return indices</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL1D__RETURN_INDICES = ADAPTATIVE_MAX_POOL__RETURN_INDICES;
+
+	/**
+	 * The number of structural features of the '<em>Adaptative Max Pool1d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL1D_FEATURE_COUNT = ADAPTATIVE_MAX_POOL_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Adaptative Max Pool1d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL1D_OPERATION_COUNT = ADAPTATIVE_MAX_POOL_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AdaptativeMaxPool2dImpl <em>Adaptative Max Pool2d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AdaptativeMaxPool2dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getAdaptativeMaxPool2d()
+	 * @generated
+	 */
+	int ADAPTATIVE_MAX_POOL2D = 5;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL2D__BASE_CLASS = ADAPTATIVE_MAX_POOL__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL2D__NAME = ADAPTATIVE_MAX_POOL__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL2D__DATA = ADAPTATIVE_MAX_POOL__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL2D__REQUIRES_GRAD = ADAPTATIVE_MAX_POOL__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL2D__SUB_MODULE = ADAPTATIVE_MAX_POOL__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL2D__OPTIMIZER = ADAPTATIVE_MAX_POOL__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL2D__LOSS = ADAPTATIVE_MAX_POOL__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Output size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL2D__OUTPUT_SIZE = ADAPTATIVE_MAX_POOL__OUTPUT_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Return indices</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL2D__RETURN_INDICES = ADAPTATIVE_MAX_POOL__RETURN_INDICES;
+
+	/**
+	 * The number of structural features of the '<em>Adaptative Max Pool2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL2D_FEATURE_COUNT = ADAPTATIVE_MAX_POOL_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Adaptative Max Pool2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL2D_OPERATION_COUNT = ADAPTATIVE_MAX_POOL_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AdaptativeMaxPool3dImpl <em>Adaptative Max Pool3d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AdaptativeMaxPool3dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getAdaptativeMaxPool3d()
+	 * @generated
+	 */
+	int ADAPTATIVE_MAX_POOL3D = 6;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL3D__BASE_CLASS = ADAPTATIVE_MAX_POOL__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL3D__NAME = ADAPTATIVE_MAX_POOL__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL3D__DATA = ADAPTATIVE_MAX_POOL__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL3D__REQUIRES_GRAD = ADAPTATIVE_MAX_POOL__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL3D__SUB_MODULE = ADAPTATIVE_MAX_POOL__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL3D__OPTIMIZER = ADAPTATIVE_MAX_POOL__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL3D__LOSS = ADAPTATIVE_MAX_POOL__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Output size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL3D__OUTPUT_SIZE = ADAPTATIVE_MAX_POOL__OUTPUT_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Return indices</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL3D__RETURN_INDICES = ADAPTATIVE_MAX_POOL__RETURN_INDICES;
+
+	/**
+	 * The number of structural features of the '<em>Adaptative Max Pool3d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL3D_FEATURE_COUNT = ADAPTATIVE_MAX_POOL_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Adaptative Max Pool3d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTATIVE_MAX_POOL3D_OPERATION_COUNT = ADAPTATIVE_MAX_POOL_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AdaptiveAvgPool3dImpl <em>Adaptive Avg Pool3d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AdaptiveAvgPool3dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getAdaptiveAvgPool3d()
+	 * @generated
+	 */
+	int ADAPTIVE_AVG_POOL3D = 7;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_AVG_POOL3D__BASE_CLASS = POOLING_LAYERS_2__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_AVG_POOL3D__NAME = POOLING_LAYERS_2__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_AVG_POOL3D__DATA = POOLING_LAYERS_2__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_AVG_POOL3D__REQUIRES_GRAD = POOLING_LAYERS_2__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_AVG_POOL3D__SUB_MODULE = POOLING_LAYERS_2__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_AVG_POOL3D__OPTIMIZER = POOLING_LAYERS_2__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_AVG_POOL3D__LOSS = POOLING_LAYERS_2__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Output size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_AVG_POOL3D__OUTPUT_SIZE = POOLING_LAYERS_2__OUTPUT_SIZE;
+
+	/**
+	 * The number of structural features of the '<em>Adaptive Avg Pool3d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_AVG_POOL3D_FEATURE_COUNT = POOLING_LAYERS_2_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Adaptive Avg Pool3d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_AVG_POOL3D_OPERATION_COUNT = POOLING_LAYERS_2_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AdaptiveAvgPool2dImpl <em>Adaptive Avg Pool2d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AdaptiveAvgPool2dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getAdaptiveAvgPool2d()
+	 * @generated
+	 */
+	int ADAPTIVE_AVG_POOL2D = 8;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_AVG_POOL2D__BASE_CLASS = POOLING_LAYERS_2__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_AVG_POOL2D__NAME = POOLING_LAYERS_2__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_AVG_POOL2D__DATA = POOLING_LAYERS_2__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_AVG_POOL2D__REQUIRES_GRAD = POOLING_LAYERS_2__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_AVG_POOL2D__SUB_MODULE = POOLING_LAYERS_2__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_AVG_POOL2D__OPTIMIZER = POOLING_LAYERS_2__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_AVG_POOL2D__LOSS = POOLING_LAYERS_2__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Output size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_AVG_POOL2D__OUTPUT_SIZE = POOLING_LAYERS_2__OUTPUT_SIZE;
+
+	/**
+	 * The number of structural features of the '<em>Adaptive Avg Pool2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_AVG_POOL2D_FEATURE_COUNT = POOLING_LAYERS_2_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Adaptive Avg Pool2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_AVG_POOL2D_OPERATION_COUNT = POOLING_LAYERS_2_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AdaptiveAvgPool1dImpl <em>Adaptive Avg Pool1d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AdaptiveAvgPool1dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getAdaptiveAvgPool1d()
+	 * @generated
+	 */
+	int ADAPTIVE_AVG_POOL1D = 9;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_AVG_POOL1D__BASE_CLASS = POOLING_LAYERS_2__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_AVG_POOL1D__NAME = POOLING_LAYERS_2__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_AVG_POOL1D__DATA = POOLING_LAYERS_2__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_AVG_POOL1D__REQUIRES_GRAD = POOLING_LAYERS_2__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_AVG_POOL1D__SUB_MODULE = POOLING_LAYERS_2__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_AVG_POOL1D__OPTIMIZER = POOLING_LAYERS_2__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_AVG_POOL1D__LOSS = POOLING_LAYERS_2__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Output size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_AVG_POOL1D__OUTPUT_SIZE = POOLING_LAYERS_2__OUTPUT_SIZE;
+
+	/**
+	 * The number of structural features of the '<em>Adaptive Avg Pool1d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_AVG_POOL1D_FEATURE_COUNT = POOLING_LAYERS_2_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Adaptive Avg Pool1d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_AVG_POOL1D_OPERATION_COUNT = POOLING_LAYERS_2_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_1_1Impl <em>Pooling layers 11</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_1_1Impl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getPooling_layers_1_1()
+	 * @generated
+	 */
+	int POOLING_LAYERS_11 = 10;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_11__BASE_CLASS = POOLING_LAYERS_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_11__NAME = POOLING_LAYERS_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_11__DATA = POOLING_LAYERS_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_11__REQUIRES_GRAD = POOLING_LAYERS_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_11__SUB_MODULE = POOLING_LAYERS_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_11__OPTIMIZER = POOLING_LAYERS_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_11__LOSS = POOLING_LAYERS_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_11__KERNEL_SIZE = POOLING_LAYERS_1__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_11__STRIDE = POOLING_LAYERS_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Pooling layers 11</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_11_FEATURE_COUNT = POOLING_LAYERS_1_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Pooling layers 11</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_11_OPERATION_COUNT = POOLING_LAYERS_1_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_1_1_1Impl <em>Pooling layers 111</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_1_1_1Impl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getPooling_layers_1_1_1()
+	 * @generated
+	 */
+	int POOLING_LAYERS_111 = 14;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_111__BASE_CLASS = POOLING_LAYERS_11__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_111__NAME = POOLING_LAYERS_11__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_111__DATA = POOLING_LAYERS_11__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_111__REQUIRES_GRAD = POOLING_LAYERS_11__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_111__SUB_MODULE = POOLING_LAYERS_11__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_111__OPTIMIZER = POOLING_LAYERS_11__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_111__LOSS = POOLING_LAYERS_11__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_111__KERNEL_SIZE = POOLING_LAYERS_11__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_111__STRIDE = POOLING_LAYERS_11__STRIDE;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_111__PADDING = POOLING_LAYERS_11_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Padding k</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_111__PADDING_K = POOLING_LAYERS_11_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Pooling layers 111</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_111_FEATURE_COUNT = POOLING_LAYERS_11_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Pooling layers 111</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_111_OPERATION_COUNT = POOLING_LAYERS_11_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_1_1_1_1Impl <em>Pooling layers 1111</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_1_1_1_1Impl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getPooling_layers_1_1_1_1()
+	 * @generated
+	 */
+	int POOLING_LAYERS_1111 = 13;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1111__BASE_CLASS = POOLING_LAYERS_111__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1111__NAME = POOLING_LAYERS_111__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1111__DATA = POOLING_LAYERS_111__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1111__REQUIRES_GRAD = POOLING_LAYERS_111__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1111__SUB_MODULE = POOLING_LAYERS_111__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1111__OPTIMIZER = POOLING_LAYERS_111__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1111__LOSS = POOLING_LAYERS_111__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1111__KERNEL_SIZE = POOLING_LAYERS_111__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1111__STRIDE = POOLING_LAYERS_111__STRIDE;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1111__PADDING = POOLING_LAYERS_111__PADDING;
+
+	/**
+	 * The feature id for the '<em><b>Padding k</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1111__PADDING_K = POOLING_LAYERS_111__PADDING_K;
+
+	/**
+	 * The feature id for the '<em><b>Ceil mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1111__CEIL_MODE = POOLING_LAYERS_111_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Pool size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1111__POOL_SIZE = POOLING_LAYERS_111_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Pooling layers 1111</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1111_FEATURE_COUNT = POOLING_LAYERS_111_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Pooling layers 1111</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1111_OPERATION_COUNT = POOLING_LAYERS_111_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.MaxPoolImpl <em>Max Pool</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.MaxPoolImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getMaxPool()
+	 * @generated
+	 */
+	int MAX_POOL = 12;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL__BASE_CLASS = POOLING_LAYERS_1111__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL__NAME = POOLING_LAYERS_1111__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL__DATA = POOLING_LAYERS_1111__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL__REQUIRES_GRAD = POOLING_LAYERS_1111__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL__SUB_MODULE = POOLING_LAYERS_1111__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL__OPTIMIZER = POOLING_LAYERS_1111__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL__LOSS = POOLING_LAYERS_1111__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL__KERNEL_SIZE = POOLING_LAYERS_1111__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL__STRIDE = POOLING_LAYERS_1111__STRIDE;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL__PADDING = POOLING_LAYERS_1111__PADDING;
+
+	/**
+	 * The feature id for the '<em><b>Padding k</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL__PADDING_K = POOLING_LAYERS_1111__PADDING_K;
+
+	/**
+	 * The feature id for the '<em><b>Ceil mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL__CEIL_MODE = POOLING_LAYERS_1111__CEIL_MODE;
+
+	/**
+	 * The feature id for the '<em><b>Pool size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL__POOL_SIZE = POOLING_LAYERS_1111__POOL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Dilation</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL__DILATION = POOLING_LAYERS_1111_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Return indices</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL__RETURN_INDICES = POOLING_LAYERS_1111_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Max Pool</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL_FEATURE_COUNT = POOLING_LAYERS_1111_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Max Pool</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL_OPERATION_COUNT = POOLING_LAYERS_1111_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.MaxPool1dImpl <em>Max Pool1d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.MaxPool1dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getMaxPool1d()
+	 * @generated
+	 */
+	int MAX_POOL1D = 11;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL1D__BASE_CLASS = MAX_POOL__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL1D__NAME = MAX_POOL__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL1D__DATA = MAX_POOL__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL1D__REQUIRES_GRAD = MAX_POOL__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL1D__SUB_MODULE = MAX_POOL__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL1D__OPTIMIZER = MAX_POOL__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL1D__LOSS = MAX_POOL__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL1D__KERNEL_SIZE = MAX_POOL__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL1D__STRIDE = MAX_POOL__STRIDE;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL1D__PADDING = MAX_POOL__PADDING;
+
+	/**
+	 * The feature id for the '<em><b>Padding k</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL1D__PADDING_K = MAX_POOL__PADDING_K;
+
+	/**
+	 * The feature id for the '<em><b>Ceil mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL1D__CEIL_MODE = MAX_POOL__CEIL_MODE;
+
+	/**
+	 * The feature id for the '<em><b>Pool size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL1D__POOL_SIZE = MAX_POOL__POOL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Dilation</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL1D__DILATION = MAX_POOL__DILATION;
+
+	/**
+	 * The feature id for the '<em><b>Return indices</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL1D__RETURN_INDICES = MAX_POOL__RETURN_INDICES;
+
+	/**
+	 * The number of structural features of the '<em>Max Pool1d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL1D_FEATURE_COUNT = MAX_POOL_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Max Pool1d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL1D_OPERATION_COUNT = MAX_POOL_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.MaxUnpool1dImpl <em>Max Unpool1d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.MaxUnpool1dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getMaxUnpool1d()
+	 * @generated
+	 */
+	int MAX_UNPOOL1D = 15;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL1D__BASE_CLASS = POOLING_LAYERS_111__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL1D__NAME = POOLING_LAYERS_111__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL1D__DATA = POOLING_LAYERS_111__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL1D__REQUIRES_GRAD = POOLING_LAYERS_111__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL1D__SUB_MODULE = POOLING_LAYERS_111__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL1D__OPTIMIZER = POOLING_LAYERS_111__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL1D__LOSS = POOLING_LAYERS_111__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL1D__KERNEL_SIZE = POOLING_LAYERS_111__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL1D__STRIDE = POOLING_LAYERS_111__STRIDE;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL1D__PADDING = POOLING_LAYERS_111__PADDING;
+
+	/**
+	 * The feature id for the '<em><b>Padding k</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL1D__PADDING_K = POOLING_LAYERS_111__PADDING_K;
+
+	/**
+	 * The number of structural features of the '<em>Max Unpool1d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL1D_FEATURE_COUNT = POOLING_LAYERS_111_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Max Unpool1d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL1D_OPERATION_COUNT = POOLING_LAYERS_111_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_1_1_2_1Impl <em>Pooling layers 1121</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_1_1_2_1Impl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getPooling_layers_1_1_2_1()
+	 * @generated
+	 */
+	int POOLING_LAYERS_1121 = 17;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1121__BASE_CLASS = POOLING_LAYERS_1111__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1121__NAME = POOLING_LAYERS_1111__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1121__DATA = POOLING_LAYERS_1111__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1121__REQUIRES_GRAD = POOLING_LAYERS_1111__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1121__SUB_MODULE = POOLING_LAYERS_1111__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1121__OPTIMIZER = POOLING_LAYERS_1111__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1121__LOSS = POOLING_LAYERS_1111__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1121__KERNEL_SIZE = POOLING_LAYERS_1111__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1121__STRIDE = POOLING_LAYERS_1111__STRIDE;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1121__PADDING = POOLING_LAYERS_1111__PADDING;
+
+	/**
+	 * The feature id for the '<em><b>Padding k</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1121__PADDING_K = POOLING_LAYERS_1111__PADDING_K;
+
+	/**
+	 * The feature id for the '<em><b>Ceil mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1121__CEIL_MODE = POOLING_LAYERS_1111__CEIL_MODE;
+
+	/**
+	 * The feature id for the '<em><b>Pool size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1121__POOL_SIZE = POOLING_LAYERS_1111__POOL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Count include pad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1121__COUNT_INCLUDE_PAD = POOLING_LAYERS_1111_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Pooling layers 1121</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1121_FEATURE_COUNT = POOLING_LAYERS_1111_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Pooling layers 1121</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_1121_OPERATION_COUNT = POOLING_LAYERS_1111_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AvgPool1dImpl <em>Avg Pool1d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AvgPool1dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getAvgPool1d()
+	 * @generated
+	 */
+	int AVG_POOL1D = 16;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL1D__BASE_CLASS = POOLING_LAYERS_1121__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL1D__NAME = POOLING_LAYERS_1121__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL1D__DATA = POOLING_LAYERS_1121__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL1D__REQUIRES_GRAD = POOLING_LAYERS_1121__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL1D__SUB_MODULE = POOLING_LAYERS_1121__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL1D__OPTIMIZER = POOLING_LAYERS_1121__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL1D__LOSS = POOLING_LAYERS_1121__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL1D__KERNEL_SIZE = POOLING_LAYERS_1121__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL1D__STRIDE = POOLING_LAYERS_1121__STRIDE;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL1D__PADDING = POOLING_LAYERS_1121__PADDING;
+
+	/**
+	 * The feature id for the '<em><b>Padding k</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL1D__PADDING_K = POOLING_LAYERS_1121__PADDING_K;
+
+	/**
+	 * The feature id for the '<em><b>Ceil mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL1D__CEIL_MODE = POOLING_LAYERS_1121__CEIL_MODE;
+
+	/**
+	 * The feature id for the '<em><b>Pool size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL1D__POOL_SIZE = POOLING_LAYERS_1121__POOL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Count include pad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL1D__COUNT_INCLUDE_PAD = POOLING_LAYERS_1121__COUNT_INCLUDE_PAD;
+
+	/**
+	 * The number of structural features of the '<em>Avg Pool1d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL1D_FEATURE_COUNT = POOLING_LAYERS_1121_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Avg Pool1d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL1D_OPERATION_COUNT = POOLING_LAYERS_1121_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.MaxUnpool2dImpl <em>Max Unpool2d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.MaxUnpool2dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getMaxUnpool2d()
+	 * @generated
+	 */
+	int MAX_UNPOOL2D = 18;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL2D__BASE_CLASS = POOLING_LAYERS_111__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL2D__NAME = POOLING_LAYERS_111__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL2D__DATA = POOLING_LAYERS_111__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL2D__REQUIRES_GRAD = POOLING_LAYERS_111__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL2D__SUB_MODULE = POOLING_LAYERS_111__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL2D__OPTIMIZER = POOLING_LAYERS_111__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL2D__LOSS = POOLING_LAYERS_111__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL2D__KERNEL_SIZE = POOLING_LAYERS_111__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL2D__STRIDE = POOLING_LAYERS_111__STRIDE;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL2D__PADDING = POOLING_LAYERS_111__PADDING;
+
+	/**
+	 * The feature id for the '<em><b>Padding k</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL2D__PADDING_K = POOLING_LAYERS_111__PADDING_K;
+
+	/**
+	 * The number of structural features of the '<em>Max Unpool2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL2D_FEATURE_COUNT = POOLING_LAYERS_111_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Max Unpool2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL2D_OPERATION_COUNT = POOLING_LAYERS_111_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.MaxUnpool3dImpl <em>Max Unpool3d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.MaxUnpool3dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getMaxUnpool3d()
+	 * @generated
+	 */
+	int MAX_UNPOOL3D = 19;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL3D__BASE_CLASS = POOLING_LAYERS_111__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL3D__NAME = POOLING_LAYERS_111__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL3D__DATA = POOLING_LAYERS_111__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL3D__REQUIRES_GRAD = POOLING_LAYERS_111__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL3D__SUB_MODULE = POOLING_LAYERS_111__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL3D__OPTIMIZER = POOLING_LAYERS_111__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL3D__LOSS = POOLING_LAYERS_111__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL3D__KERNEL_SIZE = POOLING_LAYERS_111__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL3D__STRIDE = POOLING_LAYERS_111__STRIDE;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL3D__PADDING = POOLING_LAYERS_111__PADDING;
+
+	/**
+	 * The feature id for the '<em><b>Padding k</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL3D__PADDING_K = POOLING_LAYERS_111__PADDING_K;
+
+	/**
+	 * The number of structural features of the '<em>Max Unpool3d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL3D_FEATURE_COUNT = POOLING_LAYERS_111_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Max Unpool3d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_UNPOOL3D_OPERATION_COUNT = POOLING_LAYERS_111_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_1_1_2Impl <em>Pooling layers 112</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_1_1_2Impl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getPooling_layers_1_1_2()
+	 * @generated
+	 */
+	int POOLING_LAYERS_112 = 20;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_112__BASE_CLASS = POOLING_LAYERS_11__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_112__NAME = POOLING_LAYERS_11__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_112__DATA = POOLING_LAYERS_11__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_112__REQUIRES_GRAD = POOLING_LAYERS_11__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_112__SUB_MODULE = POOLING_LAYERS_11__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_112__OPTIMIZER = POOLING_LAYERS_11__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_112__LOSS = POOLING_LAYERS_11__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_112__KERNEL_SIZE = POOLING_LAYERS_11__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_112__STRIDE = POOLING_LAYERS_11__STRIDE;
+
+	/**
+	 * The feature id for the '<em><b>Ceil mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_112__CEIL_MODE = POOLING_LAYERS_11_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Pooling layers 112</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_112_FEATURE_COUNT = POOLING_LAYERS_11_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Pooling layers 112</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int POOLING_LAYERS_112_OPERATION_COUNT = POOLING_LAYERS_11_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.LPPool1dImpl <em>LP Pool1d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.LPPool1dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getLPPool1d()
+	 * @generated
+	 */
+	int LP_POOL1D = 21;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LP_POOL1D__BASE_CLASS = POOLING_LAYERS_112__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LP_POOL1D__NAME = POOLING_LAYERS_112__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LP_POOL1D__DATA = POOLING_LAYERS_112__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LP_POOL1D__REQUIRES_GRAD = POOLING_LAYERS_112__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LP_POOL1D__SUB_MODULE = POOLING_LAYERS_112__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LP_POOL1D__OPTIMIZER = POOLING_LAYERS_112__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LP_POOL1D__LOSS = POOLING_LAYERS_112__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LP_POOL1D__KERNEL_SIZE = POOLING_LAYERS_112__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LP_POOL1D__STRIDE = POOLING_LAYERS_112__STRIDE;
+
+	/**
+	 * The feature id for the '<em><b>Ceil mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LP_POOL1D__CEIL_MODE = POOLING_LAYERS_112__CEIL_MODE;
+
+	/**
+	 * The number of structural features of the '<em>LP Pool1d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LP_POOL1D_FEATURE_COUNT = POOLING_LAYERS_112_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>LP Pool1d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LP_POOL1D_OPERATION_COUNT = POOLING_LAYERS_112_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.LPPool2dImpl <em>LP Pool2d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.LPPool2dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getLPPool2d()
+	 * @generated
+	 */
+	int LP_POOL2D = 22;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LP_POOL2D__BASE_CLASS = POOLING_LAYERS_112__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LP_POOL2D__NAME = POOLING_LAYERS_112__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LP_POOL2D__DATA = POOLING_LAYERS_112__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LP_POOL2D__REQUIRES_GRAD = POOLING_LAYERS_112__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LP_POOL2D__SUB_MODULE = POOLING_LAYERS_112__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LP_POOL2D__OPTIMIZER = POOLING_LAYERS_112__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LP_POOL2D__LOSS = POOLING_LAYERS_112__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LP_POOL2D__KERNEL_SIZE = POOLING_LAYERS_112__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LP_POOL2D__STRIDE = POOLING_LAYERS_112__STRIDE;
+
+	/**
+	 * The feature id for the '<em><b>Ceil mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LP_POOL2D__CEIL_MODE = POOLING_LAYERS_112__CEIL_MODE;
+
+	/**
+	 * The number of structural features of the '<em>LP Pool2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LP_POOL2D_FEATURE_COUNT = POOLING_LAYERS_112_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>LP Pool2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LP_POOL2D_OPERATION_COUNT = POOLING_LAYERS_112_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AvgPool2d3dImpl <em>Avg Pool2d3d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AvgPool2d3dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getAvgPool2d3d()
+	 * @generated
+	 */
+	int AVG_POOL2D3D = 23;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D3D__BASE_CLASS = POOLING_LAYERS_1121__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D3D__NAME = POOLING_LAYERS_1121__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D3D__DATA = POOLING_LAYERS_1121__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D3D__REQUIRES_GRAD = POOLING_LAYERS_1121__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D3D__SUB_MODULE = POOLING_LAYERS_1121__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D3D__OPTIMIZER = POOLING_LAYERS_1121__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D3D__LOSS = POOLING_LAYERS_1121__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D3D__KERNEL_SIZE = POOLING_LAYERS_1121__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D3D__STRIDE = POOLING_LAYERS_1121__STRIDE;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D3D__PADDING = POOLING_LAYERS_1121__PADDING;
+
+	/**
+	 * The feature id for the '<em><b>Padding k</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D3D__PADDING_K = POOLING_LAYERS_1121__PADDING_K;
+
+	/**
+	 * The feature id for the '<em><b>Ceil mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D3D__CEIL_MODE = POOLING_LAYERS_1121__CEIL_MODE;
+
+	/**
+	 * The feature id for the '<em><b>Pool size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D3D__POOL_SIZE = POOLING_LAYERS_1121__POOL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Count include pad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D3D__COUNT_INCLUDE_PAD = POOLING_LAYERS_1121__COUNT_INCLUDE_PAD;
+
+	/**
+	 * The feature id for the '<em><b>Divisor override</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D3D__DIVISOR_OVERRIDE = POOLING_LAYERS_1121_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Avg Pool2d3d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D3D_FEATURE_COUNT = POOLING_LAYERS_1121_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Avg Pool2d3d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D3D_OPERATION_COUNT = POOLING_LAYERS_1121_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AvgPool2dImpl <em>Avg Pool2d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AvgPool2dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getAvgPool2d()
+	 * @generated
+	 */
+	int AVG_POOL2D = 24;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D__BASE_CLASS = AVG_POOL2D3D__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D__NAME = AVG_POOL2D3D__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D__DATA = AVG_POOL2D3D__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D__REQUIRES_GRAD = AVG_POOL2D3D__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D__SUB_MODULE = AVG_POOL2D3D__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D__OPTIMIZER = AVG_POOL2D3D__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D__LOSS = AVG_POOL2D3D__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D__KERNEL_SIZE = AVG_POOL2D3D__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D__STRIDE = AVG_POOL2D3D__STRIDE;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D__PADDING = AVG_POOL2D3D__PADDING;
+
+	/**
+	 * The feature id for the '<em><b>Padding k</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D__PADDING_K = AVG_POOL2D3D__PADDING_K;
+
+	/**
+	 * The feature id for the '<em><b>Ceil mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D__CEIL_MODE = AVG_POOL2D3D__CEIL_MODE;
+
+	/**
+	 * The feature id for the '<em><b>Pool size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D__POOL_SIZE = AVG_POOL2D3D__POOL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Count include pad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D__COUNT_INCLUDE_PAD = AVG_POOL2D3D__COUNT_INCLUDE_PAD;
+
+	/**
+	 * The feature id for the '<em><b>Divisor override</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D__DIVISOR_OVERRIDE = AVG_POOL2D3D__DIVISOR_OVERRIDE;
+
+	/**
+	 * The number of structural features of the '<em>Avg Pool2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D_FEATURE_COUNT = AVG_POOL2D3D_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Avg Pool2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL2D_OPERATION_COUNT = AVG_POOL2D3D_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AvgPool3dImpl <em>Avg Pool3d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AvgPool3dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getAvgPool3d()
+	 * @generated
+	 */
+	int AVG_POOL3D = 25;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL3D__BASE_CLASS = AVG_POOL2D3D__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL3D__NAME = AVG_POOL2D3D__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL3D__DATA = AVG_POOL2D3D__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL3D__REQUIRES_GRAD = AVG_POOL2D3D__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL3D__SUB_MODULE = AVG_POOL2D3D__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL3D__OPTIMIZER = AVG_POOL2D3D__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL3D__LOSS = AVG_POOL2D3D__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL3D__KERNEL_SIZE = AVG_POOL2D3D__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL3D__STRIDE = AVG_POOL2D3D__STRIDE;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL3D__PADDING = AVG_POOL2D3D__PADDING;
+
+	/**
+	 * The feature id for the '<em><b>Padding k</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL3D__PADDING_K = AVG_POOL2D3D__PADDING_K;
+
+	/**
+	 * The feature id for the '<em><b>Ceil mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL3D__CEIL_MODE = AVG_POOL2D3D__CEIL_MODE;
+
+	/**
+	 * The feature id for the '<em><b>Pool size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL3D__POOL_SIZE = AVG_POOL2D3D__POOL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Count include pad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL3D__COUNT_INCLUDE_PAD = AVG_POOL2D3D__COUNT_INCLUDE_PAD;
+
+	/**
+	 * The feature id for the '<em><b>Divisor override</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL3D__DIVISOR_OVERRIDE = AVG_POOL2D3D__DIVISOR_OVERRIDE;
+
+	/**
+	 * The number of structural features of the '<em>Avg Pool3d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL3D_FEATURE_COUNT = AVG_POOL2D3D_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Avg Pool3d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int AVG_POOL3D_OPERATION_COUNT = AVG_POOL2D3D_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.MaxPool2dImpl <em>Max Pool2d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.MaxPool2dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getMaxPool2d()
+	 * @generated
+	 */
+	int MAX_POOL2D = 26;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL2D__BASE_CLASS = MAX_POOL__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL2D__NAME = MAX_POOL__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL2D__DATA = MAX_POOL__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL2D__REQUIRES_GRAD = MAX_POOL__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL2D__SUB_MODULE = MAX_POOL__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL2D__OPTIMIZER = MAX_POOL__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL2D__LOSS = MAX_POOL__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL2D__KERNEL_SIZE = MAX_POOL__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL2D__STRIDE = MAX_POOL__STRIDE;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL2D__PADDING = MAX_POOL__PADDING;
+
+	/**
+	 * The feature id for the '<em><b>Padding k</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL2D__PADDING_K = MAX_POOL__PADDING_K;
+
+	/**
+	 * The feature id for the '<em><b>Ceil mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL2D__CEIL_MODE = MAX_POOL__CEIL_MODE;
+
+	/**
+	 * The feature id for the '<em><b>Pool size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL2D__POOL_SIZE = MAX_POOL__POOL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Dilation</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL2D__DILATION = MAX_POOL__DILATION;
+
+	/**
+	 * The feature id for the '<em><b>Return indices</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL2D__RETURN_INDICES = MAX_POOL__RETURN_INDICES;
+
+	/**
+	 * The number of structural features of the '<em>Max Pool2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL2D_FEATURE_COUNT = MAX_POOL_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Max Pool2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL2D_OPERATION_COUNT = MAX_POOL_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.MaxPool3dImpl <em>Max Pool3d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.MaxPool3dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getMaxPool3d()
+	 * @generated
+	 */
+	int MAX_POOL3D = 27;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL3D__BASE_CLASS = MAX_POOL__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL3D__NAME = MAX_POOL__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL3D__DATA = MAX_POOL__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL3D__REQUIRES_GRAD = MAX_POOL__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL3D__SUB_MODULE = MAX_POOL__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL3D__OPTIMIZER = MAX_POOL__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL3D__LOSS = MAX_POOL__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL3D__KERNEL_SIZE = MAX_POOL__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Stride</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL3D__STRIDE = MAX_POOL__STRIDE;
+
+	/**
+	 * The feature id for the '<em><b>Padding</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL3D__PADDING = MAX_POOL__PADDING;
+
+	/**
+	 * The feature id for the '<em><b>Padding k</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL3D__PADDING_K = MAX_POOL__PADDING_K;
+
+	/**
+	 * The feature id for the '<em><b>Ceil mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL3D__CEIL_MODE = MAX_POOL__CEIL_MODE;
+
+	/**
+	 * The feature id for the '<em><b>Pool size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL3D__POOL_SIZE = MAX_POOL__POOL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Dilation</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL3D__DILATION = MAX_POOL__DILATION;
+
+	/**
+	 * The feature id for the '<em><b>Return indices</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL3D__RETURN_INDICES = MAX_POOL__RETURN_INDICES;
+
+	/**
+	 * The number of structural features of the '<em>Max Pool3d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL3D_FEATURE_COUNT = MAX_POOL_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Max Pool3d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int MAX_POOL3D_OPERATION_COUNT = MAX_POOL_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.FractionalMaxPool2dImpl <em>Fractional Max Pool2d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.FractionalMaxPool2dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getFractionalMaxPool2d()
+	 * @generated
+	 */
+	int FRACTIONAL_MAX_POOL2D = 28;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FRACTIONAL_MAX_POOL2D__BASE_CLASS = POOLING_LAYERS_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FRACTIONAL_MAX_POOL2D__NAME = POOLING_LAYERS_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FRACTIONAL_MAX_POOL2D__DATA = POOLING_LAYERS_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FRACTIONAL_MAX_POOL2D__REQUIRES_GRAD = POOLING_LAYERS_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FRACTIONAL_MAX_POOL2D__SUB_MODULE = POOLING_LAYERS_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FRACTIONAL_MAX_POOL2D__OPTIMIZER = POOLING_LAYERS_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FRACTIONAL_MAX_POOL2D__LOSS = POOLING_LAYERS_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FRACTIONAL_MAX_POOL2D__KERNEL_SIZE = POOLING_LAYERS_1__KERNEL_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Output size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FRACTIONAL_MAX_POOL2D__OUTPUT_SIZE = POOLING_LAYERS_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Output ratio</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FRACTIONAL_MAX_POOL2D__OUTPUT_RATIO = POOLING_LAYERS_1_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Return indices</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FRACTIONAL_MAX_POOL2D__RETURN_INDICES = POOLING_LAYERS_1_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Fractional Max Pool2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FRACTIONAL_MAX_POOL2D_FEATURE_COUNT = POOLING_LAYERS_1_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of operations of the '<em>Fractional Max Pool2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FRACTIONAL_MAX_POOL2D_OPERATION_COUNT = POOLING_LAYERS_1_OPERATION_COUNT + 0;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers <em>Pooling layers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Pooling layers</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers
+	 * @generated
+	 */
+	EClass getPooling_layers();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1 <em>Pooling layers 1</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Pooling layers 1</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1
+	 * @generated
+	 */
+	EClass getPooling_layers_1();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1#getKernel_size <em>Kernel size</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Kernel size</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1#getKernel_size()
+	 * @see #getPooling_layers_1()
+	 * @generated
+	 */
+	EAttribute getPooling_layers_1_Kernel_size();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_2 <em>Pooling layers 2</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Pooling layers 2</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_2
+	 * @generated
+	 */
+	EClass getPooling_layers_2();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_2#getOutput_size <em>Output size</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Output size</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_2#getOutput_size()
+	 * @see #getPooling_layers_2()
+	 * @generated
+	 */
+	EAttribute getPooling_layers_2_Output_size();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptativeMaxPool <em>Adaptative Max Pool</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Adaptative Max Pool</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptativeMaxPool
+	 * @generated
+	 */
+	EClass getAdaptativeMaxPool();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptativeMaxPool#isReturn_indices <em>Return indices</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Return indices</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptativeMaxPool#isReturn_indices()
+	 * @see #getAdaptativeMaxPool()
+	 * @generated
+	 */
+	EAttribute getAdaptativeMaxPool_Return_indices();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptativeMaxPool1d <em>Adaptative Max Pool1d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Adaptative Max Pool1d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptativeMaxPool1d
+	 * @generated
+	 */
+	EClass getAdaptativeMaxPool1d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptativeMaxPool2d <em>Adaptative Max Pool2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Adaptative Max Pool2d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptativeMaxPool2d
+	 * @generated
+	 */
+	EClass getAdaptativeMaxPool2d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptativeMaxPool3d <em>Adaptative Max Pool3d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Adaptative Max Pool3d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptativeMaxPool3d
+	 * @generated
+	 */
+	EClass getAdaptativeMaxPool3d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptiveAvgPool3d <em>Adaptive Avg Pool3d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Adaptive Avg Pool3d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptiveAvgPool3d
+	 * @generated
+	 */
+	EClass getAdaptiveAvgPool3d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptiveAvgPool2d <em>Adaptive Avg Pool2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Adaptive Avg Pool2d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptiveAvgPool2d
+	 * @generated
+	 */
+	EClass getAdaptiveAvgPool2d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptiveAvgPool1d <em>Adaptive Avg Pool1d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Adaptive Avg Pool1d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptiveAvgPool1d
+	 * @generated
+	 */
+	EClass getAdaptiveAvgPool1d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1 <em>Pooling layers 11</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Pooling layers 11</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1
+	 * @generated
+	 */
+	EClass getPooling_layers_1_1();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1#getStride <em>Stride</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Stride</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1#getStride()
+	 * @see #getPooling_layers_1_1()
+	 * @generated
+	 */
+	EAttribute getPooling_layers_1_1_Stride();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxPool1d <em>Max Pool1d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Max Pool1d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxPool1d
+	 * @generated
+	 */
+	EClass getMaxPool1d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxPool <em>Max Pool</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Max Pool</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxPool
+	 * @generated
+	 */
+	EClass getMaxPool();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxPool#getDilation <em>Dilation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Dilation</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxPool#getDilation()
+	 * @see #getMaxPool()
+	 * @generated
+	 */
+	EAttribute getMaxPool_Dilation();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxPool#isReturn_indices <em>Return indices</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Return indices</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxPool#isReturn_indices()
+	 * @see #getMaxPool()
+	 * @generated
+	 */
+	EAttribute getMaxPool_Return_indices();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_1_1 <em>Pooling layers 1111</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Pooling layers 1111</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_1_1
+	 * @generated
+	 */
+	EClass getPooling_layers_1_1_1_1();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_1_1#isCeil_mode <em>Ceil mode</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Ceil mode</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_1_1#isCeil_mode()
+	 * @see #getPooling_layers_1_1_1_1()
+	 * @generated
+	 */
+	EAttribute getPooling_layers_1_1_1_1_Ceil_mode();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_1_1#getPool_size <em>Pool size</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Pool size</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_1_1#getPool_size()
+	 * @see #getPooling_layers_1_1_1_1()
+	 * @generated
+	 */
+	EAttribute getPooling_layers_1_1_1_1_Pool_size();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_1 <em>Pooling layers 111</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Pooling layers 111</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_1
+	 * @generated
+	 */
+	EClass getPooling_layers_1_1_1();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_1#getPadding <em>Padding</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Padding</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_1#getPadding()
+	 * @see #getPooling_layers_1_1_1()
+	 * @generated
+	 */
+	EAttribute getPooling_layers_1_1_1_Padding();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_1#getPadding_k <em>Padding k</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Padding k</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_1#getPadding_k()
+	 * @see #getPooling_layers_1_1_1()
+	 * @generated
+	 */
+	EAttribute getPooling_layers_1_1_1_Padding_k();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxUnpool1d <em>Max Unpool1d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Max Unpool1d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxUnpool1d
+	 * @generated
+	 */
+	EClass getMaxUnpool1d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AvgPool1d <em>Avg Pool1d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Avg Pool1d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AvgPool1d
+	 * @generated
+	 */
+	EClass getAvgPool1d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_2_1 <em>Pooling layers 1121</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Pooling layers 1121</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_2_1
+	 * @generated
+	 */
+	EClass getPooling_layers_1_1_2_1();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_2_1#isCount_include_pad <em>Count include pad</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Count include pad</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_2_1#isCount_include_pad()
+	 * @see #getPooling_layers_1_1_2_1()
+	 * @generated
+	 */
+	EAttribute getPooling_layers_1_1_2_1_Count_include_pad();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxUnpool2d <em>Max Unpool2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Max Unpool2d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxUnpool2d
+	 * @generated
+	 */
+	EClass getMaxUnpool2d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxUnpool3d <em>Max Unpool3d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Max Unpool3d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxUnpool3d
+	 * @generated
+	 */
+	EClass getMaxUnpool3d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_2 <em>Pooling layers 112</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Pooling layers 112</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_2
+	 * @generated
+	 */
+	EClass getPooling_layers_1_1_2();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_2#isCeil_mode <em>Ceil mode</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Ceil mode</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_2#isCeil_mode()
+	 * @see #getPooling_layers_1_1_2()
+	 * @generated
+	 */
+	EAttribute getPooling_layers_1_1_2_Ceil_mode();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.LPPool1d <em>LP Pool1d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LP Pool1d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.LPPool1d
+	 * @generated
+	 */
+	EClass getLPPool1d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.LPPool2d <em>LP Pool2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LP Pool2d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.LPPool2d
+	 * @generated
+	 */
+	EClass getLPPool2d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AvgPool2d3d <em>Avg Pool2d3d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Avg Pool2d3d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AvgPool2d3d
+	 * @generated
+	 */
+	EClass getAvgPool2d3d();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AvgPool2d3d#getDivisor_override <em>Divisor override</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Divisor override</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AvgPool2d3d#getDivisor_override()
+	 * @see #getAvgPool2d3d()
+	 * @generated
+	 */
+	EAttribute getAvgPool2d3d_Divisor_override();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AvgPool2d <em>Avg Pool2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Avg Pool2d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AvgPool2d
+	 * @generated
+	 */
+	EClass getAvgPool2d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AvgPool3d <em>Avg Pool3d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Avg Pool3d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AvgPool3d
+	 * @generated
+	 */
+	EClass getAvgPool3d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxPool2d <em>Max Pool2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Max Pool2d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxPool2d
+	 * @generated
+	 */
+	EClass getMaxPool2d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxPool3d <em>Max Pool3d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Max Pool3d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxPool3d
+	 * @generated
+	 */
+	EClass getMaxPool3d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.FractionalMaxPool2d <em>Fractional Max Pool2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Fractional Max Pool2d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.FractionalMaxPool2d
+	 * @generated
+	 */
+	EClass getFractionalMaxPool2d();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.FractionalMaxPool2d#getOutput_size <em>Output size</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Output size</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.FractionalMaxPool2d#getOutput_size()
+	 * @see #getFractionalMaxPool2d()
+	 * @generated
+	 */
+	EAttribute getFractionalMaxPool2d_Output_size();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.FractionalMaxPool2d#getOutput_ratio <em>Output ratio</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Output ratio</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.FractionalMaxPool2d#getOutput_ratio()
+	 * @see #getFractionalMaxPool2d()
+	 * @generated
+	 */
+	EAttribute getFractionalMaxPool2d_Output_ratio();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.FractionalMaxPool2d#isReturn_indices <em>Return indices</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Return indices</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.FractionalMaxPool2d#isReturn_indices()
+	 * @see #getFractionalMaxPool2d()
+	 * @generated
+	 */
+	EAttribute getFractionalMaxPool2d_Return_indices();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	Pooling_layersFactory getPooling_layersFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersImpl <em>Pooling layers</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getPooling_layers()
+		 * @generated
+		 */
+		EClass POOLING_LAYERS = eINSTANCE.getPooling_layers();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_1Impl <em>Pooling layers 1</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_1Impl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getPooling_layers_1()
+		 * @generated
+		 */
+		EClass POOLING_LAYERS_1 = eINSTANCE.getPooling_layers_1();
+
+		/**
+		 * The meta object literal for the '<em><b>Kernel size</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute POOLING_LAYERS_1__KERNEL_SIZE = eINSTANCE.getPooling_layers_1_Kernel_size();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_2Impl <em>Pooling layers 2</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_2Impl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getPooling_layers_2()
+		 * @generated
+		 */
+		EClass POOLING_LAYERS_2 = eINSTANCE.getPooling_layers_2();
+
+		/**
+		 * The meta object literal for the '<em><b>Output size</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute POOLING_LAYERS_2__OUTPUT_SIZE = eINSTANCE.getPooling_layers_2_Output_size();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AdaptativeMaxPoolImpl <em>Adaptative Max Pool</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AdaptativeMaxPoolImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getAdaptativeMaxPool()
+		 * @generated
+		 */
+		EClass ADAPTATIVE_MAX_POOL = eINSTANCE.getAdaptativeMaxPool();
+
+		/**
+		 * The meta object literal for the '<em><b>Return indices</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ADAPTATIVE_MAX_POOL__RETURN_INDICES = eINSTANCE.getAdaptativeMaxPool_Return_indices();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AdaptativeMaxPool1dImpl <em>Adaptative Max Pool1d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AdaptativeMaxPool1dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getAdaptativeMaxPool1d()
+		 * @generated
+		 */
+		EClass ADAPTATIVE_MAX_POOL1D = eINSTANCE.getAdaptativeMaxPool1d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AdaptativeMaxPool2dImpl <em>Adaptative Max Pool2d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AdaptativeMaxPool2dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getAdaptativeMaxPool2d()
+		 * @generated
+		 */
+		EClass ADAPTATIVE_MAX_POOL2D = eINSTANCE.getAdaptativeMaxPool2d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AdaptativeMaxPool3dImpl <em>Adaptative Max Pool3d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AdaptativeMaxPool3dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getAdaptativeMaxPool3d()
+		 * @generated
+		 */
+		EClass ADAPTATIVE_MAX_POOL3D = eINSTANCE.getAdaptativeMaxPool3d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AdaptiveAvgPool3dImpl <em>Adaptive Avg Pool3d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AdaptiveAvgPool3dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getAdaptiveAvgPool3d()
+		 * @generated
+		 */
+		EClass ADAPTIVE_AVG_POOL3D = eINSTANCE.getAdaptiveAvgPool3d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AdaptiveAvgPool2dImpl <em>Adaptive Avg Pool2d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AdaptiveAvgPool2dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getAdaptiveAvgPool2d()
+		 * @generated
+		 */
+		EClass ADAPTIVE_AVG_POOL2D = eINSTANCE.getAdaptiveAvgPool2d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AdaptiveAvgPool1dImpl <em>Adaptive Avg Pool1d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AdaptiveAvgPool1dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getAdaptiveAvgPool1d()
+		 * @generated
+		 */
+		EClass ADAPTIVE_AVG_POOL1D = eINSTANCE.getAdaptiveAvgPool1d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_1_1Impl <em>Pooling layers 11</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_1_1Impl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getPooling_layers_1_1()
+		 * @generated
+		 */
+		EClass POOLING_LAYERS_11 = eINSTANCE.getPooling_layers_1_1();
+
+		/**
+		 * The meta object literal for the '<em><b>Stride</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute POOLING_LAYERS_11__STRIDE = eINSTANCE.getPooling_layers_1_1_Stride();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.MaxPool1dImpl <em>Max Pool1d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.MaxPool1dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getMaxPool1d()
+		 * @generated
+		 */
+		EClass MAX_POOL1D = eINSTANCE.getMaxPool1d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.MaxPoolImpl <em>Max Pool</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.MaxPoolImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getMaxPool()
+		 * @generated
+		 */
+		EClass MAX_POOL = eINSTANCE.getMaxPool();
+
+		/**
+		 * The meta object literal for the '<em><b>Dilation</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MAX_POOL__DILATION = eINSTANCE.getMaxPool_Dilation();
+
+		/**
+		 * The meta object literal for the '<em><b>Return indices</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute MAX_POOL__RETURN_INDICES = eINSTANCE.getMaxPool_Return_indices();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_1_1_1_1Impl <em>Pooling layers 1111</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_1_1_1_1Impl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getPooling_layers_1_1_1_1()
+		 * @generated
+		 */
+		EClass POOLING_LAYERS_1111 = eINSTANCE.getPooling_layers_1_1_1_1();
+
+		/**
+		 * The meta object literal for the '<em><b>Ceil mode</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute POOLING_LAYERS_1111__CEIL_MODE = eINSTANCE.getPooling_layers_1_1_1_1_Ceil_mode();
+
+		/**
+		 * The meta object literal for the '<em><b>Pool size</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute POOLING_LAYERS_1111__POOL_SIZE = eINSTANCE.getPooling_layers_1_1_1_1_Pool_size();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_1_1_1Impl <em>Pooling layers 111</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_1_1_1Impl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getPooling_layers_1_1_1()
+		 * @generated
+		 */
+		EClass POOLING_LAYERS_111 = eINSTANCE.getPooling_layers_1_1_1();
+
+		/**
+		 * The meta object literal for the '<em><b>Padding</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute POOLING_LAYERS_111__PADDING = eINSTANCE.getPooling_layers_1_1_1_Padding();
+
+		/**
+		 * The meta object literal for the '<em><b>Padding k</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute POOLING_LAYERS_111__PADDING_K = eINSTANCE.getPooling_layers_1_1_1_Padding_k();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.MaxUnpool1dImpl <em>Max Unpool1d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.MaxUnpool1dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getMaxUnpool1d()
+		 * @generated
+		 */
+		EClass MAX_UNPOOL1D = eINSTANCE.getMaxUnpool1d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AvgPool1dImpl <em>Avg Pool1d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AvgPool1dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getAvgPool1d()
+		 * @generated
+		 */
+		EClass AVG_POOL1D = eINSTANCE.getAvgPool1d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_1_1_2_1Impl <em>Pooling layers 1121</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_1_1_2_1Impl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getPooling_layers_1_1_2_1()
+		 * @generated
+		 */
+		EClass POOLING_LAYERS_1121 = eINSTANCE.getPooling_layers_1_1_2_1();
+
+		/**
+		 * The meta object literal for the '<em><b>Count include pad</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute POOLING_LAYERS_1121__COUNT_INCLUDE_PAD = eINSTANCE.getPooling_layers_1_1_2_1_Count_include_pad();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.MaxUnpool2dImpl <em>Max Unpool2d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.MaxUnpool2dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getMaxUnpool2d()
+		 * @generated
+		 */
+		EClass MAX_UNPOOL2D = eINSTANCE.getMaxUnpool2d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.MaxUnpool3dImpl <em>Max Unpool3d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.MaxUnpool3dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getMaxUnpool3d()
+		 * @generated
+		 */
+		EClass MAX_UNPOOL3D = eINSTANCE.getMaxUnpool3d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_1_1_2Impl <em>Pooling layers 112</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_1_1_2Impl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getPooling_layers_1_1_2()
+		 * @generated
+		 */
+		EClass POOLING_LAYERS_112 = eINSTANCE.getPooling_layers_1_1_2();
+
+		/**
+		 * The meta object literal for the '<em><b>Ceil mode</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute POOLING_LAYERS_112__CEIL_MODE = eINSTANCE.getPooling_layers_1_1_2_Ceil_mode();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.LPPool1dImpl <em>LP Pool1d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.LPPool1dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getLPPool1d()
+		 * @generated
+		 */
+		EClass LP_POOL1D = eINSTANCE.getLPPool1d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.LPPool2dImpl <em>LP Pool2d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.LPPool2dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getLPPool2d()
+		 * @generated
+		 */
+		EClass LP_POOL2D = eINSTANCE.getLPPool2d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AvgPool2d3dImpl <em>Avg Pool2d3d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AvgPool2d3dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getAvgPool2d3d()
+		 * @generated
+		 */
+		EClass AVG_POOL2D3D = eINSTANCE.getAvgPool2d3d();
+
+		/**
+		 * The meta object literal for the '<em><b>Divisor override</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute AVG_POOL2D3D__DIVISOR_OVERRIDE = eINSTANCE.getAvgPool2d3d_Divisor_override();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AvgPool2dImpl <em>Avg Pool2d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AvgPool2dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getAvgPool2d()
+		 * @generated
+		 */
+		EClass AVG_POOL2D = eINSTANCE.getAvgPool2d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AvgPool3dImpl <em>Avg Pool3d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AvgPool3dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getAvgPool3d()
+		 * @generated
+		 */
+		EClass AVG_POOL3D = eINSTANCE.getAvgPool3d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.MaxPool2dImpl <em>Max Pool2d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.MaxPool2dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getMaxPool2d()
+		 * @generated
+		 */
+		EClass MAX_POOL2D = eINSTANCE.getMaxPool2d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.MaxPool3dImpl <em>Max Pool3d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.MaxPool3dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getMaxPool3d()
+		 * @generated
+		 */
+		EClass MAX_POOL3D = eINSTANCE.getMaxPool3d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.FractionalMaxPool2dImpl <em>Fractional Max Pool2d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.FractionalMaxPool2dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl#getFractionalMaxPool2d()
+		 * @generated
+		 */
+		EClass FRACTIONAL_MAX_POOL2D = eINSTANCE.getFractionalMaxPool2d();
+
+		/**
+		 * The meta object literal for the '<em><b>Output size</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute FRACTIONAL_MAX_POOL2D__OUTPUT_SIZE = eINSTANCE.getFractionalMaxPool2d_Output_size();
+
+		/**
+		 * The meta object literal for the '<em><b>Output ratio</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute FRACTIONAL_MAX_POOL2D__OUTPUT_RATIO = eINSTANCE.getFractionalMaxPool2d_Output_ratio();
+
+		/**
+		 * The meta object literal for the '<em><b>Return indices</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute FRACTIONAL_MAX_POOL2D__RETURN_INDICES = eINSTANCE.getFractionalMaxPool2d_Return_indices();
+
+	}
+
+} //Pooling_layersPackage
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/Pooling_layers_1.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/Pooling_layers_1.java
new file mode 100644
index 0000000..5bce3e9
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/Pooling_layers_1.java
@@ -0,0 +1,49 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Pooling layers 1</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1#getKernel_size <em>Kernel size</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getPooling_layers_1()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Pooling_layers_1 extends Pooling_layers {
+	/**
+	 * Returns the value of the '<em><b>Kernel size</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.Integer}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Kernel size</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Kernel size</em>' attribute list.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getPooling_layers_1_Kernel_size()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	EList<Integer> getKernel_size();
+
+} // Pooling_layers_1
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/Pooling_layers_1_1.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/Pooling_layers_1_1.java
new file mode 100644
index 0000000..c4f0785
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/Pooling_layers_1_1.java
@@ -0,0 +1,49 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Pooling layers 11</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1#getStride <em>Stride</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getPooling_layers_1_1()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Pooling_layers_1_1 extends Pooling_layers_1 {
+	/**
+	 * Returns the value of the '<em><b>Stride</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.Integer}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Stride</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Stride</em>' attribute list.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getPooling_layers_1_1_Stride()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	EList<Integer> getStride();
+
+} // Pooling_layers_1_1
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/Pooling_layers_1_1_1.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/Pooling_layers_1_1_1.java
new file mode 100644
index 0000000..9b975f7
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/Pooling_layers_1_1_1.java
@@ -0,0 +1,76 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Pooling layers 111</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_1#getPadding <em>Padding</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_1#getPadding_k <em>Padding k</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getPooling_layers_1_1_1()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Pooling_layers_1_1_1 extends Pooling_layers_1_1 {
+	/**
+	 * Returns the value of the '<em><b>Padding</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.Integer}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Padding</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Padding</em>' attribute list.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getPooling_layers_1_1_1_Padding()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	EList<Integer> getPadding();
+
+	/**
+	 * Returns the value of the '<em><b>Padding k</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Padding k</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Padding k</em>' attribute.
+	 * @see #setPadding_k(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getPooling_layers_1_1_1_Padding_k()
+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+	 * @generated
+	 */
+	String getPadding_k();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_1#getPadding_k <em>Padding k</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Padding k</em>' attribute.
+	 * @see #getPadding_k()
+	 * @generated
+	 */
+	void setPadding_k(String value);
+
+} // Pooling_layers_1_1_1
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/Pooling_layers_1_1_1_1.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/Pooling_layers_1_1_1_1.java
new file mode 100644
index 0000000..2d9ddb6
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/Pooling_layers_1_1_1_1.java
@@ -0,0 +1,76 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Pooling layers 1111</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_1_1#isCeil_mode <em>Ceil mode</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_1_1#getPool_size <em>Pool size</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getPooling_layers_1_1_1_1()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Pooling_layers_1_1_1_1 extends Pooling_layers_1_1_1 {
+	/**
+	 * Returns the value of the '<em><b>Ceil mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Ceil mode</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Ceil mode</em>' attribute.
+	 * @see #setCeil_mode(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getPooling_layers_1_1_1_1_Ceil_mode()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isCeil_mode();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_1_1#isCeil_mode <em>Ceil mode</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Ceil mode</em>' attribute.
+	 * @see #isCeil_mode()
+	 * @generated
+	 */
+	void setCeil_mode(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Pool size</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.Integer}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Pool size</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Pool size</em>' attribute list.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getPooling_layers_1_1_1_1_Pool_size()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	EList<Integer> getPool_size();
+
+} // Pooling_layers_1_1_1_1
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/Pooling_layers_1_1_2.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/Pooling_layers_1_1_2.java
new file mode 100644
index 0000000..3a3e4a8
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/Pooling_layers_1_1_2.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Pooling layers 112</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_2#isCeil_mode <em>Ceil mode</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getPooling_layers_1_1_2()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Pooling_layers_1_1_2 extends Pooling_layers_1_1 {
+	/**
+	 * Returns the value of the '<em><b>Ceil mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Ceil mode</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Ceil mode</em>' attribute.
+	 * @see #setCeil_mode(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getPooling_layers_1_1_2_Ceil_mode()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isCeil_mode();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_2#isCeil_mode <em>Ceil mode</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Ceil mode</em>' attribute.
+	 * @see #isCeil_mode()
+	 * @generated
+	 */
+	void setCeil_mode(boolean value);
+
+} // Pooling_layers_1_1_2
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/Pooling_layers_1_1_2_1.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/Pooling_layers_1_1_2_1.java
new file mode 100644
index 0000000..21033a7
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/Pooling_layers_1_1_2_1.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Pooling layers 1121</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_2_1#isCount_include_pad <em>Count include pad</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getPooling_layers_1_1_2_1()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Pooling_layers_1_1_2_1 extends Pooling_layers_1_1_1_1 {
+	/**
+	 * Returns the value of the '<em><b>Count include pad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Count include pad</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Count include pad</em>' attribute.
+	 * @see #setCount_include_pad(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getPooling_layers_1_1_2_1_Count_include_pad()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isCount_include_pad();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_2_1#isCount_include_pad <em>Count include pad</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Count include pad</em>' attribute.
+	 * @see #isCount_include_pad()
+	 * @generated
+	 */
+	void setCount_include_pad(boolean value);
+
+} // Pooling_layers_1_1_2_1
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/Pooling_layers_2.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/Pooling_layers_2.java
new file mode 100644
index 0000000..7a0fa1f
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/Pooling_layers_2.java
@@ -0,0 +1,49 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Pooling layers 2</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_2#getOutput_size <em>Output size</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getPooling_layers_2()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Pooling_layers_2 extends Pooling_layers {
+	/**
+	 * Returns the value of the '<em><b>Output size</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.Integer}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Output size</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Output size</em>' attribute list.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#getPooling_layers_2_Output_size()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	EList<Integer> getOutput_size();
+
+} // Pooling_layers_2
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/AdaptativeMaxPool1dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/AdaptativeMaxPool1dImpl.java
new file mode 100644
index 0000000..2f8ffbb
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/AdaptativeMaxPool1dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptativeMaxPool1d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Adaptative Max Pool1d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class AdaptativeMaxPool1dImpl extends AdaptativeMaxPoolImpl implements AdaptativeMaxPool1d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AdaptativeMaxPool1dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Pooling_layersPackage.Literals.ADAPTATIVE_MAX_POOL1D;
+	}
+
+} //AdaptativeMaxPool1dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/AdaptativeMaxPool2dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/AdaptativeMaxPool2dImpl.java
new file mode 100644
index 0000000..2601739
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/AdaptativeMaxPool2dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptativeMaxPool2d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Adaptative Max Pool2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class AdaptativeMaxPool2dImpl extends AdaptativeMaxPoolImpl implements AdaptativeMaxPool2d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AdaptativeMaxPool2dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Pooling_layersPackage.Literals.ADAPTATIVE_MAX_POOL2D;
+	}
+
+} //AdaptativeMaxPool2dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/AdaptativeMaxPool3dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/AdaptativeMaxPool3dImpl.java
new file mode 100644
index 0000000..e1bf88a
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/AdaptativeMaxPool3dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptativeMaxPool3d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Adaptative Max Pool3d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class AdaptativeMaxPool3dImpl extends AdaptativeMaxPoolImpl implements AdaptativeMaxPool3d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AdaptativeMaxPool3dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Pooling_layersPackage.Literals.ADAPTATIVE_MAX_POOL3D;
+	}
+
+} //AdaptativeMaxPool3dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/AdaptativeMaxPoolImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/AdaptativeMaxPoolImpl.java
new file mode 100644
index 0000000..46ff5cf
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/AdaptativeMaxPoolImpl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptativeMaxPool;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Adaptative Max Pool</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AdaptativeMaxPoolImpl#isReturn_indices <em>Return indices</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class AdaptativeMaxPoolImpl extends Pooling_layers_2Impl implements AdaptativeMaxPool {
+	/**
+	 * The default value of the '{@link #isReturn_indices() <em>Return indices</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isReturn_indices()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean RETURN_INDICES_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isReturn_indices() <em>Return indices</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isReturn_indices()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean return_indices = RETURN_INDICES_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AdaptativeMaxPoolImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Pooling_layersPackage.Literals.ADAPTATIVE_MAX_POOL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isReturn_indices() {
+		return return_indices;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setReturn_indices(boolean newReturn_indices) {
+		boolean oldReturn_indices = return_indices;
+		return_indices = newReturn_indices;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Pooling_layersPackage.ADAPTATIVE_MAX_POOL__RETURN_INDICES, oldReturn_indices, return_indices));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Pooling_layersPackage.ADAPTATIVE_MAX_POOL__RETURN_INDICES:
+				return isReturn_indices();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Pooling_layersPackage.ADAPTATIVE_MAX_POOL__RETURN_INDICES:
+				setReturn_indices((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Pooling_layersPackage.ADAPTATIVE_MAX_POOL__RETURN_INDICES:
+				setReturn_indices(RETURN_INDICES_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Pooling_layersPackage.ADAPTATIVE_MAX_POOL__RETURN_INDICES:
+				return return_indices != RETURN_INDICES_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (return_indices: "); //$NON-NLS-1$
+		result.append(return_indices);
+		result.append(')');
+		return result.toString();
+	}
+
+} //AdaptativeMaxPoolImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/AdaptiveAvgPool1dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/AdaptiveAvgPool1dImpl.java
new file mode 100644
index 0000000..c9f6e51
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/AdaptiveAvgPool1dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptiveAvgPool1d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Adaptive Avg Pool1d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class AdaptiveAvgPool1dImpl extends Pooling_layers_2Impl implements AdaptiveAvgPool1d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AdaptiveAvgPool1dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Pooling_layersPackage.Literals.ADAPTIVE_AVG_POOL1D;
+	}
+
+} //AdaptiveAvgPool1dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/AdaptiveAvgPool2dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/AdaptiveAvgPool2dImpl.java
new file mode 100644
index 0000000..76c76e3
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/AdaptiveAvgPool2dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptiveAvgPool2d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Adaptive Avg Pool2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class AdaptiveAvgPool2dImpl extends Pooling_layers_2Impl implements AdaptiveAvgPool2d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AdaptiveAvgPool2dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Pooling_layersPackage.Literals.ADAPTIVE_AVG_POOL2D;
+	}
+
+} //AdaptiveAvgPool2dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/AdaptiveAvgPool3dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/AdaptiveAvgPool3dImpl.java
new file mode 100644
index 0000000..2a59cee
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/AdaptiveAvgPool3dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptiveAvgPool3d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Adaptive Avg Pool3d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class AdaptiveAvgPool3dImpl extends Pooling_layers_2Impl implements AdaptiveAvgPool3d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AdaptiveAvgPool3dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Pooling_layersPackage.Literals.ADAPTIVE_AVG_POOL3D;
+	}
+
+} //AdaptiveAvgPool3dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/AvgPool1dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/AvgPool1dImpl.java
new file mode 100644
index 0000000..dfa7303
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/AvgPool1dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AvgPool1d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Avg Pool1d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class AvgPool1dImpl extends Pooling_layers_1_1_2_1Impl implements AvgPool1d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AvgPool1dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Pooling_layersPackage.Literals.AVG_POOL1D;
+	}
+
+} //AvgPool1dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/AvgPool2d3dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/AvgPool2d3dImpl.java
new file mode 100644
index 0000000..821ccff
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/AvgPool2d3dImpl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AvgPool2d3d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Avg Pool2d3d</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.AvgPool2d3dImpl#getDivisor_override <em>Divisor override</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class AvgPool2d3dImpl extends Pooling_layers_1_1_2_1Impl implements AvgPool2d3d {
+	/**
+	 * The default value of the '{@link #getDivisor_override() <em>Divisor override</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDivisor_override()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int DIVISOR_OVERRIDE_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getDivisor_override() <em>Divisor override</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDivisor_override()
+	 * @generated
+	 * @ordered
+	 */
+	protected int divisor_override = DIVISOR_OVERRIDE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AvgPool2d3dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Pooling_layersPackage.Literals.AVG_POOL2D3D;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getDivisor_override() {
+		return divisor_override;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDivisor_override(int newDivisor_override) {
+		int oldDivisor_override = divisor_override;
+		divisor_override = newDivisor_override;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Pooling_layersPackage.AVG_POOL2D3D__DIVISOR_OVERRIDE, oldDivisor_override, divisor_override));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Pooling_layersPackage.AVG_POOL2D3D__DIVISOR_OVERRIDE:
+				return getDivisor_override();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Pooling_layersPackage.AVG_POOL2D3D__DIVISOR_OVERRIDE:
+				setDivisor_override((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Pooling_layersPackage.AVG_POOL2D3D__DIVISOR_OVERRIDE:
+				setDivisor_override(DIVISOR_OVERRIDE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Pooling_layersPackage.AVG_POOL2D3D__DIVISOR_OVERRIDE:
+				return divisor_override != DIVISOR_OVERRIDE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (divisor_override: "); //$NON-NLS-1$
+		result.append(divisor_override);
+		result.append(')');
+		return result.toString();
+	}
+
+} //AvgPool2d3dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/AvgPool2dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/AvgPool2dImpl.java
new file mode 100644
index 0000000..4245326
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/AvgPool2dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AvgPool2d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Avg Pool2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class AvgPool2dImpl extends AvgPool2d3dImpl implements AvgPool2d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AvgPool2dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Pooling_layersPackage.Literals.AVG_POOL2D;
+	}
+
+} //AvgPool2dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/AvgPool3dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/AvgPool3dImpl.java
new file mode 100644
index 0000000..8a63d5f
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/AvgPool3dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AvgPool3d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Avg Pool3d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class AvgPool3dImpl extends AvgPool2d3dImpl implements AvgPool3d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AvgPool3dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Pooling_layersPackage.Literals.AVG_POOL3D;
+	}
+
+} //AvgPool3dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/FractionalMaxPool2dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/FractionalMaxPool2dImpl.java
new file mode 100644
index 0000000..d0ccd8d
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/FractionalMaxPool2dImpl.java
@@ -0,0 +1,254 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.FractionalMaxPool2d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Fractional Max Pool2d</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.FractionalMaxPool2dImpl#getOutput_size <em>Output size</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.FractionalMaxPool2dImpl#getOutput_ratio <em>Output ratio</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.FractionalMaxPool2dImpl#isReturn_indices <em>Return indices</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class FractionalMaxPool2dImpl extends Pooling_layers_1Impl implements FractionalMaxPool2d {
+	/**
+	 * The cached value of the '{@link #getOutput_size() <em>Output size</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOutput_size()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Integer> output_size;
+
+	/**
+	 * The cached value of the '{@link #getOutput_ratio() <em>Output ratio</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOutput_ratio()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Integer> output_ratio;
+
+	/**
+	 * The default value of the '{@link #isReturn_indices() <em>Return indices</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isReturn_indices()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean RETURN_INDICES_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isReturn_indices() <em>Return indices</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isReturn_indices()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean return_indices = RETURN_INDICES_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FractionalMaxPool2dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Pooling_layersPackage.Literals.FRACTIONAL_MAX_POOL2D;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Integer> getOutput_size() {
+		if (output_size == null) {
+			output_size = new EDataTypeUniqueEList<Integer>(Integer.class, this, Pooling_layersPackage.FRACTIONAL_MAX_POOL2D__OUTPUT_SIZE);
+		}
+		return output_size;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Integer> getOutput_ratio() {
+		if (output_ratio == null) {
+			output_ratio = new EDataTypeUniqueEList<Integer>(Integer.class, this, Pooling_layersPackage.FRACTIONAL_MAX_POOL2D__OUTPUT_RATIO);
+		}
+		return output_ratio;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isReturn_indices() {
+		return return_indices;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setReturn_indices(boolean newReturn_indices) {
+		boolean oldReturn_indices = return_indices;
+		return_indices = newReturn_indices;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Pooling_layersPackage.FRACTIONAL_MAX_POOL2D__RETURN_INDICES, oldReturn_indices, return_indices));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Pooling_layersPackage.FRACTIONAL_MAX_POOL2D__OUTPUT_SIZE:
+				return getOutput_size();
+			case Pooling_layersPackage.FRACTIONAL_MAX_POOL2D__OUTPUT_RATIO:
+				return getOutput_ratio();
+			case Pooling_layersPackage.FRACTIONAL_MAX_POOL2D__RETURN_INDICES:
+				return isReturn_indices();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Pooling_layersPackage.FRACTIONAL_MAX_POOL2D__OUTPUT_SIZE:
+				getOutput_size().clear();
+				getOutput_size().addAll((Collection<? extends Integer>)newValue);
+				return;
+			case Pooling_layersPackage.FRACTIONAL_MAX_POOL2D__OUTPUT_RATIO:
+				getOutput_ratio().clear();
+				getOutput_ratio().addAll((Collection<? extends Integer>)newValue);
+				return;
+			case Pooling_layersPackage.FRACTIONAL_MAX_POOL2D__RETURN_INDICES:
+				setReturn_indices((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Pooling_layersPackage.FRACTIONAL_MAX_POOL2D__OUTPUT_SIZE:
+				getOutput_size().clear();
+				return;
+			case Pooling_layersPackage.FRACTIONAL_MAX_POOL2D__OUTPUT_RATIO:
+				getOutput_ratio().clear();
+				return;
+			case Pooling_layersPackage.FRACTIONAL_MAX_POOL2D__RETURN_INDICES:
+				setReturn_indices(RETURN_INDICES_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Pooling_layersPackage.FRACTIONAL_MAX_POOL2D__OUTPUT_SIZE:
+				return output_size != null && !output_size.isEmpty();
+			case Pooling_layersPackage.FRACTIONAL_MAX_POOL2D__OUTPUT_RATIO:
+				return output_ratio != null && !output_ratio.isEmpty();
+			case Pooling_layersPackage.FRACTIONAL_MAX_POOL2D__RETURN_INDICES:
+				return return_indices != RETURN_INDICES_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (output_size: "); //$NON-NLS-1$
+		result.append(output_size);
+		result.append(", output_ratio: "); //$NON-NLS-1$
+		result.append(output_ratio);
+		result.append(", return_indices: "); //$NON-NLS-1$
+		result.append(return_indices);
+		result.append(')');
+		return result.toString();
+	}
+
+} //FractionalMaxPool2dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/LPPool1dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/LPPool1dImpl.java
new file mode 100644
index 0000000..9c0591a
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/LPPool1dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.LPPool1d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LP Pool1d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LPPool1dImpl extends Pooling_layers_1_1_2Impl implements LPPool1d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LPPool1dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Pooling_layersPackage.Literals.LP_POOL1D;
+	}
+
+} //LPPool1dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/LPPool2dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/LPPool2dImpl.java
new file mode 100644
index 0000000..b1b4236
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/LPPool2dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.LPPool2d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LP Pool2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LPPool2dImpl extends Pooling_layers_1_1_2Impl implements LPPool2d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LPPool2dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Pooling_layersPackage.Literals.LP_POOL2D;
+	}
+
+} //LPPool2dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/MaxPool1dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/MaxPool1dImpl.java
new file mode 100644
index 0000000..1386286
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/MaxPool1dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxPool1d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Max Pool1d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class MaxPool1dImpl extends MaxPoolImpl implements MaxPool1d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MaxPool1dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Pooling_layersPackage.Literals.MAX_POOL1D;
+	}
+
+} //MaxPool1dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/MaxPool2dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/MaxPool2dImpl.java
new file mode 100644
index 0000000..72c7dc0
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/MaxPool2dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxPool2d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Max Pool2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class MaxPool2dImpl extends MaxPoolImpl implements MaxPool2d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MaxPool2dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Pooling_layersPackage.Literals.MAX_POOL2D;
+	}
+
+} //MaxPool2dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/MaxPool3dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/MaxPool3dImpl.java
new file mode 100644
index 0000000..bea2bef
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/MaxPool3dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxPool3d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Max Pool3d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class MaxPool3dImpl extends MaxPoolImpl implements MaxPool3d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MaxPool3dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Pooling_layersPackage.Literals.MAX_POOL3D;
+	}
+
+} //MaxPool3dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/MaxPoolImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/MaxPoolImpl.java
new file mode 100644
index 0000000..cf9d6c3
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/MaxPoolImpl.java
@@ -0,0 +1,217 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxPool;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Max Pool</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.MaxPoolImpl#getDilation <em>Dilation</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.MaxPoolImpl#isReturn_indices <em>Return indices</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class MaxPoolImpl extends Pooling_layers_1_1_1_1Impl implements MaxPool {
+	/**
+	 * The cached value of the '{@link #getDilation() <em>Dilation</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDilation()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Integer> dilation;
+
+	/**
+	 * The default value of the '{@link #isReturn_indices() <em>Return indices</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isReturn_indices()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean RETURN_INDICES_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isReturn_indices() <em>Return indices</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isReturn_indices()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean return_indices = RETURN_INDICES_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MaxPoolImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Pooling_layersPackage.Literals.MAX_POOL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Integer> getDilation() {
+		if (dilation == null) {
+			dilation = new EDataTypeUniqueEList<Integer>(Integer.class, this, Pooling_layersPackage.MAX_POOL__DILATION);
+		}
+		return dilation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isReturn_indices() {
+		return return_indices;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setReturn_indices(boolean newReturn_indices) {
+		boolean oldReturn_indices = return_indices;
+		return_indices = newReturn_indices;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Pooling_layersPackage.MAX_POOL__RETURN_INDICES, oldReturn_indices, return_indices));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Pooling_layersPackage.MAX_POOL__DILATION:
+				return getDilation();
+			case Pooling_layersPackage.MAX_POOL__RETURN_INDICES:
+				return isReturn_indices();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Pooling_layersPackage.MAX_POOL__DILATION:
+				getDilation().clear();
+				getDilation().addAll((Collection<? extends Integer>)newValue);
+				return;
+			case Pooling_layersPackage.MAX_POOL__RETURN_INDICES:
+				setReturn_indices((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Pooling_layersPackage.MAX_POOL__DILATION:
+				getDilation().clear();
+				return;
+			case Pooling_layersPackage.MAX_POOL__RETURN_INDICES:
+				setReturn_indices(RETURN_INDICES_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Pooling_layersPackage.MAX_POOL__DILATION:
+				return dilation != null && !dilation.isEmpty();
+			case Pooling_layersPackage.MAX_POOL__RETURN_INDICES:
+				return return_indices != RETURN_INDICES_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (dilation: "); //$NON-NLS-1$
+		result.append(dilation);
+		result.append(", return_indices: "); //$NON-NLS-1$
+		result.append(return_indices);
+		result.append(')');
+		return result.toString();
+	}
+
+} //MaxPoolImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/MaxUnpool1dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/MaxUnpool1dImpl.java
new file mode 100644
index 0000000..b9ca9d1
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/MaxUnpool1dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxUnpool1d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Max Unpool1d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class MaxUnpool1dImpl extends Pooling_layers_1_1_1Impl implements MaxUnpool1d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MaxUnpool1dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Pooling_layersPackage.Literals.MAX_UNPOOL1D;
+	}
+
+} //MaxUnpool1dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/MaxUnpool2dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/MaxUnpool2dImpl.java
new file mode 100644
index 0000000..0a3b0d1
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/MaxUnpool2dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxUnpool2d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Max Unpool2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class MaxUnpool2dImpl extends Pooling_layers_1_1_1Impl implements MaxUnpool2d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MaxUnpool2dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Pooling_layersPackage.Literals.MAX_UNPOOL2D;
+	}
+
+} //MaxUnpool2dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/MaxUnpool3dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/MaxUnpool3dImpl.java
new file mode 100644
index 0000000..19d9bb0
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/MaxUnpool3dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxUnpool3d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Max Unpool3d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class MaxUnpool3dImpl extends Pooling_layers_1_1_1Impl implements MaxUnpool3d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MaxUnpool3dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Pooling_layersPackage.Literals.MAX_UNPOOL3D;
+	}
+
+} //MaxUnpool3dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/Pooling_layersFactoryImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/Pooling_layersFactoryImpl.java
new file mode 100644
index 0000000..3f8d963
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/Pooling_layersFactoryImpl.java
@@ -0,0 +1,310 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class Pooling_layersFactoryImpl extends EFactoryImpl implements Pooling_layersFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static Pooling_layersFactory init() {
+		try {
+			Pooling_layersFactory thePooling_layersFactory = (Pooling_layersFactory)EPackage.Registry.INSTANCE.getEFactory(Pooling_layersPackage.eNS_URI);
+			if (thePooling_layersFactory != null) {
+				return thePooling_layersFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new Pooling_layersFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Pooling_layersFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case Pooling_layersPackage.ADAPTATIVE_MAX_POOL1D: return createAdaptativeMaxPool1d();
+			case Pooling_layersPackage.ADAPTATIVE_MAX_POOL2D: return createAdaptativeMaxPool2d();
+			case Pooling_layersPackage.ADAPTATIVE_MAX_POOL3D: return createAdaptativeMaxPool3d();
+			case Pooling_layersPackage.ADAPTIVE_AVG_POOL3D: return createAdaptiveAvgPool3d();
+			case Pooling_layersPackage.ADAPTIVE_AVG_POOL2D: return createAdaptiveAvgPool2d();
+			case Pooling_layersPackage.ADAPTIVE_AVG_POOL1D: return createAdaptiveAvgPool1d();
+			case Pooling_layersPackage.MAX_POOL1D: return createMaxPool1d();
+			case Pooling_layersPackage.MAX_UNPOOL1D: return createMaxUnpool1d();
+			case Pooling_layersPackage.AVG_POOL1D: return createAvgPool1d();
+			case Pooling_layersPackage.MAX_UNPOOL2D: return createMaxUnpool2d();
+			case Pooling_layersPackage.MAX_UNPOOL3D: return createMaxUnpool3d();
+			case Pooling_layersPackage.LP_POOL1D: return createLPPool1d();
+			case Pooling_layersPackage.LP_POOL2D: return createLPPool2d();
+			case Pooling_layersPackage.AVG_POOL2D: return createAvgPool2d();
+			case Pooling_layersPackage.AVG_POOL3D: return createAvgPool3d();
+			case Pooling_layersPackage.MAX_POOL2D: return createMaxPool2d();
+			case Pooling_layersPackage.MAX_POOL3D: return createMaxPool3d();
+			case Pooling_layersPackage.FRACTIONAL_MAX_POOL2D: return createFractionalMaxPool2d();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public AdaptativeMaxPool1d createAdaptativeMaxPool1d() {
+		AdaptativeMaxPool1dImpl adaptativeMaxPool1d = new AdaptativeMaxPool1dImpl();
+		return adaptativeMaxPool1d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public AdaptativeMaxPool2d createAdaptativeMaxPool2d() {
+		AdaptativeMaxPool2dImpl adaptativeMaxPool2d = new AdaptativeMaxPool2dImpl();
+		return adaptativeMaxPool2d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public AdaptativeMaxPool3d createAdaptativeMaxPool3d() {
+		AdaptativeMaxPool3dImpl adaptativeMaxPool3d = new AdaptativeMaxPool3dImpl();
+		return adaptativeMaxPool3d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public AdaptiveAvgPool3d createAdaptiveAvgPool3d() {
+		AdaptiveAvgPool3dImpl adaptiveAvgPool3d = new AdaptiveAvgPool3dImpl();
+		return adaptiveAvgPool3d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public AdaptiveAvgPool2d createAdaptiveAvgPool2d() {
+		AdaptiveAvgPool2dImpl adaptiveAvgPool2d = new AdaptiveAvgPool2dImpl();
+		return adaptiveAvgPool2d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public AdaptiveAvgPool1d createAdaptiveAvgPool1d() {
+		AdaptiveAvgPool1dImpl adaptiveAvgPool1d = new AdaptiveAvgPool1dImpl();
+		return adaptiveAvgPool1d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public MaxPool1d createMaxPool1d() {
+		MaxPool1dImpl maxPool1d = new MaxPool1dImpl();
+		return maxPool1d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public MaxUnpool1d createMaxUnpool1d() {
+		MaxUnpool1dImpl maxUnpool1d = new MaxUnpool1dImpl();
+		return maxUnpool1d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public AvgPool1d createAvgPool1d() {
+		AvgPool1dImpl avgPool1d = new AvgPool1dImpl();
+		return avgPool1d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public MaxUnpool2d createMaxUnpool2d() {
+		MaxUnpool2dImpl maxUnpool2d = new MaxUnpool2dImpl();
+		return maxUnpool2d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public MaxUnpool3d createMaxUnpool3d() {
+		MaxUnpool3dImpl maxUnpool3d = new MaxUnpool3dImpl();
+		return maxUnpool3d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public LPPool1d createLPPool1d() {
+		LPPool1dImpl lpPool1d = new LPPool1dImpl();
+		return lpPool1d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public LPPool2d createLPPool2d() {
+		LPPool2dImpl lpPool2d = new LPPool2dImpl();
+		return lpPool2d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public AvgPool2d createAvgPool2d() {
+		AvgPool2dImpl avgPool2d = new AvgPool2dImpl();
+		return avgPool2d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public AvgPool3d createAvgPool3d() {
+		AvgPool3dImpl avgPool3d = new AvgPool3dImpl();
+		return avgPool3d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public MaxPool2d createMaxPool2d() {
+		MaxPool2dImpl maxPool2d = new MaxPool2dImpl();
+		return maxPool2d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public MaxPool3d createMaxPool3d() {
+		MaxPool3dImpl maxPool3d = new MaxPool3dImpl();
+		return maxPool3d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public FractionalMaxPool2d createFractionalMaxPool2d() {
+		FractionalMaxPool2dImpl fractionalMaxPool2d = new FractionalMaxPool2dImpl();
+		return fractionalMaxPool2d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Pooling_layersPackage getPooling_layersPackage() {
+		return (Pooling_layersPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static Pooling_layersPackage getPackage() {
+		return Pooling_layersPackage.eINSTANCE;
+	}
+
+} //Pooling_layersFactoryImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/Pooling_layersImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/Pooling_layersImpl.java
new file mode 100644
index 0000000..e529f42
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/Pooling_layersImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModelImpl;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Pooling layers</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public abstract class Pooling_layersImpl extends ModelImpl implements Pooling_layers {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Pooling_layersImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Pooling_layersPackage.Literals.POOLING_LAYERS;
+	}
+
+} //Pooling_layersImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/Pooling_layersPackageImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/Pooling_layersPackageImpl.java
new file mode 100644
index 0000000..cc8413d
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/Pooling_layersPackageImpl.java
@@ -0,0 +1,1215 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.AIMLPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.Layer_weight_regularizersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModulePackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptativeMaxPool;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptativeMaxPool1d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptativeMaxPool2d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptativeMaxPool3d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptiveAvgPool1d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptiveAvgPool2d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptiveAvgPool3d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AvgPool1d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AvgPool2d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AvgPool2d3d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AvgPool3d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.FractionalMaxPool2d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.LPPool1d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.LPPool2d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxPool;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxPool1d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxPool2d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxPool3d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxUnpool1d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxUnpool2d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxUnpool3d;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersFactory;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_1;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_1_1;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_2;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_2_1;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_2;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.DatatypesPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl.DatatypesPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.impl.AIMLPackageImpl;
+
+import org.eclipse.uml2.types.TypesPackage;
+
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class Pooling_layersPackageImpl extends EPackageImpl implements Pooling_layersPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass pooling_layersEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass pooling_layers_1EClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass pooling_layers_2EClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass adaptativeMaxPoolEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass adaptativeMaxPool1dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass adaptativeMaxPool2dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass adaptativeMaxPool3dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass adaptiveAvgPool3dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass adaptiveAvgPool2dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass adaptiveAvgPool1dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass pooling_layers_1_1EClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass maxPool1dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass maxPoolEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass pooling_layers_1_1_1_1EClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass pooling_layers_1_1_1EClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass maxUnpool1dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass avgPool1dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass pooling_layers_1_1_2_1EClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass maxUnpool2dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass maxUnpool3dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass pooling_layers_1_1_2EClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lpPool1dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lpPool2dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass avgPool2d3dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass avgPool2dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass avgPool3dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass maxPool2dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass maxPool3dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass fractionalMaxPool2dEClass = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private Pooling_layersPackageImpl() {
+		super(eNS_URI, Pooling_layersFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>This method is used to initialize {@link Pooling_layersPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static Pooling_layersPackage init() {
+		if (isInited) return (Pooling_layersPackage)EPackage.Registry.INSTANCE.getEPackage(Pooling_layersPackage.eNS_URI);
+
+		// Obtain or create and register package
+		Object registeredPooling_layersPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		Pooling_layersPackageImpl thePooling_layersPackage = registeredPooling_layersPackage instanceof Pooling_layersPackageImpl ? (Pooling_layersPackageImpl)registeredPooling_layersPackage : new Pooling_layersPackageImpl();
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		EcorePackage.eINSTANCE.eClass();
+		TypesPackage.eINSTANCE.eClass();
+		UMLPackage.eINSTANCE.eClass();
+
+		// Obtain or create and register interdependencies
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AIMLPackage.eNS_URI);
+		AIMLPackageImpl theAIMLPackage = (AIMLPackageImpl)(registeredPackage instanceof AIMLPackageImpl ? registeredPackage : AIMLPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		ModulePackageImpl theModulePackage = (ModulePackageImpl)(registeredPackage instanceof ModulePackageImpl ? registeredPackage : ModulePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(TensorPackage.eNS_URI);
+		TensorPackageImpl theTensorPackage = (TensorPackageImpl)(registeredPackage instanceof TensorPackageImpl ? registeredPackage : TensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DatatypesPackage.eNS_URI);
+		DatatypesPackageImpl theDatatypesPackage = (DatatypesPackageImpl)(registeredPackage instanceof DatatypesPackageImpl ? registeredPackage : DatatypesPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Convolution_layersPackage.eNS_URI);
+		Convolution_layersPackageImpl theConvolution_layersPackage = (Convolution_layersPackageImpl)(registeredPackage instanceof Convolution_layersPackageImpl ? registeredPackage : Convolution_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_constraintsPackage.eNS_URI);
+		Layer_weight_constraintsPackageImpl theLayer_weight_constraintsPackage = (Layer_weight_constraintsPackageImpl)(registeredPackage instanceof Layer_weight_constraintsPackageImpl ? registeredPackage : Layer_weight_constraintsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Padding_layersPackage.eNS_URI);
+		Padding_layersPackageImpl thePadding_layersPackage = (Padding_layersPackageImpl)(registeredPackage instanceof Padding_layersPackageImpl ? registeredPackage : Padding_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NonLinearActivationsPackage.eNS_URI);
+		NonLinearActivationsPackageImpl theNonLinearActivationsPackage = (NonLinearActivationsPackageImpl)(registeredPackage instanceof NonLinearActivationsPackageImpl ? registeredPackage : NonLinearActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftMinMaxActivationsPackage.eNS_URI);
+		SoftMinMaxActivationsPackageImpl theSoftMinMaxActivationsPackage = (SoftMinMaxActivationsPackageImpl)(registeredPackage instanceof SoftMinMaxActivationsPackageImpl ? registeredPackage : SoftMinMaxActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Normalization_layersPackage.eNS_URI);
+		Normalization_layersPackageImpl theNormalization_layersPackage = (Normalization_layersPackageImpl)(registeredPackage instanceof Normalization_layersPackageImpl ? registeredPackage : Normalization_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Recurrent_layersPackage.eNS_URI);
+		Recurrent_layersPackageImpl theRecurrent_layersPackage = (Recurrent_layersPackageImpl)(registeredPackage instanceof Recurrent_layersPackageImpl ? registeredPackage : Recurrent_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Transformer_layersPackage.eNS_URI);
+		Transformer_layersPackageImpl theTransformer_layersPackage = (Transformer_layersPackageImpl)(registeredPackage instanceof Transformer_layersPackageImpl ? registeredPackage : Transformer_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Linear_layersPackage.eNS_URI);
+		Linear_layersPackageImpl theLinear_layersPackage = (Linear_layersPackageImpl)(registeredPackage instanceof Linear_layersPackageImpl ? registeredPackage : Linear_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Dropout_layersPackage.eNS_URI);
+		Dropout_layersPackageImpl theDropout_layersPackage = (Dropout_layersPackageImpl)(registeredPackage instanceof Dropout_layersPackageImpl ? registeredPackage : Dropout_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Sparse_layersPackage.eNS_URI);
+		Sparse_layersPackageImpl theSparse_layersPackage = (Sparse_layersPackageImpl)(registeredPackage instanceof Sparse_layersPackageImpl ? registeredPackage : Sparse_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Distance_functionsPackage.eNS_URI);
+		Distance_functionsPackageImpl theDistance_functionsPackage = (Distance_functionsPackageImpl)(registeredPackage instanceof Distance_functionsPackageImpl ? registeredPackage : Distance_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Loss_functionsPackage.eNS_URI);
+		Loss_functionsPackageImpl theLoss_functionsPackage = (Loss_functionsPackageImpl)(registeredPackage instanceof Loss_functionsPackageImpl ? registeredPackage : Loss_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Vision_layersPackage.eNS_URI);
+		Vision_layersPackageImpl theVision_layersPackage = (Vision_layersPackageImpl)(registeredPackage instanceof Vision_layersPackageImpl ? registeredPackage : Vision_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DataParallel_layersPackage.eNS_URI);
+		DataParallel_layersPackageImpl theDataParallel_layersPackage = (DataParallel_layersPackageImpl)(registeredPackage instanceof DataParallel_layersPackageImpl ? registeredPackage : DataParallel_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_regularizersPackage.eNS_URI);
+		Layer_weight_regularizersPackageImpl theLayer_weight_regularizersPackage = (Layer_weight_regularizersPackageImpl)(registeredPackage instanceof Layer_weight_regularizersPackageImpl ? registeredPackage : Layer_weight_regularizersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_initializersPackage.eNS_URI);
+		Layer_weight_initializersPackageImpl theLayer_weight_initializersPackage = (Layer_weight_initializersPackageImpl)(registeredPackage instanceof Layer_weight_initializersPackageImpl ? registeredPackage : Layer_weight_initializersPackage.eINSTANCE);
+
+		// Create package meta-data objects
+		thePooling_layersPackage.createPackageContents();
+		theAIMLPackage.createPackageContents();
+		theModulePackage.createPackageContents();
+		theTensorPackage.createPackageContents();
+		theDatatypesPackage.createPackageContents();
+		theConvolution_layersPackage.createPackageContents();
+		theLayer_weight_constraintsPackage.createPackageContents();
+		thePadding_layersPackage.createPackageContents();
+		theNonLinearActivationsPackage.createPackageContents();
+		theSoftMinMaxActivationsPackage.createPackageContents();
+		theNormalization_layersPackage.createPackageContents();
+		theRecurrent_layersPackage.createPackageContents();
+		theTransformer_layersPackage.createPackageContents();
+		theLinear_layersPackage.createPackageContents();
+		theDropout_layersPackage.createPackageContents();
+		theSparse_layersPackage.createPackageContents();
+		theDistance_functionsPackage.createPackageContents();
+		theLoss_functionsPackage.createPackageContents();
+		theVision_layersPackage.createPackageContents();
+		theDataParallel_layersPackage.createPackageContents();
+		theLayer_weight_regularizersPackage.createPackageContents();
+		theLayer_weight_initializersPackage.createPackageContents();
+
+		// Initialize created meta-data
+		thePooling_layersPackage.initializePackageContents();
+		theAIMLPackage.initializePackageContents();
+		theModulePackage.initializePackageContents();
+		theTensorPackage.initializePackageContents();
+		theDatatypesPackage.initializePackageContents();
+		theConvolution_layersPackage.initializePackageContents();
+		theLayer_weight_constraintsPackage.initializePackageContents();
+		thePadding_layersPackage.initializePackageContents();
+		theNonLinearActivationsPackage.initializePackageContents();
+		theSoftMinMaxActivationsPackage.initializePackageContents();
+		theNormalization_layersPackage.initializePackageContents();
+		theRecurrent_layersPackage.initializePackageContents();
+		theTransformer_layersPackage.initializePackageContents();
+		theLinear_layersPackage.initializePackageContents();
+		theDropout_layersPackage.initializePackageContents();
+		theSparse_layersPackage.initializePackageContents();
+		theDistance_functionsPackage.initializePackageContents();
+		theLoss_functionsPackage.initializePackageContents();
+		theVision_layersPackage.initializePackageContents();
+		theDataParallel_layersPackage.initializePackageContents();
+		theLayer_weight_regularizersPackage.initializePackageContents();
+		theLayer_weight_initializersPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		thePooling_layersPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(Pooling_layersPackage.eNS_URI, thePooling_layersPackage);
+		return thePooling_layersPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getPooling_layers() {
+		return pooling_layersEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getPooling_layers_1() {
+		return pooling_layers_1EClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPooling_layers_1_Kernel_size() {
+		return (EAttribute)pooling_layers_1EClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getPooling_layers_2() {
+		return pooling_layers_2EClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPooling_layers_2_Output_size() {
+		return (EAttribute)pooling_layers_2EClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getAdaptativeMaxPool() {
+		return adaptativeMaxPoolEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getAdaptativeMaxPool_Return_indices() {
+		return (EAttribute)adaptativeMaxPoolEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getAdaptativeMaxPool1d() {
+		return adaptativeMaxPool1dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getAdaptativeMaxPool2d() {
+		return adaptativeMaxPool2dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getAdaptativeMaxPool3d() {
+		return adaptativeMaxPool3dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getAdaptiveAvgPool3d() {
+		return adaptiveAvgPool3dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getAdaptiveAvgPool2d() {
+		return adaptiveAvgPool2dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getAdaptiveAvgPool1d() {
+		return adaptiveAvgPool1dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getPooling_layers_1_1() {
+		return pooling_layers_1_1EClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPooling_layers_1_1_Stride() {
+		return (EAttribute)pooling_layers_1_1EClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getMaxPool1d() {
+		return maxPool1dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getMaxPool() {
+		return maxPoolEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getMaxPool_Dilation() {
+		return (EAttribute)maxPoolEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getMaxPool_Return_indices() {
+		return (EAttribute)maxPoolEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getPooling_layers_1_1_1_1() {
+		return pooling_layers_1_1_1_1EClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPooling_layers_1_1_1_1_Ceil_mode() {
+		return (EAttribute)pooling_layers_1_1_1_1EClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPooling_layers_1_1_1_1_Pool_size() {
+		return (EAttribute)pooling_layers_1_1_1_1EClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getPooling_layers_1_1_1() {
+		return pooling_layers_1_1_1EClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPooling_layers_1_1_1_Padding() {
+		return (EAttribute)pooling_layers_1_1_1EClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPooling_layers_1_1_1_Padding_k() {
+		return (EAttribute)pooling_layers_1_1_1EClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getMaxUnpool1d() {
+		return maxUnpool1dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getAvgPool1d() {
+		return avgPool1dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getPooling_layers_1_1_2_1() {
+		return pooling_layers_1_1_2_1EClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPooling_layers_1_1_2_1_Count_include_pad() {
+		return (EAttribute)pooling_layers_1_1_2_1EClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getMaxUnpool2d() {
+		return maxUnpool2dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getMaxUnpool3d() {
+		return maxUnpool3dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getPooling_layers_1_1_2() {
+		return pooling_layers_1_1_2EClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPooling_layers_1_1_2_Ceil_mode() {
+		return (EAttribute)pooling_layers_1_1_2EClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getLPPool1d() {
+		return lpPool1dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getLPPool2d() {
+		return lpPool2dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getAvgPool2d3d() {
+		return avgPool2d3dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getAvgPool2d3d_Divisor_override() {
+		return (EAttribute)avgPool2d3dEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getAvgPool2d() {
+		return avgPool2dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getAvgPool3d() {
+		return avgPool3dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getMaxPool2d() {
+		return maxPool2dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getMaxPool3d() {
+		return maxPool3dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getFractionalMaxPool2d() {
+		return fractionalMaxPool2dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getFractionalMaxPool2d_Output_size() {
+		return (EAttribute)fractionalMaxPool2dEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getFractionalMaxPool2d_Output_ratio() {
+		return (EAttribute)fractionalMaxPool2dEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getFractionalMaxPool2d_Return_indices() {
+		return (EAttribute)fractionalMaxPool2dEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Pooling_layersFactory getPooling_layersFactory() {
+		return (Pooling_layersFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		pooling_layersEClass = createEClass(POOLING_LAYERS);
+
+		pooling_layers_1EClass = createEClass(POOLING_LAYERS_1);
+		createEAttribute(pooling_layers_1EClass, POOLING_LAYERS_1__KERNEL_SIZE);
+
+		pooling_layers_2EClass = createEClass(POOLING_LAYERS_2);
+		createEAttribute(pooling_layers_2EClass, POOLING_LAYERS_2__OUTPUT_SIZE);
+
+		adaptativeMaxPoolEClass = createEClass(ADAPTATIVE_MAX_POOL);
+		createEAttribute(adaptativeMaxPoolEClass, ADAPTATIVE_MAX_POOL__RETURN_INDICES);
+
+		adaptativeMaxPool1dEClass = createEClass(ADAPTATIVE_MAX_POOL1D);
+
+		adaptativeMaxPool2dEClass = createEClass(ADAPTATIVE_MAX_POOL2D);
+
+		adaptativeMaxPool3dEClass = createEClass(ADAPTATIVE_MAX_POOL3D);
+
+		adaptiveAvgPool3dEClass = createEClass(ADAPTIVE_AVG_POOL3D);
+
+		adaptiveAvgPool2dEClass = createEClass(ADAPTIVE_AVG_POOL2D);
+
+		adaptiveAvgPool1dEClass = createEClass(ADAPTIVE_AVG_POOL1D);
+
+		pooling_layers_1_1EClass = createEClass(POOLING_LAYERS_11);
+		createEAttribute(pooling_layers_1_1EClass, POOLING_LAYERS_11__STRIDE);
+
+		maxPool1dEClass = createEClass(MAX_POOL1D);
+
+		maxPoolEClass = createEClass(MAX_POOL);
+		createEAttribute(maxPoolEClass, MAX_POOL__DILATION);
+		createEAttribute(maxPoolEClass, MAX_POOL__RETURN_INDICES);
+
+		pooling_layers_1_1_1_1EClass = createEClass(POOLING_LAYERS_1111);
+		createEAttribute(pooling_layers_1_1_1_1EClass, POOLING_LAYERS_1111__CEIL_MODE);
+		createEAttribute(pooling_layers_1_1_1_1EClass, POOLING_LAYERS_1111__POOL_SIZE);
+
+		pooling_layers_1_1_1EClass = createEClass(POOLING_LAYERS_111);
+		createEAttribute(pooling_layers_1_1_1EClass, POOLING_LAYERS_111__PADDING);
+		createEAttribute(pooling_layers_1_1_1EClass, POOLING_LAYERS_111__PADDING_K);
+
+		maxUnpool1dEClass = createEClass(MAX_UNPOOL1D);
+
+		avgPool1dEClass = createEClass(AVG_POOL1D);
+
+		pooling_layers_1_1_2_1EClass = createEClass(POOLING_LAYERS_1121);
+		createEAttribute(pooling_layers_1_1_2_1EClass, POOLING_LAYERS_1121__COUNT_INCLUDE_PAD);
+
+		maxUnpool2dEClass = createEClass(MAX_UNPOOL2D);
+
+		maxUnpool3dEClass = createEClass(MAX_UNPOOL3D);
+
+		pooling_layers_1_1_2EClass = createEClass(POOLING_LAYERS_112);
+		createEAttribute(pooling_layers_1_1_2EClass, POOLING_LAYERS_112__CEIL_MODE);
+
+		lpPool1dEClass = createEClass(LP_POOL1D);
+
+		lpPool2dEClass = createEClass(LP_POOL2D);
+
+		avgPool2d3dEClass = createEClass(AVG_POOL2D3D);
+		createEAttribute(avgPool2d3dEClass, AVG_POOL2D3D__DIVISOR_OVERRIDE);
+
+		avgPool2dEClass = createEClass(AVG_POOL2D);
+
+		avgPool3dEClass = createEClass(AVG_POOL3D);
+
+		maxPool2dEClass = createEClass(MAX_POOL2D);
+
+		maxPool3dEClass = createEClass(MAX_POOL3D);
+
+		fractionalMaxPool2dEClass = createEClass(FRACTIONAL_MAX_POOL2D);
+		createEAttribute(fractionalMaxPool2dEClass, FRACTIONAL_MAX_POOL2D__OUTPUT_SIZE);
+		createEAttribute(fractionalMaxPool2dEClass, FRACTIONAL_MAX_POOL2D__OUTPUT_RATIO);
+		createEAttribute(fractionalMaxPool2dEClass, FRACTIONAL_MAX_POOL2D__RETURN_INDICES);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		ModulePackage theModulePackage = (ModulePackage)EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		pooling_layersEClass.getESuperTypes().add(theModulePackage.getModel());
+		pooling_layers_1EClass.getESuperTypes().add(this.getPooling_layers());
+		pooling_layers_2EClass.getESuperTypes().add(this.getPooling_layers());
+		adaptativeMaxPoolEClass.getESuperTypes().add(this.getPooling_layers_2());
+		adaptativeMaxPool1dEClass.getESuperTypes().add(this.getAdaptativeMaxPool());
+		adaptativeMaxPool2dEClass.getESuperTypes().add(this.getAdaptativeMaxPool());
+		adaptativeMaxPool3dEClass.getESuperTypes().add(this.getAdaptativeMaxPool());
+		adaptiveAvgPool3dEClass.getESuperTypes().add(this.getPooling_layers_2());
+		adaptiveAvgPool2dEClass.getESuperTypes().add(this.getPooling_layers_2());
+		adaptiveAvgPool1dEClass.getESuperTypes().add(this.getPooling_layers_2());
+		pooling_layers_1_1EClass.getESuperTypes().add(this.getPooling_layers_1());
+		maxPool1dEClass.getESuperTypes().add(this.getMaxPool());
+		maxPoolEClass.getESuperTypes().add(this.getPooling_layers_1_1_1_1());
+		pooling_layers_1_1_1_1EClass.getESuperTypes().add(this.getPooling_layers_1_1_1());
+		pooling_layers_1_1_1EClass.getESuperTypes().add(this.getPooling_layers_1_1());
+		maxUnpool1dEClass.getESuperTypes().add(this.getPooling_layers_1_1_1());
+		avgPool1dEClass.getESuperTypes().add(this.getPooling_layers_1_1_2_1());
+		pooling_layers_1_1_2_1EClass.getESuperTypes().add(this.getPooling_layers_1_1_1_1());
+		maxUnpool2dEClass.getESuperTypes().add(this.getPooling_layers_1_1_1());
+		maxUnpool3dEClass.getESuperTypes().add(this.getPooling_layers_1_1_1());
+		pooling_layers_1_1_2EClass.getESuperTypes().add(this.getPooling_layers_1_1());
+		lpPool1dEClass.getESuperTypes().add(this.getPooling_layers_1_1_2());
+		lpPool2dEClass.getESuperTypes().add(this.getPooling_layers_1_1_2());
+		avgPool2d3dEClass.getESuperTypes().add(this.getPooling_layers_1_1_2_1());
+		avgPool2dEClass.getESuperTypes().add(this.getAvgPool2d3d());
+		avgPool3dEClass.getESuperTypes().add(this.getAvgPool2d3d());
+		maxPool2dEClass.getESuperTypes().add(this.getMaxPool());
+		maxPool3dEClass.getESuperTypes().add(this.getMaxPool());
+		fractionalMaxPool2dEClass.getESuperTypes().add(this.getPooling_layers_1());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(pooling_layersEClass, Pooling_layers.class, "Pooling_layers", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(pooling_layers_1EClass, Pooling_layers_1.class, "Pooling_layers_1", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getPooling_layers_1_Kernel_size(), theTypesPackage.getInteger(), "kernel_size", null, 0, -1, Pooling_layers_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(pooling_layers_2EClass, Pooling_layers_2.class, "Pooling_layers_2", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getPooling_layers_2_Output_size(), theTypesPackage.getInteger(), "output_size", null, 0, -1, Pooling_layers_2.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(adaptativeMaxPoolEClass, AdaptativeMaxPool.class, "AdaptativeMaxPool", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getAdaptativeMaxPool_Return_indices(), theTypesPackage.getBoolean(), "return_indices", null, 1, 1, AdaptativeMaxPool.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(adaptativeMaxPool1dEClass, AdaptativeMaxPool1d.class, "AdaptativeMaxPool1d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(adaptativeMaxPool2dEClass, AdaptativeMaxPool2d.class, "AdaptativeMaxPool2d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(adaptativeMaxPool3dEClass, AdaptativeMaxPool3d.class, "AdaptativeMaxPool3d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(adaptiveAvgPool3dEClass, AdaptiveAvgPool3d.class, "AdaptiveAvgPool3d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(adaptiveAvgPool2dEClass, AdaptiveAvgPool2d.class, "AdaptiveAvgPool2d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(adaptiveAvgPool1dEClass, AdaptiveAvgPool1d.class, "AdaptiveAvgPool1d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(pooling_layers_1_1EClass, Pooling_layers_1_1.class, "Pooling_layers_1_1", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getPooling_layers_1_1_Stride(), theTypesPackage.getInteger(), "stride", null, 0, -1, Pooling_layers_1_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(maxPool1dEClass, MaxPool1d.class, "MaxPool1d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(maxPoolEClass, MaxPool.class, "MaxPool", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getMaxPool_Dilation(), theTypesPackage.getInteger(), "dilation", null, 0, -1, MaxPool.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getMaxPool_Return_indices(), theTypesPackage.getBoolean(), "return_indices", null, 0, 1, MaxPool.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(pooling_layers_1_1_1_1EClass, Pooling_layers_1_1_1_1.class, "Pooling_layers_1_1_1_1", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getPooling_layers_1_1_1_1_Ceil_mode(), theTypesPackage.getBoolean(), "ceil_mode", null, 0, 1, Pooling_layers_1_1_1_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getPooling_layers_1_1_1_1_Pool_size(), theTypesPackage.getInteger(), "pool_size", null, 0, -1, Pooling_layers_1_1_1_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(pooling_layers_1_1_1EClass, Pooling_layers_1_1_1.class, "Pooling_layers_1_1_1", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getPooling_layers_1_1_1_Padding(), theTypesPackage.getInteger(), "padding", null, 0, -1, Pooling_layers_1_1_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getPooling_layers_1_1_1_Padding_k(), theTypesPackage.getString(), "padding_k", null, 0, 1, Pooling_layers_1_1_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(maxUnpool1dEClass, MaxUnpool1d.class, "MaxUnpool1d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(avgPool1dEClass, AvgPool1d.class, "AvgPool1d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(pooling_layers_1_1_2_1EClass, Pooling_layers_1_1_2_1.class, "Pooling_layers_1_1_2_1", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getPooling_layers_1_1_2_1_Count_include_pad(), theTypesPackage.getBoolean(), "count_include_pad", null, 0, 1, Pooling_layers_1_1_2_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(maxUnpool2dEClass, MaxUnpool2d.class, "MaxUnpool2d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(maxUnpool3dEClass, MaxUnpool3d.class, "MaxUnpool3d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(pooling_layers_1_1_2EClass, Pooling_layers_1_1_2.class, "Pooling_layers_1_1_2", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getPooling_layers_1_1_2_Ceil_mode(), theTypesPackage.getBoolean(), "ceil_mode", null, 0, 1, Pooling_layers_1_1_2.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(lpPool1dEClass, LPPool1d.class, "LPPool1d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(lpPool2dEClass, LPPool2d.class, "LPPool2d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(avgPool2d3dEClass, AvgPool2d3d.class, "AvgPool2d3d", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getAvgPool2d3d_Divisor_override(), theTypesPackage.getInteger(), "divisor_override", null, 0, 1, AvgPool2d3d.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(avgPool2dEClass, AvgPool2d.class, "AvgPool2d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(avgPool3dEClass, AvgPool3d.class, "AvgPool3d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(maxPool2dEClass, MaxPool2d.class, "MaxPool2d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(maxPool3dEClass, MaxPool3d.class, "MaxPool3d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(fractionalMaxPool2dEClass, FractionalMaxPool2d.class, "FractionalMaxPool2d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getFractionalMaxPool2d_Output_size(), theTypesPackage.getInteger(), "output_size", null, 0, -1, FractionalMaxPool2d.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getFractionalMaxPool2d_Output_ratio(), theTypesPackage.getInteger(), "output_ratio", null, 0, -1, FractionalMaxPool2d.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getFractionalMaxPool2d_Return_indices(), theTypesPackage.getBoolean(), "return_indices", null, 0, 1, FractionalMaxPool2d.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		// Create annotations
+		// http://www.eclipse.org/uml2/2.0.0/UML
+		createUMLAnnotations();
+	}
+
+	/**
+	 * Initializes the annotations for <b>http://www.eclipse.org/uml2/2.0.0/UML</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createUMLAnnotations() {
+		String source = "http://www.eclipse.org/uml2/2.0.0/UML"; //$NON-NLS-1$
+		addAnnotation
+		  (avgPool2d3dEClass,
+		   source,
+		   new String[] {
+			   "originalName", "AvgPool2d/3d" //$NON-NLS-1$ //$NON-NLS-2$
+		   });
+	}
+
+} //Pooling_layersPackageImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/Pooling_layers_1Impl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/Pooling_layers_1Impl.java
new file mode 100644
index 0000000..87d74dd
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/Pooling_layers_1Impl.java
@@ -0,0 +1,157 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Pooling layers 1</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_1Impl#getKernel_size <em>Kernel size</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class Pooling_layers_1Impl extends Pooling_layersImpl implements Pooling_layers_1 {
+	/**
+	 * The cached value of the '{@link #getKernel_size() <em>Kernel size</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKernel_size()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Integer> kernel_size;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Pooling_layers_1Impl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Pooling_layersPackage.Literals.POOLING_LAYERS_1;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Integer> getKernel_size() {
+		if (kernel_size == null) {
+			kernel_size = new EDataTypeUniqueEList<Integer>(Integer.class, this, Pooling_layersPackage.POOLING_LAYERS_1__KERNEL_SIZE);
+		}
+		return kernel_size;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Pooling_layersPackage.POOLING_LAYERS_1__KERNEL_SIZE:
+				return getKernel_size();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Pooling_layersPackage.POOLING_LAYERS_1__KERNEL_SIZE:
+				getKernel_size().clear();
+				getKernel_size().addAll((Collection<? extends Integer>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Pooling_layersPackage.POOLING_LAYERS_1__KERNEL_SIZE:
+				getKernel_size().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Pooling_layersPackage.POOLING_LAYERS_1__KERNEL_SIZE:
+				return kernel_size != null && !kernel_size.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (kernel_size: "); //$NON-NLS-1$
+		result.append(kernel_size);
+		result.append(')');
+		return result.toString();
+	}
+
+} //Pooling_layers_1Impl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/Pooling_layers_1_1Impl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/Pooling_layers_1_1Impl.java
new file mode 100644
index 0000000..cb1d1ed
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/Pooling_layers_1_1Impl.java
@@ -0,0 +1,157 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Pooling layers 11</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_1_1Impl#getStride <em>Stride</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class Pooling_layers_1_1Impl extends Pooling_layers_1Impl implements Pooling_layers_1_1 {
+	/**
+	 * The cached value of the '{@link #getStride() <em>Stride</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getStride()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Integer> stride;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Pooling_layers_1_1Impl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Pooling_layersPackage.Literals.POOLING_LAYERS_11;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Integer> getStride() {
+		if (stride == null) {
+			stride = new EDataTypeUniqueEList<Integer>(Integer.class, this, Pooling_layersPackage.POOLING_LAYERS_11__STRIDE);
+		}
+		return stride;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Pooling_layersPackage.POOLING_LAYERS_11__STRIDE:
+				return getStride();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Pooling_layersPackage.POOLING_LAYERS_11__STRIDE:
+				getStride().clear();
+				getStride().addAll((Collection<? extends Integer>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Pooling_layersPackage.POOLING_LAYERS_11__STRIDE:
+				getStride().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Pooling_layersPackage.POOLING_LAYERS_11__STRIDE:
+				return stride != null && !stride.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (stride: "); //$NON-NLS-1$
+		result.append(stride);
+		result.append(')');
+		return result.toString();
+	}
+
+} //Pooling_layers_1_1Impl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/Pooling_layers_1_1_1Impl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/Pooling_layers_1_1_1Impl.java
new file mode 100644
index 0000000..474e263
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/Pooling_layers_1_1_1Impl.java
@@ -0,0 +1,217 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_1;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Pooling layers 111</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_1_1_1Impl#getPadding <em>Padding</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_1_1_1Impl#getPadding_k <em>Padding k</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class Pooling_layers_1_1_1Impl extends Pooling_layers_1_1Impl implements Pooling_layers_1_1_1 {
+	/**
+	 * The cached value of the '{@link #getPadding() <em>Padding</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPadding()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Integer> padding;
+
+	/**
+	 * The default value of the '{@link #getPadding_k() <em>Padding k</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPadding_k()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String PADDING_K_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getPadding_k() <em>Padding k</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPadding_k()
+	 * @generated
+	 * @ordered
+	 */
+	protected String padding_k = PADDING_K_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Pooling_layers_1_1_1Impl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Pooling_layersPackage.Literals.POOLING_LAYERS_111;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Integer> getPadding() {
+		if (padding == null) {
+			padding = new EDataTypeUniqueEList<Integer>(Integer.class, this, Pooling_layersPackage.POOLING_LAYERS_111__PADDING);
+		}
+		return padding;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getPadding_k() {
+		return padding_k;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setPadding_k(String newPadding_k) {
+		String oldPadding_k = padding_k;
+		padding_k = newPadding_k;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Pooling_layersPackage.POOLING_LAYERS_111__PADDING_K, oldPadding_k, padding_k));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Pooling_layersPackage.POOLING_LAYERS_111__PADDING:
+				return getPadding();
+			case Pooling_layersPackage.POOLING_LAYERS_111__PADDING_K:
+				return getPadding_k();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Pooling_layersPackage.POOLING_LAYERS_111__PADDING:
+				getPadding().clear();
+				getPadding().addAll((Collection<? extends Integer>)newValue);
+				return;
+			case Pooling_layersPackage.POOLING_LAYERS_111__PADDING_K:
+				setPadding_k((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Pooling_layersPackage.POOLING_LAYERS_111__PADDING:
+				getPadding().clear();
+				return;
+			case Pooling_layersPackage.POOLING_LAYERS_111__PADDING_K:
+				setPadding_k(PADDING_K_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Pooling_layersPackage.POOLING_LAYERS_111__PADDING:
+				return padding != null && !padding.isEmpty();
+			case Pooling_layersPackage.POOLING_LAYERS_111__PADDING_K:
+				return PADDING_K_EDEFAULT == null ? padding_k != null : !PADDING_K_EDEFAULT.equals(padding_k);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (padding: "); //$NON-NLS-1$
+		result.append(padding);
+		result.append(", padding_k: "); //$NON-NLS-1$
+		result.append(padding_k);
+		result.append(')');
+		return result.toString();
+	}
+
+} //Pooling_layers_1_1_1Impl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/Pooling_layers_1_1_1_1Impl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/Pooling_layers_1_1_1_1Impl.java
new file mode 100644
index 0000000..37a4111
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/Pooling_layers_1_1_1_1Impl.java
@@ -0,0 +1,217 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_1_1;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Pooling layers 1111</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_1_1_1_1Impl#isCeil_mode <em>Ceil mode</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_1_1_1_1Impl#getPool_size <em>Pool size</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class Pooling_layers_1_1_1_1Impl extends Pooling_layers_1_1_1Impl implements Pooling_layers_1_1_1_1 {
+	/**
+	 * The default value of the '{@link #isCeil_mode() <em>Ceil mode</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isCeil_mode()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean CEIL_MODE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isCeil_mode() <em>Ceil mode</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isCeil_mode()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean ceil_mode = CEIL_MODE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getPool_size() <em>Pool size</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPool_size()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Integer> pool_size;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Pooling_layers_1_1_1_1Impl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Pooling_layersPackage.Literals.POOLING_LAYERS_1111;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isCeil_mode() {
+		return ceil_mode;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setCeil_mode(boolean newCeil_mode) {
+		boolean oldCeil_mode = ceil_mode;
+		ceil_mode = newCeil_mode;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Pooling_layersPackage.POOLING_LAYERS_1111__CEIL_MODE, oldCeil_mode, ceil_mode));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Integer> getPool_size() {
+		if (pool_size == null) {
+			pool_size = new EDataTypeUniqueEList<Integer>(Integer.class, this, Pooling_layersPackage.POOLING_LAYERS_1111__POOL_SIZE);
+		}
+		return pool_size;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Pooling_layersPackage.POOLING_LAYERS_1111__CEIL_MODE:
+				return isCeil_mode();
+			case Pooling_layersPackage.POOLING_LAYERS_1111__POOL_SIZE:
+				return getPool_size();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Pooling_layersPackage.POOLING_LAYERS_1111__CEIL_MODE:
+				setCeil_mode((Boolean)newValue);
+				return;
+			case Pooling_layersPackage.POOLING_LAYERS_1111__POOL_SIZE:
+				getPool_size().clear();
+				getPool_size().addAll((Collection<? extends Integer>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Pooling_layersPackage.POOLING_LAYERS_1111__CEIL_MODE:
+				setCeil_mode(CEIL_MODE_EDEFAULT);
+				return;
+			case Pooling_layersPackage.POOLING_LAYERS_1111__POOL_SIZE:
+				getPool_size().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Pooling_layersPackage.POOLING_LAYERS_1111__CEIL_MODE:
+				return ceil_mode != CEIL_MODE_EDEFAULT;
+			case Pooling_layersPackage.POOLING_LAYERS_1111__POOL_SIZE:
+				return pool_size != null && !pool_size.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (ceil_mode: "); //$NON-NLS-1$
+		result.append(ceil_mode);
+		result.append(", pool_size: "); //$NON-NLS-1$
+		result.append(pool_size);
+		result.append(')');
+		return result.toString();
+	}
+
+} //Pooling_layers_1_1_1_1Impl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/Pooling_layers_1_1_2Impl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/Pooling_layers_1_1_2Impl.java
new file mode 100644
index 0000000..05d4029
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/Pooling_layers_1_1_2Impl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_2;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Pooling layers 112</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_1_1_2Impl#isCeil_mode <em>Ceil mode</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class Pooling_layers_1_1_2Impl extends Pooling_layers_1_1Impl implements Pooling_layers_1_1_2 {
+	/**
+	 * The default value of the '{@link #isCeil_mode() <em>Ceil mode</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isCeil_mode()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean CEIL_MODE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isCeil_mode() <em>Ceil mode</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isCeil_mode()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean ceil_mode = CEIL_MODE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Pooling_layers_1_1_2Impl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Pooling_layersPackage.Literals.POOLING_LAYERS_112;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isCeil_mode() {
+		return ceil_mode;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setCeil_mode(boolean newCeil_mode) {
+		boolean oldCeil_mode = ceil_mode;
+		ceil_mode = newCeil_mode;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Pooling_layersPackage.POOLING_LAYERS_112__CEIL_MODE, oldCeil_mode, ceil_mode));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Pooling_layersPackage.POOLING_LAYERS_112__CEIL_MODE:
+				return isCeil_mode();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Pooling_layersPackage.POOLING_LAYERS_112__CEIL_MODE:
+				setCeil_mode((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Pooling_layersPackage.POOLING_LAYERS_112__CEIL_MODE:
+				setCeil_mode(CEIL_MODE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Pooling_layersPackage.POOLING_LAYERS_112__CEIL_MODE:
+				return ceil_mode != CEIL_MODE_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (ceil_mode: "); //$NON-NLS-1$
+		result.append(ceil_mode);
+		result.append(')');
+		return result.toString();
+	}
+
+} //Pooling_layers_1_1_2Impl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/Pooling_layers_1_1_2_1Impl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/Pooling_layers_1_1_2_1Impl.java
new file mode 100644
index 0000000..e602499
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/Pooling_layers_1_1_2_1Impl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_2_1;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Pooling layers 1121</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_1_1_2_1Impl#isCount_include_pad <em>Count include pad</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class Pooling_layers_1_1_2_1Impl extends Pooling_layers_1_1_1_1Impl implements Pooling_layers_1_1_2_1 {
+	/**
+	 * The default value of the '{@link #isCount_include_pad() <em>Count include pad</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isCount_include_pad()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean COUNT_INCLUDE_PAD_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isCount_include_pad() <em>Count include pad</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isCount_include_pad()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean count_include_pad = COUNT_INCLUDE_PAD_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Pooling_layers_1_1_2_1Impl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Pooling_layersPackage.Literals.POOLING_LAYERS_1121;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isCount_include_pad() {
+		return count_include_pad;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setCount_include_pad(boolean newCount_include_pad) {
+		boolean oldCount_include_pad = count_include_pad;
+		count_include_pad = newCount_include_pad;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Pooling_layersPackage.POOLING_LAYERS_1121__COUNT_INCLUDE_PAD, oldCount_include_pad, count_include_pad));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Pooling_layersPackage.POOLING_LAYERS_1121__COUNT_INCLUDE_PAD:
+				return isCount_include_pad();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Pooling_layersPackage.POOLING_LAYERS_1121__COUNT_INCLUDE_PAD:
+				setCount_include_pad((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Pooling_layersPackage.POOLING_LAYERS_1121__COUNT_INCLUDE_PAD:
+				setCount_include_pad(COUNT_INCLUDE_PAD_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Pooling_layersPackage.POOLING_LAYERS_1121__COUNT_INCLUDE_PAD:
+				return count_include_pad != COUNT_INCLUDE_PAD_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (count_include_pad: "); //$NON-NLS-1$
+		result.append(count_include_pad);
+		result.append(')');
+		return result.toString();
+	}
+
+} //Pooling_layers_1_1_2_1Impl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/Pooling_layers_2Impl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/Pooling_layers_2Impl.java
new file mode 100644
index 0000000..9e79fc1
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/impl/Pooling_layers_2Impl.java
@@ -0,0 +1,157 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_2;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Pooling layers 2</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layers_2Impl#getOutput_size <em>Output size</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class Pooling_layers_2Impl extends Pooling_layersImpl implements Pooling_layers_2 {
+	/**
+	 * The cached value of the '{@link #getOutput_size() <em>Output size</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getOutput_size()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Integer> output_size;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Pooling_layers_2Impl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Pooling_layersPackage.Literals.POOLING_LAYERS_2;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Integer> getOutput_size() {
+		if (output_size == null) {
+			output_size = new EDataTypeUniqueEList<Integer>(Integer.class, this, Pooling_layersPackage.POOLING_LAYERS_2__OUTPUT_SIZE);
+		}
+		return output_size;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Pooling_layersPackage.POOLING_LAYERS_2__OUTPUT_SIZE:
+				return getOutput_size();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Pooling_layersPackage.POOLING_LAYERS_2__OUTPUT_SIZE:
+				getOutput_size().clear();
+				getOutput_size().addAll((Collection<? extends Integer>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Pooling_layersPackage.POOLING_LAYERS_2__OUTPUT_SIZE:
+				getOutput_size().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Pooling_layersPackage.POOLING_LAYERS_2__OUTPUT_SIZE:
+				return output_size != null && !output_size.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (output_size: "); //$NON-NLS-1$
+		result.append(output_size);
+		result.append(')');
+		return result.toString();
+	}
+
+} //Pooling_layers_2Impl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/util/Pooling_layersAdapterFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/util/Pooling_layersAdapterFactory.java
new file mode 100644
index 0000000..5cebb36
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/util/Pooling_layersAdapterFactory.java
@@ -0,0 +1,651 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage
+ * @generated
+ */
+public class Pooling_layersAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static Pooling_layersPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Pooling_layersAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = Pooling_layersPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Pooling_layersSwitch<Adapter> modelSwitch =
+		new Pooling_layersSwitch<Adapter>() {
+			@Override
+			public Adapter casePooling_layers(Pooling_layers object) {
+				return createPooling_layersAdapter();
+			}
+			@Override
+			public Adapter casePooling_layers_1(Pooling_layers_1 object) {
+				return createPooling_layers_1Adapter();
+			}
+			@Override
+			public Adapter casePooling_layers_2(Pooling_layers_2 object) {
+				return createPooling_layers_2Adapter();
+			}
+			@Override
+			public Adapter caseAdaptativeMaxPool(AdaptativeMaxPool object) {
+				return createAdaptativeMaxPoolAdapter();
+			}
+			@Override
+			public Adapter caseAdaptativeMaxPool1d(AdaptativeMaxPool1d object) {
+				return createAdaptativeMaxPool1dAdapter();
+			}
+			@Override
+			public Adapter caseAdaptativeMaxPool2d(AdaptativeMaxPool2d object) {
+				return createAdaptativeMaxPool2dAdapter();
+			}
+			@Override
+			public Adapter caseAdaptativeMaxPool3d(AdaptativeMaxPool3d object) {
+				return createAdaptativeMaxPool3dAdapter();
+			}
+			@Override
+			public Adapter caseAdaptiveAvgPool3d(AdaptiveAvgPool3d object) {
+				return createAdaptiveAvgPool3dAdapter();
+			}
+			@Override
+			public Adapter caseAdaptiveAvgPool2d(AdaptiveAvgPool2d object) {
+				return createAdaptiveAvgPool2dAdapter();
+			}
+			@Override
+			public Adapter caseAdaptiveAvgPool1d(AdaptiveAvgPool1d object) {
+				return createAdaptiveAvgPool1dAdapter();
+			}
+			@Override
+			public Adapter casePooling_layers_1_1(Pooling_layers_1_1 object) {
+				return createPooling_layers_1_1Adapter();
+			}
+			@Override
+			public Adapter caseMaxPool1d(MaxPool1d object) {
+				return createMaxPool1dAdapter();
+			}
+			@Override
+			public Adapter caseMaxPool(MaxPool object) {
+				return createMaxPoolAdapter();
+			}
+			@Override
+			public Adapter casePooling_layers_1_1_1_1(Pooling_layers_1_1_1_1 object) {
+				return createPooling_layers_1_1_1_1Adapter();
+			}
+			@Override
+			public Adapter casePooling_layers_1_1_1(Pooling_layers_1_1_1 object) {
+				return createPooling_layers_1_1_1Adapter();
+			}
+			@Override
+			public Adapter caseMaxUnpool1d(MaxUnpool1d object) {
+				return createMaxUnpool1dAdapter();
+			}
+			@Override
+			public Adapter caseAvgPool1d(AvgPool1d object) {
+				return createAvgPool1dAdapter();
+			}
+			@Override
+			public Adapter casePooling_layers_1_1_2_1(Pooling_layers_1_1_2_1 object) {
+				return createPooling_layers_1_1_2_1Adapter();
+			}
+			@Override
+			public Adapter caseMaxUnpool2d(MaxUnpool2d object) {
+				return createMaxUnpool2dAdapter();
+			}
+			@Override
+			public Adapter caseMaxUnpool3d(MaxUnpool3d object) {
+				return createMaxUnpool3dAdapter();
+			}
+			@Override
+			public Adapter casePooling_layers_1_1_2(Pooling_layers_1_1_2 object) {
+				return createPooling_layers_1_1_2Adapter();
+			}
+			@Override
+			public Adapter caseLPPool1d(LPPool1d object) {
+				return createLPPool1dAdapter();
+			}
+			@Override
+			public Adapter caseLPPool2d(LPPool2d object) {
+				return createLPPool2dAdapter();
+			}
+			@Override
+			public Adapter caseAvgPool2d3d(AvgPool2d3d object) {
+				return createAvgPool2d3dAdapter();
+			}
+			@Override
+			public Adapter caseAvgPool2d(AvgPool2d object) {
+				return createAvgPool2dAdapter();
+			}
+			@Override
+			public Adapter caseAvgPool3d(AvgPool3d object) {
+				return createAvgPool3dAdapter();
+			}
+			@Override
+			public Adapter caseMaxPool2d(MaxPool2d object) {
+				return createMaxPool2dAdapter();
+			}
+			@Override
+			public Adapter caseMaxPool3d(MaxPool3d object) {
+				return createMaxPool3dAdapter();
+			}
+			@Override
+			public Adapter caseFractionalMaxPool2d(FractionalMaxPool2d object) {
+				return createFractionalMaxPool2dAdapter();
+			}
+			@Override
+			public Adapter caseModel(Model object) {
+				return createModelAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers <em>Pooling layers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers
+	 * @generated
+	 */
+	public Adapter createPooling_layersAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1 <em>Pooling layers 1</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1
+	 * @generated
+	 */
+	public Adapter createPooling_layers_1Adapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_2 <em>Pooling layers 2</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_2
+	 * @generated
+	 */
+	public Adapter createPooling_layers_2Adapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptativeMaxPool <em>Adaptative Max Pool</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptativeMaxPool
+	 * @generated
+	 */
+	public Adapter createAdaptativeMaxPoolAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptativeMaxPool1d <em>Adaptative Max Pool1d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptativeMaxPool1d
+	 * @generated
+	 */
+	public Adapter createAdaptativeMaxPool1dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptativeMaxPool2d <em>Adaptative Max Pool2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptativeMaxPool2d
+	 * @generated
+	 */
+	public Adapter createAdaptativeMaxPool2dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptativeMaxPool3d <em>Adaptative Max Pool3d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptativeMaxPool3d
+	 * @generated
+	 */
+	public Adapter createAdaptativeMaxPool3dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptiveAvgPool3d <em>Adaptive Avg Pool3d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptiveAvgPool3d
+	 * @generated
+	 */
+	public Adapter createAdaptiveAvgPool3dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptiveAvgPool2d <em>Adaptive Avg Pool2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptiveAvgPool2d
+	 * @generated
+	 */
+	public Adapter createAdaptiveAvgPool2dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptiveAvgPool1d <em>Adaptive Avg Pool1d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AdaptiveAvgPool1d
+	 * @generated
+	 */
+	public Adapter createAdaptiveAvgPool1dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1 <em>Pooling layers 11</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1
+	 * @generated
+	 */
+	public Adapter createPooling_layers_1_1Adapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxPool1d <em>Max Pool1d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxPool1d
+	 * @generated
+	 */
+	public Adapter createMaxPool1dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxPool <em>Max Pool</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxPool
+	 * @generated
+	 */
+	public Adapter createMaxPoolAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_1_1 <em>Pooling layers 1111</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_1_1
+	 * @generated
+	 */
+	public Adapter createPooling_layers_1_1_1_1Adapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_1 <em>Pooling layers 111</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_1
+	 * @generated
+	 */
+	public Adapter createPooling_layers_1_1_1Adapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxUnpool1d <em>Max Unpool1d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxUnpool1d
+	 * @generated
+	 */
+	public Adapter createMaxUnpool1dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AvgPool1d <em>Avg Pool1d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AvgPool1d
+	 * @generated
+	 */
+	public Adapter createAvgPool1dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_2_1 <em>Pooling layers 1121</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_2_1
+	 * @generated
+	 */
+	public Adapter createPooling_layers_1_1_2_1Adapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxUnpool2d <em>Max Unpool2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxUnpool2d
+	 * @generated
+	 */
+	public Adapter createMaxUnpool2dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxUnpool3d <em>Max Unpool3d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxUnpool3d
+	 * @generated
+	 */
+	public Adapter createMaxUnpool3dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_2 <em>Pooling layers 112</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layers_1_1_2
+	 * @generated
+	 */
+	public Adapter createPooling_layers_1_1_2Adapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.LPPool1d <em>LP Pool1d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.LPPool1d
+	 * @generated
+	 */
+	public Adapter createLPPool1dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.LPPool2d <em>LP Pool2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.LPPool2d
+	 * @generated
+	 */
+	public Adapter createLPPool2dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AvgPool2d3d <em>Avg Pool2d3d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AvgPool2d3d
+	 * @generated
+	 */
+	public Adapter createAvgPool2d3dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AvgPool2d <em>Avg Pool2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AvgPool2d
+	 * @generated
+	 */
+	public Adapter createAvgPool2dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AvgPool3d <em>Avg Pool3d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.AvgPool3d
+	 * @generated
+	 */
+	public Adapter createAvgPool3dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxPool2d <em>Max Pool2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxPool2d
+	 * @generated
+	 */
+	public Adapter createMaxPool2dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxPool3d <em>Max Pool3d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.MaxPool3d
+	 * @generated
+	 */
+	public Adapter createMaxPool3dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.FractionalMaxPool2d <em>Fractional Max Pool2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.FractionalMaxPool2d
+	 * @generated
+	 */
+	public Adapter createFractionalMaxPool2dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model <em>Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.Model
+	 * @generated
+	 */
+	public Adapter createModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //Pooling_layersAdapterFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/util/Pooling_layersSwitch.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/util/Pooling_layersSwitch.java
new file mode 100644
index 0000000..384491c
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Pooling_layers/util/Pooling_layersSwitch.java
@@ -0,0 +1,858 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage
+ * @generated
+ */
+public class Pooling_layersSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static Pooling_layersPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Pooling_layersSwitch() {
+		if (modelPackage == null) {
+			modelPackage = Pooling_layersPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case Pooling_layersPackage.POOLING_LAYERS: {
+				Pooling_layers pooling_layers = (Pooling_layers)theEObject;
+				T result = casePooling_layers(pooling_layers);
+				if (result == null) result = caseModel(pooling_layers);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Pooling_layersPackage.POOLING_LAYERS_1: {
+				Pooling_layers_1 pooling_layers_1 = (Pooling_layers_1)theEObject;
+				T result = casePooling_layers_1(pooling_layers_1);
+				if (result == null) result = casePooling_layers(pooling_layers_1);
+				if (result == null) result = caseModel(pooling_layers_1);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Pooling_layersPackage.POOLING_LAYERS_2: {
+				Pooling_layers_2 pooling_layers_2 = (Pooling_layers_2)theEObject;
+				T result = casePooling_layers_2(pooling_layers_2);
+				if (result == null) result = casePooling_layers(pooling_layers_2);
+				if (result == null) result = caseModel(pooling_layers_2);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Pooling_layersPackage.ADAPTATIVE_MAX_POOL: {
+				AdaptativeMaxPool adaptativeMaxPool = (AdaptativeMaxPool)theEObject;
+				T result = caseAdaptativeMaxPool(adaptativeMaxPool);
+				if (result == null) result = casePooling_layers_2(adaptativeMaxPool);
+				if (result == null) result = casePooling_layers(adaptativeMaxPool);
+				if (result == null) result = caseModel(adaptativeMaxPool);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Pooling_layersPackage.ADAPTATIVE_MAX_POOL1D: {
+				AdaptativeMaxPool1d adaptativeMaxPool1d = (AdaptativeMaxPool1d)theEObject;
+				T result = caseAdaptativeMaxPool1d(adaptativeMaxPool1d);
+				if (result == null) result = caseAdaptativeMaxPool(adaptativeMaxPool1d);
+				if (result == null) result = casePooling_layers_2(adaptativeMaxPool1d);
+				if (result == null) result = casePooling_layers(adaptativeMaxPool1d);
+				if (result == null) result = caseModel(adaptativeMaxPool1d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Pooling_layersPackage.ADAPTATIVE_MAX_POOL2D: {
+				AdaptativeMaxPool2d adaptativeMaxPool2d = (AdaptativeMaxPool2d)theEObject;
+				T result = caseAdaptativeMaxPool2d(adaptativeMaxPool2d);
+				if (result == null) result = caseAdaptativeMaxPool(adaptativeMaxPool2d);
+				if (result == null) result = casePooling_layers_2(adaptativeMaxPool2d);
+				if (result == null) result = casePooling_layers(adaptativeMaxPool2d);
+				if (result == null) result = caseModel(adaptativeMaxPool2d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Pooling_layersPackage.ADAPTATIVE_MAX_POOL3D: {
+				AdaptativeMaxPool3d adaptativeMaxPool3d = (AdaptativeMaxPool3d)theEObject;
+				T result = caseAdaptativeMaxPool3d(adaptativeMaxPool3d);
+				if (result == null) result = caseAdaptativeMaxPool(adaptativeMaxPool3d);
+				if (result == null) result = casePooling_layers_2(adaptativeMaxPool3d);
+				if (result == null) result = casePooling_layers(adaptativeMaxPool3d);
+				if (result == null) result = caseModel(adaptativeMaxPool3d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Pooling_layersPackage.ADAPTIVE_AVG_POOL3D: {
+				AdaptiveAvgPool3d adaptiveAvgPool3d = (AdaptiveAvgPool3d)theEObject;
+				T result = caseAdaptiveAvgPool3d(adaptiveAvgPool3d);
+				if (result == null) result = casePooling_layers_2(adaptiveAvgPool3d);
+				if (result == null) result = casePooling_layers(adaptiveAvgPool3d);
+				if (result == null) result = caseModel(adaptiveAvgPool3d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Pooling_layersPackage.ADAPTIVE_AVG_POOL2D: {
+				AdaptiveAvgPool2d adaptiveAvgPool2d = (AdaptiveAvgPool2d)theEObject;
+				T result = caseAdaptiveAvgPool2d(adaptiveAvgPool2d);
+				if (result == null) result = casePooling_layers_2(adaptiveAvgPool2d);
+				if (result == null) result = casePooling_layers(adaptiveAvgPool2d);
+				if (result == null) result = caseModel(adaptiveAvgPool2d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Pooling_layersPackage.ADAPTIVE_AVG_POOL1D: {
+				AdaptiveAvgPool1d adaptiveAvgPool1d = (AdaptiveAvgPool1d)theEObject;
+				T result = caseAdaptiveAvgPool1d(adaptiveAvgPool1d);
+				if (result == null) result = casePooling_layers_2(adaptiveAvgPool1d);
+				if (result == null) result = casePooling_layers(adaptiveAvgPool1d);
+				if (result == null) result = caseModel(adaptiveAvgPool1d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Pooling_layersPackage.POOLING_LAYERS_11: {
+				Pooling_layers_1_1 pooling_layers_1_1 = (Pooling_layers_1_1)theEObject;
+				T result = casePooling_layers_1_1(pooling_layers_1_1);
+				if (result == null) result = casePooling_layers_1(pooling_layers_1_1);
+				if (result == null) result = casePooling_layers(pooling_layers_1_1);
+				if (result == null) result = caseModel(pooling_layers_1_1);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Pooling_layersPackage.MAX_POOL1D: {
+				MaxPool1d maxPool1d = (MaxPool1d)theEObject;
+				T result = caseMaxPool1d(maxPool1d);
+				if (result == null) result = caseMaxPool(maxPool1d);
+				if (result == null) result = casePooling_layers_1_1_1_1(maxPool1d);
+				if (result == null) result = casePooling_layers_1_1_1(maxPool1d);
+				if (result == null) result = casePooling_layers_1_1(maxPool1d);
+				if (result == null) result = casePooling_layers_1(maxPool1d);
+				if (result == null) result = casePooling_layers(maxPool1d);
+				if (result == null) result = caseModel(maxPool1d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Pooling_layersPackage.MAX_POOL: {
+				MaxPool maxPool = (MaxPool)theEObject;
+				T result = caseMaxPool(maxPool);
+				if (result == null) result = casePooling_layers_1_1_1_1(maxPool);
+				if (result == null) result = casePooling_layers_1_1_1(maxPool);
+				if (result == null) result = casePooling_layers_1_1(maxPool);
+				if (result == null) result = casePooling_layers_1(maxPool);
+				if (result == null) result = casePooling_layers(maxPool);
+				if (result == null) result = caseModel(maxPool);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Pooling_layersPackage.POOLING_LAYERS_1111: {
+				Pooling_layers_1_1_1_1 pooling_layers_1_1_1_1 = (Pooling_layers_1_1_1_1)theEObject;
+				T result = casePooling_layers_1_1_1_1(pooling_layers_1_1_1_1);
+				if (result == null) result = casePooling_layers_1_1_1(pooling_layers_1_1_1_1);
+				if (result == null) result = casePooling_layers_1_1(pooling_layers_1_1_1_1);
+				if (result == null) result = casePooling_layers_1(pooling_layers_1_1_1_1);
+				if (result == null) result = casePooling_layers(pooling_layers_1_1_1_1);
+				if (result == null) result = caseModel(pooling_layers_1_1_1_1);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Pooling_layersPackage.POOLING_LAYERS_111: {
+				Pooling_layers_1_1_1 pooling_layers_1_1_1 = (Pooling_layers_1_1_1)theEObject;
+				T result = casePooling_layers_1_1_1(pooling_layers_1_1_1);
+				if (result == null) result = casePooling_layers_1_1(pooling_layers_1_1_1);
+				if (result == null) result = casePooling_layers_1(pooling_layers_1_1_1);
+				if (result == null) result = casePooling_layers(pooling_layers_1_1_1);
+				if (result == null) result = caseModel(pooling_layers_1_1_1);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Pooling_layersPackage.MAX_UNPOOL1D: {
+				MaxUnpool1d maxUnpool1d = (MaxUnpool1d)theEObject;
+				T result = caseMaxUnpool1d(maxUnpool1d);
+				if (result == null) result = casePooling_layers_1_1_1(maxUnpool1d);
+				if (result == null) result = casePooling_layers_1_1(maxUnpool1d);
+				if (result == null) result = casePooling_layers_1(maxUnpool1d);
+				if (result == null) result = casePooling_layers(maxUnpool1d);
+				if (result == null) result = caseModel(maxUnpool1d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Pooling_layersPackage.AVG_POOL1D: {
+				AvgPool1d avgPool1d = (AvgPool1d)theEObject;
+				T result = caseAvgPool1d(avgPool1d);
+				if (result == null) result = casePooling_layers_1_1_2_1(avgPool1d);
+				if (result == null) result = casePooling_layers_1_1_1_1(avgPool1d);
+				if (result == null) result = casePooling_layers_1_1_1(avgPool1d);
+				if (result == null) result = casePooling_layers_1_1(avgPool1d);
+				if (result == null) result = casePooling_layers_1(avgPool1d);
+				if (result == null) result = casePooling_layers(avgPool1d);
+				if (result == null) result = caseModel(avgPool1d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Pooling_layersPackage.POOLING_LAYERS_1121: {
+				Pooling_layers_1_1_2_1 pooling_layers_1_1_2_1 = (Pooling_layers_1_1_2_1)theEObject;
+				T result = casePooling_layers_1_1_2_1(pooling_layers_1_1_2_1);
+				if (result == null) result = casePooling_layers_1_1_1_1(pooling_layers_1_1_2_1);
+				if (result == null) result = casePooling_layers_1_1_1(pooling_layers_1_1_2_1);
+				if (result == null) result = casePooling_layers_1_1(pooling_layers_1_1_2_1);
+				if (result == null) result = casePooling_layers_1(pooling_layers_1_1_2_1);
+				if (result == null) result = casePooling_layers(pooling_layers_1_1_2_1);
+				if (result == null) result = caseModel(pooling_layers_1_1_2_1);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Pooling_layersPackage.MAX_UNPOOL2D: {
+				MaxUnpool2d maxUnpool2d = (MaxUnpool2d)theEObject;
+				T result = caseMaxUnpool2d(maxUnpool2d);
+				if (result == null) result = casePooling_layers_1_1_1(maxUnpool2d);
+				if (result == null) result = casePooling_layers_1_1(maxUnpool2d);
+				if (result == null) result = casePooling_layers_1(maxUnpool2d);
+				if (result == null) result = casePooling_layers(maxUnpool2d);
+				if (result == null) result = caseModel(maxUnpool2d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Pooling_layersPackage.MAX_UNPOOL3D: {
+				MaxUnpool3d maxUnpool3d = (MaxUnpool3d)theEObject;
+				T result = caseMaxUnpool3d(maxUnpool3d);
+				if (result == null) result = casePooling_layers_1_1_1(maxUnpool3d);
+				if (result == null) result = casePooling_layers_1_1(maxUnpool3d);
+				if (result == null) result = casePooling_layers_1(maxUnpool3d);
+				if (result == null) result = casePooling_layers(maxUnpool3d);
+				if (result == null) result = caseModel(maxUnpool3d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Pooling_layersPackage.POOLING_LAYERS_112: {
+				Pooling_layers_1_1_2 pooling_layers_1_1_2 = (Pooling_layers_1_1_2)theEObject;
+				T result = casePooling_layers_1_1_2(pooling_layers_1_1_2);
+				if (result == null) result = casePooling_layers_1_1(pooling_layers_1_1_2);
+				if (result == null) result = casePooling_layers_1(pooling_layers_1_1_2);
+				if (result == null) result = casePooling_layers(pooling_layers_1_1_2);
+				if (result == null) result = caseModel(pooling_layers_1_1_2);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Pooling_layersPackage.LP_POOL1D: {
+				LPPool1d lpPool1d = (LPPool1d)theEObject;
+				T result = caseLPPool1d(lpPool1d);
+				if (result == null) result = casePooling_layers_1_1_2(lpPool1d);
+				if (result == null) result = casePooling_layers_1_1(lpPool1d);
+				if (result == null) result = casePooling_layers_1(lpPool1d);
+				if (result == null) result = casePooling_layers(lpPool1d);
+				if (result == null) result = caseModel(lpPool1d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Pooling_layersPackage.LP_POOL2D: {
+				LPPool2d lpPool2d = (LPPool2d)theEObject;
+				T result = caseLPPool2d(lpPool2d);
+				if (result == null) result = casePooling_layers_1_1_2(lpPool2d);
+				if (result == null) result = casePooling_layers_1_1(lpPool2d);
+				if (result == null) result = casePooling_layers_1(lpPool2d);
+				if (result == null) result = casePooling_layers(lpPool2d);
+				if (result == null) result = caseModel(lpPool2d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Pooling_layersPackage.AVG_POOL2D3D: {
+				AvgPool2d3d avgPool2d3d = (AvgPool2d3d)theEObject;
+				T result = caseAvgPool2d3d(avgPool2d3d);
+				if (result == null) result = casePooling_layers_1_1_2_1(avgPool2d3d);
+				if (result == null) result = casePooling_layers_1_1_1_1(avgPool2d3d);
+				if (result == null) result = casePooling_layers_1_1_1(avgPool2d3d);
+				if (result == null) result = casePooling_layers_1_1(avgPool2d3d);
+				if (result == null) result = casePooling_layers_1(avgPool2d3d);
+				if (result == null) result = casePooling_layers(avgPool2d3d);
+				if (result == null) result = caseModel(avgPool2d3d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Pooling_layersPackage.AVG_POOL2D: {
+				AvgPool2d avgPool2d = (AvgPool2d)theEObject;
+				T result = caseAvgPool2d(avgPool2d);
+				if (result == null) result = caseAvgPool2d3d(avgPool2d);
+				if (result == null) result = casePooling_layers_1_1_2_1(avgPool2d);
+				if (result == null) result = casePooling_layers_1_1_1_1(avgPool2d);
+				if (result == null) result = casePooling_layers_1_1_1(avgPool2d);
+				if (result == null) result = casePooling_layers_1_1(avgPool2d);
+				if (result == null) result = casePooling_layers_1(avgPool2d);
+				if (result == null) result = casePooling_layers(avgPool2d);
+				if (result == null) result = caseModel(avgPool2d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Pooling_layersPackage.AVG_POOL3D: {
+				AvgPool3d avgPool3d = (AvgPool3d)theEObject;
+				T result = caseAvgPool3d(avgPool3d);
+				if (result == null) result = caseAvgPool2d3d(avgPool3d);
+				if (result == null) result = casePooling_layers_1_1_2_1(avgPool3d);
+				if (result == null) result = casePooling_layers_1_1_1_1(avgPool3d);
+				if (result == null) result = casePooling_layers_1_1_1(avgPool3d);
+				if (result == null) result = casePooling_layers_1_1(avgPool3d);
+				if (result == null) result = casePooling_layers_1(avgPool3d);
+				if (result == null) result = casePooling_layers(avgPool3d);
+				if (result == null) result = caseModel(avgPool3d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Pooling_layersPackage.MAX_POOL2D: {
+				MaxPool2d maxPool2d = (MaxPool2d)theEObject;
+				T result = caseMaxPool2d(maxPool2d);
+				if (result == null) result = caseMaxPool(maxPool2d);
+				if (result == null) result = casePooling_layers_1_1_1_1(maxPool2d);
+				if (result == null) result = casePooling_layers_1_1_1(maxPool2d);
+				if (result == null) result = casePooling_layers_1_1(maxPool2d);
+				if (result == null) result = casePooling_layers_1(maxPool2d);
+				if (result == null) result = casePooling_layers(maxPool2d);
+				if (result == null) result = caseModel(maxPool2d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Pooling_layersPackage.MAX_POOL3D: {
+				MaxPool3d maxPool3d = (MaxPool3d)theEObject;
+				T result = caseMaxPool3d(maxPool3d);
+				if (result == null) result = caseMaxPool(maxPool3d);
+				if (result == null) result = casePooling_layers_1_1_1_1(maxPool3d);
+				if (result == null) result = casePooling_layers_1_1_1(maxPool3d);
+				if (result == null) result = casePooling_layers_1_1(maxPool3d);
+				if (result == null) result = casePooling_layers_1(maxPool3d);
+				if (result == null) result = casePooling_layers(maxPool3d);
+				if (result == null) result = caseModel(maxPool3d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Pooling_layersPackage.FRACTIONAL_MAX_POOL2D: {
+				FractionalMaxPool2d fractionalMaxPool2d = (FractionalMaxPool2d)theEObject;
+				T result = caseFractionalMaxPool2d(fractionalMaxPool2d);
+				if (result == null) result = casePooling_layers_1(fractionalMaxPool2d);
+				if (result == null) result = casePooling_layers(fractionalMaxPool2d);
+				if (result == null) result = caseModel(fractionalMaxPool2d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Pooling layers</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Pooling layers</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePooling_layers(Pooling_layers object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Pooling layers 1</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Pooling layers 1</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePooling_layers_1(Pooling_layers_1 object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Pooling layers 2</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Pooling layers 2</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePooling_layers_2(Pooling_layers_2 object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Adaptative Max Pool</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Adaptative Max Pool</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseAdaptativeMaxPool(AdaptativeMaxPool object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Adaptative Max Pool1d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Adaptative Max Pool1d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseAdaptativeMaxPool1d(AdaptativeMaxPool1d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Adaptative Max Pool2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Adaptative Max Pool2d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseAdaptativeMaxPool2d(AdaptativeMaxPool2d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Adaptative Max Pool3d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Adaptative Max Pool3d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseAdaptativeMaxPool3d(AdaptativeMaxPool3d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Adaptive Avg Pool3d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Adaptive Avg Pool3d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseAdaptiveAvgPool3d(AdaptiveAvgPool3d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Adaptive Avg Pool2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Adaptive Avg Pool2d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseAdaptiveAvgPool2d(AdaptiveAvgPool2d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Adaptive Avg Pool1d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Adaptive Avg Pool1d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseAdaptiveAvgPool1d(AdaptiveAvgPool1d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Pooling layers 11</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Pooling layers 11</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePooling_layers_1_1(Pooling_layers_1_1 object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Max Pool1d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Max Pool1d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseMaxPool1d(MaxPool1d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Max Pool</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Max Pool</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseMaxPool(MaxPool object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Pooling layers 1111</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Pooling layers 1111</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePooling_layers_1_1_1_1(Pooling_layers_1_1_1_1 object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Pooling layers 111</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Pooling layers 111</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePooling_layers_1_1_1(Pooling_layers_1_1_1 object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Max Unpool1d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Max Unpool1d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseMaxUnpool1d(MaxUnpool1d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Avg Pool1d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Avg Pool1d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseAvgPool1d(AvgPool1d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Pooling layers 1121</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Pooling layers 1121</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePooling_layers_1_1_2_1(Pooling_layers_1_1_2_1 object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Max Unpool2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Max Unpool2d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseMaxUnpool2d(MaxUnpool2d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Max Unpool3d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Max Unpool3d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseMaxUnpool3d(MaxUnpool3d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Pooling layers 112</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Pooling layers 112</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePooling_layers_1_1_2(Pooling_layers_1_1_2 object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LP Pool1d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>LP Pool1d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLPPool1d(LPPool1d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LP Pool2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>LP Pool2d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLPPool2d(LPPool2d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Avg Pool2d3d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Avg Pool2d3d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseAvgPool2d3d(AvgPool2d3d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Avg Pool2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Avg Pool2d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseAvgPool2d(AvgPool2d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Avg Pool3d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Avg Pool3d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseAvgPool3d(AvgPool3d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Max Pool2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Max Pool2d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseMaxPool2d(MaxPool2d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Max Pool3d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Max Pool3d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseMaxPool3d(MaxPool3d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Fractional Max Pool2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Fractional Max Pool2d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFractionalMaxPool2d(FractionalMaxPool2d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseModel(Model object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //Pooling_layersSwitch
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/GRU.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/GRU.java
new file mode 100644
index 0000000..a99ecff
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/GRU.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>GRU</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage#getGRU()
+ * @model
+ * @generated
+ */
+public interface GRU extends Recurrent_layers_1 {
+} // GRU
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/GRUCell.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/GRUCell.java
new file mode 100644
index 0000000..63fa331
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/GRUCell.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>GRU Cell</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage#getGRUCell()
+ * @model
+ * @generated
+ */
+public interface GRUCell extends Recurrent_layers {
+} // GRUCell
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/LSTM.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/LSTM.java
new file mode 100644
index 0000000..5141fc4
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/LSTM.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LSTM</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage#getLSTM()
+ * @model
+ * @generated
+ */
+public interface LSTM extends Recurrent_layers_1 {
+} // LSTM
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/LSTMCell.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/LSTMCell.java
new file mode 100644
index 0000000..20a6d9f
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/LSTMCell.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>LSTM Cell</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage#getLSTMCell()
+ * @model
+ * @generated
+ */
+public interface LSTMCell extends Recurrent_layers {
+} // LSTMCell
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/RNN.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/RNN.java
new file mode 100644
index 0000000..881ee8f
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/RNN.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>RNN</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.RNN#getNonlinearity <em>Nonlinearity</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage#getRNN()
+ * @model
+ * @generated
+ */
+public interface RNN extends Recurrent_layers_1 {
+	/**
+	 * Returns the value of the '<em><b>Nonlinearity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Nonlinearity</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Nonlinearity</em>' attribute.
+	 * @see #setNonlinearity(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage#getRNN_Nonlinearity()
+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+	 * @generated
+	 */
+	String getNonlinearity();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.RNN#getNonlinearity <em>Nonlinearity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Nonlinearity</em>' attribute.
+	 * @see #getNonlinearity()
+	 * @generated
+	 */
+	void setNonlinearity(String value);
+
+} // RNN
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/RNNCell.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/RNNCell.java
new file mode 100644
index 0000000..07bf24a
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/RNNCell.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>RNN Cell</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.RNNCell#getNonlinearity <em>Nonlinearity</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage#getRNNCell()
+ * @model
+ * @generated
+ */
+public interface RNNCell extends Recurrent_layers {
+	/**
+	 * Returns the value of the '<em><b>Nonlinearity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Nonlinearity</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Nonlinearity</em>' attribute.
+	 * @see #setNonlinearity(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage#getRNNCell_Nonlinearity()
+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+	 * @generated
+	 */
+	String getNonlinearity();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.RNNCell#getNonlinearity <em>Nonlinearity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Nonlinearity</em>' attribute.
+	 * @see #getNonlinearity()
+	 * @generated
+	 */
+	void setNonlinearity(String value);
+
+} // RNNCell
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/Recurrent_layers.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/Recurrent_layers.java
new file mode 100644
index 0000000..8161bf1
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/Recurrent_layers.java
@@ -0,0 +1,113 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Recurrent layers</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers#getInput_size <em>Input size</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers#getHidden_size <em>Hidden size</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers#isBias_pt <em>Bias pt</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage#getRecurrent_layers()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Recurrent_layers extends Model {
+	/**
+	 * Returns the value of the '<em><b>Input size</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Input size</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Input size</em>' attribute.
+	 * @see #setInput_size(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage#getRecurrent_layers_Input_size()
+	 * @model dataType="org.eclipse.uml2.types.Integer" required="true" ordered="false"
+	 * @generated
+	 */
+	int getInput_size();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers#getInput_size <em>Input size</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Input size</em>' attribute.
+	 * @see #getInput_size()
+	 * @generated
+	 */
+	void setInput_size(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Hidden size</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Hidden size</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Hidden size</em>' attribute.
+	 * @see #setHidden_size(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage#getRecurrent_layers_Hidden_size()
+	 * @model dataType="org.eclipse.uml2.types.Integer" required="true" ordered="false"
+	 * @generated
+	 */
+	int getHidden_size();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers#getHidden_size <em>Hidden size</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Hidden size</em>' attribute.
+	 * @see #getHidden_size()
+	 * @generated
+	 */
+	void setHidden_size(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Bias pt</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Bias pt</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Bias pt</em>' attribute.
+	 * @see #setBias_pt(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage#getRecurrent_layers_Bias_pt()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isBias_pt();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers#isBias_pt <em>Bias pt</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Bias pt</em>' attribute.
+	 * @see #isBias_pt()
+	 * @generated
+	 */
+	void setBias_pt(boolean value);
+
+} // Recurrent_layers
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/Recurrent_layersFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/Recurrent_layersFactory.java
new file mode 100644
index 0000000..daacdcb
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/Recurrent_layersFactory.java
@@ -0,0 +1,96 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage
+ * @generated
+ */
+public interface Recurrent_layersFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	Recurrent_layersFactory eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>RNN Cell</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>RNN Cell</em>'.
+	 * @generated
+	 */
+	RNNCell createRNNCell();
+
+	/**
+	 * Returns a new object of class '<em>LSTM Cell</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LSTM Cell</em>'.
+	 * @generated
+	 */
+	LSTMCell createLSTMCell();
+
+	/**
+	 * Returns a new object of class '<em>GRU Cell</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>GRU Cell</em>'.
+	 * @generated
+	 */
+	GRUCell createGRUCell();
+
+	/**
+	 * Returns a new object of class '<em>RNN</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>RNN</em>'.
+	 * @generated
+	 */
+	RNN createRNN();
+
+	/**
+	 * Returns a new object of class '<em>LSTM</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>LSTM</em>'.
+	 * @generated
+	 */
+	LSTM createLSTM();
+
+	/**
+	 * Returns a new object of class '<em>GRU</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>GRU</em>'.
+	 * @generated
+	 */
+	GRU createGRU();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	Recurrent_layersPackage getRecurrent_layersPackage();
+
+} //Recurrent_layersFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/Recurrent_layersPackage.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/Recurrent_layersPackage.java
new file mode 100644
index 0000000..9c2e9f9
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/Recurrent_layersPackage.java
@@ -0,0 +1,2083 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface Recurrent_layersPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "Recurrent_layers"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://www.eclipse.org/papyrus/AIML/recurrent/1"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "AIML.Recurrent_layers"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	Recurrent_layersPackage eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersImpl <em>Recurrent layers</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl#getRecurrent_layers()
+	 * @generated
+	 */
+	int RECURRENT_LAYERS = 0;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS__BASE_CLASS = ModulePackage.MODEL__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS__NAME = ModulePackage.MODEL__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS__DATA = ModulePackage.MODEL__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS__REQUIRES_GRAD = ModulePackage.MODEL__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS__SUB_MODULE = ModulePackage.MODEL__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS__OPTIMIZER = ModulePackage.MODEL__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS__LOSS = ModulePackage.MODEL__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Input size</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS__INPUT_SIZE = ModulePackage.MODEL_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Hidden size</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS__HIDDEN_SIZE = ModulePackage.MODEL_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Bias pt</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS__BIAS_PT = ModulePackage.MODEL_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of structural features of the '<em>Recurrent layers</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS_FEATURE_COUNT = ModulePackage.MODEL_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of operations of the '<em>Recurrent layers</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS_OPERATION_COUNT = ModulePackage.MODEL_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layers_1Impl <em>Recurrent layers 1</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layers_1Impl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl#getRecurrent_layers_1()
+	 * @generated
+	 */
+	int RECURRENT_LAYERS_1 = 1;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS_1__BASE_CLASS = RECURRENT_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS_1__NAME = RECURRENT_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS_1__DATA = RECURRENT_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS_1__REQUIRES_GRAD = RECURRENT_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS_1__SUB_MODULE = RECURRENT_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS_1__OPTIMIZER = RECURRENT_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS_1__LOSS = RECURRENT_LAYERS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Input size</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS_1__INPUT_SIZE = RECURRENT_LAYERS__INPUT_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Hidden size</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS_1__HIDDEN_SIZE = RECURRENT_LAYERS__HIDDEN_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Bias pt</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS_1__BIAS_PT = RECURRENT_LAYERS__BIAS_PT;
+
+	/**
+	 * The feature id for the '<em><b>Num layers</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS_1__NUM_LAYERS = RECURRENT_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Batch first pt</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS_1__BATCH_FIRST_PT = RECURRENT_LAYERS_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Dropout</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS_1__DROPOUT = RECURRENT_LAYERS_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Bidirectional pt</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS_1__BIDIRECTIONAL_PT = RECURRENT_LAYERS_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Activation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS_1__ACTIVATION = RECURRENT_LAYERS_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Recurrent activation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS_1__RECURRENT_ACTIVATION = RECURRENT_LAYERS_FEATURE_COUNT + 5;
+
+	/**
+	 * The feature id for the '<em><b>Use bias</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS_1__USE_BIAS = RECURRENT_LAYERS_FEATURE_COUNT + 6;
+
+	/**
+	 * The feature id for the '<em><b>Kernel initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS_1__KERNEL_INITIALIZER = RECURRENT_LAYERS_FEATURE_COUNT + 7;
+
+	/**
+	 * The feature id for the '<em><b>Recurrent initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS_1__RECURRENT_INITIALIZER = RECURRENT_LAYERS_FEATURE_COUNT + 8;
+
+	/**
+	 * The feature id for the '<em><b>Bias initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS_1__BIAS_INITIALIZER = RECURRENT_LAYERS_FEATURE_COUNT + 9;
+
+	/**
+	 * The feature id for the '<em><b>Return sequences</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS_1__RETURN_SEQUENCES = RECURRENT_LAYERS_FEATURE_COUNT + 10;
+
+	/**
+	 * The feature id for the '<em><b>Return state</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS_1__RETURN_STATE = RECURRENT_LAYERS_FEATURE_COUNT + 11;
+
+	/**
+	 * The feature id for the '<em><b>Bidirectional k</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS_1__BIDIRECTIONAL_K = RECURRENT_LAYERS_FEATURE_COUNT + 12;
+
+	/**
+	 * The feature id for the '<em><b>Recurrent dropout</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS_1__RECURRENT_DROPOUT = RECURRENT_LAYERS_FEATURE_COUNT + 13;
+
+	/**
+	 * The number of structural features of the '<em>Recurrent layers 1</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS_1_FEATURE_COUNT = RECURRENT_LAYERS_FEATURE_COUNT + 14;
+
+	/**
+	 * The number of operations of the '<em>Recurrent layers 1</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RECURRENT_LAYERS_1_OPERATION_COUNT = RECURRENT_LAYERS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.RNNCellImpl <em>RNN Cell</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.RNNCellImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl#getRNNCell()
+	 * @generated
+	 */
+	int RNN_CELL = 2;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN_CELL__BASE_CLASS = RECURRENT_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN_CELL__NAME = RECURRENT_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN_CELL__DATA = RECURRENT_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN_CELL__REQUIRES_GRAD = RECURRENT_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN_CELL__SUB_MODULE = RECURRENT_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN_CELL__OPTIMIZER = RECURRENT_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN_CELL__LOSS = RECURRENT_LAYERS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Input size</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN_CELL__INPUT_SIZE = RECURRENT_LAYERS__INPUT_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Hidden size</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN_CELL__HIDDEN_SIZE = RECURRENT_LAYERS__HIDDEN_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Bias pt</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN_CELL__BIAS_PT = RECURRENT_LAYERS__BIAS_PT;
+
+	/**
+	 * The feature id for the '<em><b>Nonlinearity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN_CELL__NONLINEARITY = RECURRENT_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>RNN Cell</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN_CELL_FEATURE_COUNT = RECURRENT_LAYERS_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>RNN Cell</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN_CELL_OPERATION_COUNT = RECURRENT_LAYERS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.LSTMCellImpl <em>LSTM Cell</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.LSTMCellImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl#getLSTMCell()
+	 * @generated
+	 */
+	int LSTM_CELL = 3;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM_CELL__BASE_CLASS = RECURRENT_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM_CELL__NAME = RECURRENT_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM_CELL__DATA = RECURRENT_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM_CELL__REQUIRES_GRAD = RECURRENT_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM_CELL__SUB_MODULE = RECURRENT_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM_CELL__OPTIMIZER = RECURRENT_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM_CELL__LOSS = RECURRENT_LAYERS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Input size</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM_CELL__INPUT_SIZE = RECURRENT_LAYERS__INPUT_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Hidden size</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM_CELL__HIDDEN_SIZE = RECURRENT_LAYERS__HIDDEN_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Bias pt</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM_CELL__BIAS_PT = RECURRENT_LAYERS__BIAS_PT;
+
+	/**
+	 * The number of structural features of the '<em>LSTM Cell</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM_CELL_FEATURE_COUNT = RECURRENT_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>LSTM Cell</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM_CELL_OPERATION_COUNT = RECURRENT_LAYERS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.GRUCellImpl <em>GRU Cell</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.GRUCellImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl#getGRUCell()
+	 * @generated
+	 */
+	int GRU_CELL = 4;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU_CELL__BASE_CLASS = RECURRENT_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU_CELL__NAME = RECURRENT_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU_CELL__DATA = RECURRENT_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU_CELL__REQUIRES_GRAD = RECURRENT_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU_CELL__SUB_MODULE = RECURRENT_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU_CELL__OPTIMIZER = RECURRENT_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU_CELL__LOSS = RECURRENT_LAYERS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Input size</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU_CELL__INPUT_SIZE = RECURRENT_LAYERS__INPUT_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Hidden size</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU_CELL__HIDDEN_SIZE = RECURRENT_LAYERS__HIDDEN_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Bias pt</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU_CELL__BIAS_PT = RECURRENT_LAYERS__BIAS_PT;
+
+	/**
+	 * The number of structural features of the '<em>GRU Cell</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU_CELL_FEATURE_COUNT = RECURRENT_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>GRU Cell</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU_CELL_OPERATION_COUNT = RECURRENT_LAYERS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.RNNImpl <em>RNN</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.RNNImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl#getRNN()
+	 * @generated
+	 */
+	int RNN = 5;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN__BASE_CLASS = RECURRENT_LAYERS_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN__NAME = RECURRENT_LAYERS_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN__DATA = RECURRENT_LAYERS_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN__REQUIRES_GRAD = RECURRENT_LAYERS_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN__SUB_MODULE = RECURRENT_LAYERS_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN__OPTIMIZER = RECURRENT_LAYERS_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN__LOSS = RECURRENT_LAYERS_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Input size</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN__INPUT_SIZE = RECURRENT_LAYERS_1__INPUT_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Hidden size</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN__HIDDEN_SIZE = RECURRENT_LAYERS_1__HIDDEN_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Bias pt</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN__BIAS_PT = RECURRENT_LAYERS_1__BIAS_PT;
+
+	/**
+	 * The feature id for the '<em><b>Num layers</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN__NUM_LAYERS = RECURRENT_LAYERS_1__NUM_LAYERS;
+
+	/**
+	 * The feature id for the '<em><b>Batch first pt</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN__BATCH_FIRST_PT = RECURRENT_LAYERS_1__BATCH_FIRST_PT;
+
+	/**
+	 * The feature id for the '<em><b>Dropout</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN__DROPOUT = RECURRENT_LAYERS_1__DROPOUT;
+
+	/**
+	 * The feature id for the '<em><b>Bidirectional pt</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN__BIDIRECTIONAL_PT = RECURRENT_LAYERS_1__BIDIRECTIONAL_PT;
+
+	/**
+	 * The feature id for the '<em><b>Activation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN__ACTIVATION = RECURRENT_LAYERS_1__ACTIVATION;
+
+	/**
+	 * The feature id for the '<em><b>Recurrent activation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN__RECURRENT_ACTIVATION = RECURRENT_LAYERS_1__RECURRENT_ACTIVATION;
+
+	/**
+	 * The feature id for the '<em><b>Use bias</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN__USE_BIAS = RECURRENT_LAYERS_1__USE_BIAS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN__KERNEL_INITIALIZER = RECURRENT_LAYERS_1__KERNEL_INITIALIZER;
+
+	/**
+	 * The feature id for the '<em><b>Recurrent initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN__RECURRENT_INITIALIZER = RECURRENT_LAYERS_1__RECURRENT_INITIALIZER;
+
+	/**
+	 * The feature id for the '<em><b>Bias initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN__BIAS_INITIALIZER = RECURRENT_LAYERS_1__BIAS_INITIALIZER;
+
+	/**
+	 * The feature id for the '<em><b>Return sequences</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN__RETURN_SEQUENCES = RECURRENT_LAYERS_1__RETURN_SEQUENCES;
+
+	/**
+	 * The feature id for the '<em><b>Return state</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN__RETURN_STATE = RECURRENT_LAYERS_1__RETURN_STATE;
+
+	/**
+	 * The feature id for the '<em><b>Bidirectional k</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN__BIDIRECTIONAL_K = RECURRENT_LAYERS_1__BIDIRECTIONAL_K;
+
+	/**
+	 * The feature id for the '<em><b>Recurrent dropout</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN__RECURRENT_DROPOUT = RECURRENT_LAYERS_1__RECURRENT_DROPOUT;
+
+	/**
+	 * The feature id for the '<em><b>Nonlinearity</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN__NONLINEARITY = RECURRENT_LAYERS_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>RNN</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN_FEATURE_COUNT = RECURRENT_LAYERS_1_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>RNN</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int RNN_OPERATION_COUNT = RECURRENT_LAYERS_1_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.LSTMImpl <em>LSTM</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.LSTMImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl#getLSTM()
+	 * @generated
+	 */
+	int LSTM = 6;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM__BASE_CLASS = RECURRENT_LAYERS_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM__NAME = RECURRENT_LAYERS_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM__DATA = RECURRENT_LAYERS_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM__REQUIRES_GRAD = RECURRENT_LAYERS_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM__SUB_MODULE = RECURRENT_LAYERS_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM__OPTIMIZER = RECURRENT_LAYERS_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM__LOSS = RECURRENT_LAYERS_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Input size</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM__INPUT_SIZE = RECURRENT_LAYERS_1__INPUT_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Hidden size</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM__HIDDEN_SIZE = RECURRENT_LAYERS_1__HIDDEN_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Bias pt</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM__BIAS_PT = RECURRENT_LAYERS_1__BIAS_PT;
+
+	/**
+	 * The feature id for the '<em><b>Num layers</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM__NUM_LAYERS = RECURRENT_LAYERS_1__NUM_LAYERS;
+
+	/**
+	 * The feature id for the '<em><b>Batch first pt</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM__BATCH_FIRST_PT = RECURRENT_LAYERS_1__BATCH_FIRST_PT;
+
+	/**
+	 * The feature id for the '<em><b>Dropout</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM__DROPOUT = RECURRENT_LAYERS_1__DROPOUT;
+
+	/**
+	 * The feature id for the '<em><b>Bidirectional pt</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM__BIDIRECTIONAL_PT = RECURRENT_LAYERS_1__BIDIRECTIONAL_PT;
+
+	/**
+	 * The feature id for the '<em><b>Activation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM__ACTIVATION = RECURRENT_LAYERS_1__ACTIVATION;
+
+	/**
+	 * The feature id for the '<em><b>Recurrent activation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM__RECURRENT_ACTIVATION = RECURRENT_LAYERS_1__RECURRENT_ACTIVATION;
+
+	/**
+	 * The feature id for the '<em><b>Use bias</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM__USE_BIAS = RECURRENT_LAYERS_1__USE_BIAS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM__KERNEL_INITIALIZER = RECURRENT_LAYERS_1__KERNEL_INITIALIZER;
+
+	/**
+	 * The feature id for the '<em><b>Recurrent initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM__RECURRENT_INITIALIZER = RECURRENT_LAYERS_1__RECURRENT_INITIALIZER;
+
+	/**
+	 * The feature id for the '<em><b>Bias initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM__BIAS_INITIALIZER = RECURRENT_LAYERS_1__BIAS_INITIALIZER;
+
+	/**
+	 * The feature id for the '<em><b>Return sequences</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM__RETURN_SEQUENCES = RECURRENT_LAYERS_1__RETURN_SEQUENCES;
+
+	/**
+	 * The feature id for the '<em><b>Return state</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM__RETURN_STATE = RECURRENT_LAYERS_1__RETURN_STATE;
+
+	/**
+	 * The feature id for the '<em><b>Bidirectional k</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM__BIDIRECTIONAL_K = RECURRENT_LAYERS_1__BIDIRECTIONAL_K;
+
+	/**
+	 * The feature id for the '<em><b>Recurrent dropout</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM__RECURRENT_DROPOUT = RECURRENT_LAYERS_1__RECURRENT_DROPOUT;
+
+	/**
+	 * The number of structural features of the '<em>LSTM</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM_FEATURE_COUNT = RECURRENT_LAYERS_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>LSTM</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LSTM_OPERATION_COUNT = RECURRENT_LAYERS_1_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.GRUImpl <em>GRU</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.GRUImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl#getGRU()
+	 * @generated
+	 */
+	int GRU = 7;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU__BASE_CLASS = RECURRENT_LAYERS_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU__NAME = RECURRENT_LAYERS_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU__DATA = RECURRENT_LAYERS_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU__REQUIRES_GRAD = RECURRENT_LAYERS_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU__SUB_MODULE = RECURRENT_LAYERS_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU__OPTIMIZER = RECURRENT_LAYERS_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU__LOSS = RECURRENT_LAYERS_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Input size</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU__INPUT_SIZE = RECURRENT_LAYERS_1__INPUT_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Hidden size</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU__HIDDEN_SIZE = RECURRENT_LAYERS_1__HIDDEN_SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Bias pt</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU__BIAS_PT = RECURRENT_LAYERS_1__BIAS_PT;
+
+	/**
+	 * The feature id for the '<em><b>Num layers</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU__NUM_LAYERS = RECURRENT_LAYERS_1__NUM_LAYERS;
+
+	/**
+	 * The feature id for the '<em><b>Batch first pt</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU__BATCH_FIRST_PT = RECURRENT_LAYERS_1__BATCH_FIRST_PT;
+
+	/**
+	 * The feature id for the '<em><b>Dropout</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU__DROPOUT = RECURRENT_LAYERS_1__DROPOUT;
+
+	/**
+	 * The feature id for the '<em><b>Bidirectional pt</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU__BIDIRECTIONAL_PT = RECURRENT_LAYERS_1__BIDIRECTIONAL_PT;
+
+	/**
+	 * The feature id for the '<em><b>Activation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU__ACTIVATION = RECURRENT_LAYERS_1__ACTIVATION;
+
+	/**
+	 * The feature id for the '<em><b>Recurrent activation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU__RECURRENT_ACTIVATION = RECURRENT_LAYERS_1__RECURRENT_ACTIVATION;
+
+	/**
+	 * The feature id for the '<em><b>Use bias</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU__USE_BIAS = RECURRENT_LAYERS_1__USE_BIAS;
+
+	/**
+	 * The feature id for the '<em><b>Kernel initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU__KERNEL_INITIALIZER = RECURRENT_LAYERS_1__KERNEL_INITIALIZER;
+
+	/**
+	 * The feature id for the '<em><b>Recurrent initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU__RECURRENT_INITIALIZER = RECURRENT_LAYERS_1__RECURRENT_INITIALIZER;
+
+	/**
+	 * The feature id for the '<em><b>Bias initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU__BIAS_INITIALIZER = RECURRENT_LAYERS_1__BIAS_INITIALIZER;
+
+	/**
+	 * The feature id for the '<em><b>Return sequences</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU__RETURN_SEQUENCES = RECURRENT_LAYERS_1__RETURN_SEQUENCES;
+
+	/**
+	 * The feature id for the '<em><b>Return state</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU__RETURN_STATE = RECURRENT_LAYERS_1__RETURN_STATE;
+
+	/**
+	 * The feature id for the '<em><b>Bidirectional k</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU__BIDIRECTIONAL_K = RECURRENT_LAYERS_1__BIDIRECTIONAL_K;
+
+	/**
+	 * The feature id for the '<em><b>Recurrent dropout</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU__RECURRENT_DROPOUT = RECURRENT_LAYERS_1__RECURRENT_DROPOUT;
+
+	/**
+	 * The number of structural features of the '<em>GRU</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU_FEATURE_COUNT = RECURRENT_LAYERS_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>GRU</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int GRU_OPERATION_COUNT = RECURRENT_LAYERS_1_OPERATION_COUNT + 0;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers <em>Recurrent layers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Recurrent layers</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers
+	 * @generated
+	 */
+	EClass getRecurrent_layers();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers#getInput_size <em>Input size</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Input size</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers#getInput_size()
+	 * @see #getRecurrent_layers()
+	 * @generated
+	 */
+	EAttribute getRecurrent_layers_Input_size();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers#getHidden_size <em>Hidden size</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Hidden size</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers#getHidden_size()
+	 * @see #getRecurrent_layers()
+	 * @generated
+	 */
+	EAttribute getRecurrent_layers_Hidden_size();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers#isBias_pt <em>Bias pt</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Bias pt</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers#isBias_pt()
+	 * @see #getRecurrent_layers()
+	 * @generated
+	 */
+	EAttribute getRecurrent_layers_Bias_pt();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1 <em>Recurrent layers 1</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Recurrent layers 1</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1
+	 * @generated
+	 */
+	EClass getRecurrent_layers_1();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getNum_layers <em>Num layers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Num layers</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getNum_layers()
+	 * @see #getRecurrent_layers_1()
+	 * @generated
+	 */
+	EAttribute getRecurrent_layers_1_Num_layers();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#isBatch_first_pt <em>Batch first pt</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Batch first pt</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#isBatch_first_pt()
+	 * @see #getRecurrent_layers_1()
+	 * @generated
+	 */
+	EAttribute getRecurrent_layers_1_Batch_first_pt();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getDropout <em>Dropout</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Dropout</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getDropout()
+	 * @see #getRecurrent_layers_1()
+	 * @generated
+	 */
+	EAttribute getRecurrent_layers_1_Dropout();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#isBidirectional_pt <em>Bidirectional pt</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Bidirectional pt</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#isBidirectional_pt()
+	 * @see #getRecurrent_layers_1()
+	 * @generated
+	 */
+	EAttribute getRecurrent_layers_1_Bidirectional_pt();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getActivation <em>Activation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Activation</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getActivation()
+	 * @see #getRecurrent_layers_1()
+	 * @generated
+	 */
+	EAttribute getRecurrent_layers_1_Activation();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getRecurrent_activation <em>Recurrent activation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Recurrent activation</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getRecurrent_activation()
+	 * @see #getRecurrent_layers_1()
+	 * @generated
+	 */
+	EAttribute getRecurrent_layers_1_Recurrent_activation();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#isUse_bias <em>Use bias</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Use bias</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#isUse_bias()
+	 * @see #getRecurrent_layers_1()
+	 * @generated
+	 */
+	EAttribute getRecurrent_layers_1_Use_bias();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getKernel_initializer <em>Kernel initializer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Kernel initializer</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getKernel_initializer()
+	 * @see #getRecurrent_layers_1()
+	 * @generated
+	 */
+	EAttribute getRecurrent_layers_1_Kernel_initializer();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getRecurrent_initializer <em>Recurrent initializer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Recurrent initializer</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getRecurrent_initializer()
+	 * @see #getRecurrent_layers_1()
+	 * @generated
+	 */
+	EAttribute getRecurrent_layers_1_Recurrent_initializer();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getBias_initializer <em>Bias initializer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Bias initializer</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getBias_initializer()
+	 * @see #getRecurrent_layers_1()
+	 * @generated
+	 */
+	EAttribute getRecurrent_layers_1_Bias_initializer();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#isReturn_sequences <em>Return sequences</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Return sequences</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#isReturn_sequences()
+	 * @see #getRecurrent_layers_1()
+	 * @generated
+	 */
+	EAttribute getRecurrent_layers_1_Return_sequences();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#isReturn_state <em>Return state</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Return state</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#isReturn_state()
+	 * @see #getRecurrent_layers_1()
+	 * @generated
+	 */
+	EAttribute getRecurrent_layers_1_Return_state();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getBidirectional_k <em>Bidirectional k</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Bidirectional k</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getBidirectional_k()
+	 * @see #getRecurrent_layers_1()
+	 * @generated
+	 */
+	EReference getRecurrent_layers_1_Bidirectional_k();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getRecurrent_dropout <em>Recurrent dropout</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Recurrent dropout</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getRecurrent_dropout()
+	 * @see #getRecurrent_layers_1()
+	 * @generated
+	 */
+	EAttribute getRecurrent_layers_1_Recurrent_dropout();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.RNNCell <em>RNN Cell</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>RNN Cell</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.RNNCell
+	 * @generated
+	 */
+	EClass getRNNCell();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.RNNCell#getNonlinearity <em>Nonlinearity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Nonlinearity</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.RNNCell#getNonlinearity()
+	 * @see #getRNNCell()
+	 * @generated
+	 */
+	EAttribute getRNNCell_Nonlinearity();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.LSTMCell <em>LSTM Cell</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LSTM Cell</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.LSTMCell
+	 * @generated
+	 */
+	EClass getLSTMCell();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.GRUCell <em>GRU Cell</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>GRU Cell</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.GRUCell
+	 * @generated
+	 */
+	EClass getGRUCell();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.RNN <em>RNN</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>RNN</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.RNN
+	 * @generated
+	 */
+	EClass getRNN();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.RNN#getNonlinearity <em>Nonlinearity</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Nonlinearity</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.RNN#getNonlinearity()
+	 * @see #getRNN()
+	 * @generated
+	 */
+	EAttribute getRNN_Nonlinearity();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.LSTM <em>LSTM</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>LSTM</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.LSTM
+	 * @generated
+	 */
+	EClass getLSTM();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.GRU <em>GRU</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>GRU</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.GRU
+	 * @generated
+	 */
+	EClass getGRU();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	Recurrent_layersFactory getRecurrent_layersFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersImpl <em>Recurrent layers</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl#getRecurrent_layers()
+		 * @generated
+		 */
+		EClass RECURRENT_LAYERS = eINSTANCE.getRecurrent_layers();
+
+		/**
+		 * The meta object literal for the '<em><b>Input size</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute RECURRENT_LAYERS__INPUT_SIZE = eINSTANCE.getRecurrent_layers_Input_size();
+
+		/**
+		 * The meta object literal for the '<em><b>Hidden size</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute RECURRENT_LAYERS__HIDDEN_SIZE = eINSTANCE.getRecurrent_layers_Hidden_size();
+
+		/**
+		 * The meta object literal for the '<em><b>Bias pt</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute RECURRENT_LAYERS__BIAS_PT = eINSTANCE.getRecurrent_layers_Bias_pt();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layers_1Impl <em>Recurrent layers 1</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layers_1Impl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl#getRecurrent_layers_1()
+		 * @generated
+		 */
+		EClass RECURRENT_LAYERS_1 = eINSTANCE.getRecurrent_layers_1();
+
+		/**
+		 * The meta object literal for the '<em><b>Num layers</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute RECURRENT_LAYERS_1__NUM_LAYERS = eINSTANCE.getRecurrent_layers_1_Num_layers();
+
+		/**
+		 * The meta object literal for the '<em><b>Batch first pt</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute RECURRENT_LAYERS_1__BATCH_FIRST_PT = eINSTANCE.getRecurrent_layers_1_Batch_first_pt();
+
+		/**
+		 * The meta object literal for the '<em><b>Dropout</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute RECURRENT_LAYERS_1__DROPOUT = eINSTANCE.getRecurrent_layers_1_Dropout();
+
+		/**
+		 * The meta object literal for the '<em><b>Bidirectional pt</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute RECURRENT_LAYERS_1__BIDIRECTIONAL_PT = eINSTANCE.getRecurrent_layers_1_Bidirectional_pt();
+
+		/**
+		 * The meta object literal for the '<em><b>Activation</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute RECURRENT_LAYERS_1__ACTIVATION = eINSTANCE.getRecurrent_layers_1_Activation();
+
+		/**
+		 * The meta object literal for the '<em><b>Recurrent activation</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute RECURRENT_LAYERS_1__RECURRENT_ACTIVATION = eINSTANCE.getRecurrent_layers_1_Recurrent_activation();
+
+		/**
+		 * The meta object literal for the '<em><b>Use bias</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute RECURRENT_LAYERS_1__USE_BIAS = eINSTANCE.getRecurrent_layers_1_Use_bias();
+
+		/**
+		 * The meta object literal for the '<em><b>Kernel initializer</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute RECURRENT_LAYERS_1__KERNEL_INITIALIZER = eINSTANCE.getRecurrent_layers_1_Kernel_initializer();
+
+		/**
+		 * The meta object literal for the '<em><b>Recurrent initializer</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute RECURRENT_LAYERS_1__RECURRENT_INITIALIZER = eINSTANCE.getRecurrent_layers_1_Recurrent_initializer();
+
+		/**
+		 * The meta object literal for the '<em><b>Bias initializer</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute RECURRENT_LAYERS_1__BIAS_INITIALIZER = eINSTANCE.getRecurrent_layers_1_Bias_initializer();
+
+		/**
+		 * The meta object literal for the '<em><b>Return sequences</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute RECURRENT_LAYERS_1__RETURN_SEQUENCES = eINSTANCE.getRecurrent_layers_1_Return_sequences();
+
+		/**
+		 * The meta object literal for the '<em><b>Return state</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute RECURRENT_LAYERS_1__RETURN_STATE = eINSTANCE.getRecurrent_layers_1_Return_state();
+
+		/**
+		 * The meta object literal for the '<em><b>Bidirectional k</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference RECURRENT_LAYERS_1__BIDIRECTIONAL_K = eINSTANCE.getRecurrent_layers_1_Bidirectional_k();
+
+		/**
+		 * The meta object literal for the '<em><b>Recurrent dropout</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute RECURRENT_LAYERS_1__RECURRENT_DROPOUT = eINSTANCE.getRecurrent_layers_1_Recurrent_dropout();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.RNNCellImpl <em>RNN Cell</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.RNNCellImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl#getRNNCell()
+		 * @generated
+		 */
+		EClass RNN_CELL = eINSTANCE.getRNNCell();
+
+		/**
+		 * The meta object literal for the '<em><b>Nonlinearity</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute RNN_CELL__NONLINEARITY = eINSTANCE.getRNNCell_Nonlinearity();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.LSTMCellImpl <em>LSTM Cell</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.LSTMCellImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl#getLSTMCell()
+		 * @generated
+		 */
+		EClass LSTM_CELL = eINSTANCE.getLSTMCell();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.GRUCellImpl <em>GRU Cell</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.GRUCellImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl#getGRUCell()
+		 * @generated
+		 */
+		EClass GRU_CELL = eINSTANCE.getGRUCell();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.RNNImpl <em>RNN</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.RNNImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl#getRNN()
+		 * @generated
+		 */
+		EClass RNN = eINSTANCE.getRNN();
+
+		/**
+		 * The meta object literal for the '<em><b>Nonlinearity</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute RNN__NONLINEARITY = eINSTANCE.getRNN_Nonlinearity();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.LSTMImpl <em>LSTM</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.LSTMImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl#getLSTM()
+		 * @generated
+		 */
+		EClass LSTM = eINSTANCE.getLSTM();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.GRUImpl <em>GRU</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.GRUImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl#getGRU()
+		 * @generated
+		 */
+		EClass GRU = eINSTANCE.getGRU();
+
+	}
+
+} //Recurrent_layersPackage
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/Recurrent_layers_1.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/Recurrent_layers_1.java
new file mode 100644
index 0000000..4c2deca
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/Recurrent_layers_1.java
@@ -0,0 +1,409 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Recurrent layers 1</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getNum_layers <em>Num layers</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#isBatch_first_pt <em>Batch first pt</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getDropout <em>Dropout</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#isBidirectional_pt <em>Bidirectional pt</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getActivation <em>Activation</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getRecurrent_activation <em>Recurrent activation</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#isUse_bias <em>Use bias</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getKernel_initializer <em>Kernel initializer</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getRecurrent_initializer <em>Recurrent initializer</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getBias_initializer <em>Bias initializer</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#isReturn_sequences <em>Return sequences</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#isReturn_state <em>Return state</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getBidirectional_k <em>Bidirectional k</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getRecurrent_dropout <em>Recurrent dropout</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage#getRecurrent_layers_1()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Recurrent_layers_1 extends Recurrent_layers {
+	/**
+	 * Returns the value of the '<em><b>Num layers</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Num layers</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Num layers</em>' attribute.
+	 * @see #setNum_layers(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage#getRecurrent_layers_1_Num_layers()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	int getNum_layers();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getNum_layers <em>Num layers</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Num layers</em>' attribute.
+	 * @see #getNum_layers()
+	 * @generated
+	 */
+	void setNum_layers(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Batch first pt</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Batch first pt</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Batch first pt</em>' attribute.
+	 * @see #setBatch_first_pt(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage#getRecurrent_layers_1_Batch_first_pt()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isBatch_first_pt();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#isBatch_first_pt <em>Batch first pt</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Batch first pt</em>' attribute.
+	 * @see #isBatch_first_pt()
+	 * @generated
+	 */
+	void setBatch_first_pt(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Dropout</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Dropout</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Dropout</em>' attribute.
+	 * @see #setDropout(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage#getRecurrent_layers_1_Dropout()
+	 * @model dataType="org.eclipse.uml2.types.Real" ordered="false"
+	 * @generated
+	 */
+	double getDropout();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getDropout <em>Dropout</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Dropout</em>' attribute.
+	 * @see #getDropout()
+	 * @generated
+	 */
+	void setDropout(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Bidirectional pt</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Bidirectional pt</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Bidirectional pt</em>' attribute.
+	 * @see #setBidirectional_pt(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage#getRecurrent_layers_1_Bidirectional_pt()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isBidirectional_pt();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#isBidirectional_pt <em>Bidirectional pt</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Bidirectional pt</em>' attribute.
+	 * @see #isBidirectional_pt()
+	 * @generated
+	 */
+	void setBidirectional_pt(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Activation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Activation</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Activation</em>' attribute.
+	 * @see #setActivation(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage#getRecurrent_layers_1_Activation()
+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+	 * @generated
+	 */
+	String getActivation();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getActivation <em>Activation</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Activation</em>' attribute.
+	 * @see #getActivation()
+	 * @generated
+	 */
+	void setActivation(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Recurrent activation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Recurrent activation</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Recurrent activation</em>' attribute.
+	 * @see #setRecurrent_activation(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage#getRecurrent_layers_1_Recurrent_activation()
+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+	 * @generated
+	 */
+	String getRecurrent_activation();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getRecurrent_activation <em>Recurrent activation</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Recurrent activation</em>' attribute.
+	 * @see #getRecurrent_activation()
+	 * @generated
+	 */
+	void setRecurrent_activation(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Use bias</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Use bias</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Use bias</em>' attribute.
+	 * @see #setUse_bias(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage#getRecurrent_layers_1_Use_bias()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isUse_bias();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#isUse_bias <em>Use bias</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Use bias</em>' attribute.
+	 * @see #isUse_bias()
+	 * @generated
+	 */
+	void setUse_bias(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Kernel initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Kernel initializer</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Kernel initializer</em>' attribute.
+	 * @see #setKernel_initializer(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage#getRecurrent_layers_1_Kernel_initializer()
+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+	 * @generated
+	 */
+	String getKernel_initializer();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getKernel_initializer <em>Kernel initializer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Kernel initializer</em>' attribute.
+	 * @see #getKernel_initializer()
+	 * @generated
+	 */
+	void setKernel_initializer(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Recurrent initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Recurrent initializer</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Recurrent initializer</em>' attribute.
+	 * @see #setRecurrent_initializer(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage#getRecurrent_layers_1_Recurrent_initializer()
+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+	 * @generated
+	 */
+	String getRecurrent_initializer();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getRecurrent_initializer <em>Recurrent initializer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Recurrent initializer</em>' attribute.
+	 * @see #getRecurrent_initializer()
+	 * @generated
+	 */
+	void setRecurrent_initializer(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Bias initializer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Bias initializer</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Bias initializer</em>' attribute.
+	 * @see #setBias_initializer(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage#getRecurrent_layers_1_Bias_initializer()
+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+	 * @generated
+	 */
+	String getBias_initializer();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getBias_initializer <em>Bias initializer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Bias initializer</em>' attribute.
+	 * @see #getBias_initializer()
+	 * @generated
+	 */
+	void setBias_initializer(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Return sequences</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Return sequences</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Return sequences</em>' attribute.
+	 * @see #setReturn_sequences(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage#getRecurrent_layers_1_Return_sequences()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isReturn_sequences();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#isReturn_sequences <em>Return sequences</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Return sequences</em>' attribute.
+	 * @see #isReturn_sequences()
+	 * @generated
+	 */
+	void setReturn_sequences(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Return state</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Return state</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Return state</em>' attribute.
+	 * @see #setReturn_state(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage#getRecurrent_layers_1_Return_state()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isReturn_state();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#isReturn_state <em>Return state</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Return state</em>' attribute.
+	 * @see #isReturn_state()
+	 * @generated
+	 */
+	void setReturn_state(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Bidirectional k</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Bidirectional k</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Bidirectional k</em>' reference.
+	 * @see #setBidirectional_k(Recurrent_layers_1)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage#getRecurrent_layers_1_Bidirectional_k()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	Recurrent_layers_1 getBidirectional_k();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getBidirectional_k <em>Bidirectional k</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Bidirectional k</em>' reference.
+	 * @see #getBidirectional_k()
+	 * @generated
+	 */
+	void setBidirectional_k(Recurrent_layers_1 value);
+
+	/**
+	 * Returns the value of the '<em><b>Recurrent dropout</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Recurrent dropout</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Recurrent dropout</em>' attribute.
+	 * @see #setRecurrent_dropout(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage#getRecurrent_layers_1_Recurrent_dropout()
+	 * @model dataType="org.eclipse.uml2.types.Real" required="true" ordered="false"
+	 * @generated
+	 */
+	double getRecurrent_dropout();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1#getRecurrent_dropout <em>Recurrent dropout</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Recurrent dropout</em>' attribute.
+	 * @see #getRecurrent_dropout()
+	 * @generated
+	 */
+	void setRecurrent_dropout(double value);
+
+} // Recurrent_layers_1
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/impl/GRUCellImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/impl/GRUCellImpl.java
new file mode 100644
index 0000000..c96507b
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/impl/GRUCellImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.GRUCell;
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>GRU Cell</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class GRUCellImpl extends Recurrent_layersImpl implements GRUCell {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected GRUCellImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Recurrent_layersPackage.Literals.GRU_CELL;
+	}
+
+} //GRUCellImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/impl/GRUImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/impl/GRUImpl.java
new file mode 100644
index 0000000..3cb47c7
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/impl/GRUImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.GRU;
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>GRU</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class GRUImpl extends Recurrent_layers_1Impl implements GRU {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected GRUImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Recurrent_layersPackage.Literals.GRU;
+	}
+
+} //GRUImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/impl/LSTMCellImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/impl/LSTMCellImpl.java
new file mode 100644
index 0000000..a63df0e
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/impl/LSTMCellImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.LSTMCell;
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LSTM Cell</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LSTMCellImpl extends Recurrent_layersImpl implements LSTMCell {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LSTMCellImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Recurrent_layersPackage.Literals.LSTM_CELL;
+	}
+
+} //LSTMCellImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/impl/LSTMImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/impl/LSTMImpl.java
new file mode 100644
index 0000000..5a01e80
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/impl/LSTMImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.LSTM;
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>LSTM</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LSTMImpl extends Recurrent_layers_1Impl implements LSTM {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LSTMImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Recurrent_layersPackage.Literals.LSTM;
+	}
+
+} //LSTMImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/impl/RNNCellImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/impl/RNNCellImpl.java
new file mode 100644
index 0000000..1d7ccc8
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/impl/RNNCellImpl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.RNNCell;
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>RNN Cell</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.RNNCellImpl#getNonlinearity <em>Nonlinearity</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class RNNCellImpl extends Recurrent_layersImpl implements RNNCell {
+	/**
+	 * The default value of the '{@link #getNonlinearity() <em>Nonlinearity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNonlinearity()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NONLINEARITY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getNonlinearity() <em>Nonlinearity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNonlinearity()
+	 * @generated
+	 * @ordered
+	 */
+	protected String nonlinearity = NONLINEARITY_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected RNNCellImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Recurrent_layersPackage.Literals.RNN_CELL;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getNonlinearity() {
+		return nonlinearity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setNonlinearity(String newNonlinearity) {
+		String oldNonlinearity = nonlinearity;
+		nonlinearity = newNonlinearity;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Recurrent_layersPackage.RNN_CELL__NONLINEARITY, oldNonlinearity, nonlinearity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Recurrent_layersPackage.RNN_CELL__NONLINEARITY:
+				return getNonlinearity();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Recurrent_layersPackage.RNN_CELL__NONLINEARITY:
+				setNonlinearity((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Recurrent_layersPackage.RNN_CELL__NONLINEARITY:
+				setNonlinearity(NONLINEARITY_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Recurrent_layersPackage.RNN_CELL__NONLINEARITY:
+				return NONLINEARITY_EDEFAULT == null ? nonlinearity != null : !NONLINEARITY_EDEFAULT.equals(nonlinearity);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (nonlinearity: "); //$NON-NLS-1$
+		result.append(nonlinearity);
+		result.append(')');
+		return result.toString();
+	}
+
+} //RNNCellImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/impl/RNNImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/impl/RNNImpl.java
new file mode 100644
index 0000000..367232f
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/impl/RNNImpl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.RNN;
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>RNN</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.RNNImpl#getNonlinearity <em>Nonlinearity</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class RNNImpl extends Recurrent_layers_1Impl implements RNN {
+	/**
+	 * The default value of the '{@link #getNonlinearity() <em>Nonlinearity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNonlinearity()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NONLINEARITY_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getNonlinearity() <em>Nonlinearity</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNonlinearity()
+	 * @generated
+	 * @ordered
+	 */
+	protected String nonlinearity = NONLINEARITY_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected RNNImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Recurrent_layersPackage.Literals.RNN;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getNonlinearity() {
+		return nonlinearity;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setNonlinearity(String newNonlinearity) {
+		String oldNonlinearity = nonlinearity;
+		nonlinearity = newNonlinearity;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Recurrent_layersPackage.RNN__NONLINEARITY, oldNonlinearity, nonlinearity));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Recurrent_layersPackage.RNN__NONLINEARITY:
+				return getNonlinearity();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Recurrent_layersPackage.RNN__NONLINEARITY:
+				setNonlinearity((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Recurrent_layersPackage.RNN__NONLINEARITY:
+				setNonlinearity(NONLINEARITY_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Recurrent_layersPackage.RNN__NONLINEARITY:
+				return NONLINEARITY_EDEFAULT == null ? nonlinearity != null : !NONLINEARITY_EDEFAULT.equals(nonlinearity);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (nonlinearity: "); //$NON-NLS-1$
+		result.append(nonlinearity);
+		result.append(')');
+		return result.toString();
+	}
+
+} //RNNImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/impl/Recurrent_layersFactoryImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/impl/Recurrent_layersFactoryImpl.java
new file mode 100644
index 0000000..c460a01
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/impl/Recurrent_layersFactoryImpl.java
@@ -0,0 +1,166 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class Recurrent_layersFactoryImpl extends EFactoryImpl implements Recurrent_layersFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static Recurrent_layersFactory init() {
+		try {
+			Recurrent_layersFactory theRecurrent_layersFactory = (Recurrent_layersFactory)EPackage.Registry.INSTANCE.getEFactory(Recurrent_layersPackage.eNS_URI);
+			if (theRecurrent_layersFactory != null) {
+				return theRecurrent_layersFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new Recurrent_layersFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Recurrent_layersFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case Recurrent_layersPackage.RNN_CELL: return createRNNCell();
+			case Recurrent_layersPackage.LSTM_CELL: return createLSTMCell();
+			case Recurrent_layersPackage.GRU_CELL: return createGRUCell();
+			case Recurrent_layersPackage.RNN: return createRNN();
+			case Recurrent_layersPackage.LSTM: return createLSTM();
+			case Recurrent_layersPackage.GRU: return createGRU();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public RNNCell createRNNCell() {
+		RNNCellImpl rnnCell = new RNNCellImpl();
+		return rnnCell;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public LSTMCell createLSTMCell() {
+		LSTMCellImpl lstmCell = new LSTMCellImpl();
+		return lstmCell;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public GRUCell createGRUCell() {
+		GRUCellImpl gruCell = new GRUCellImpl();
+		return gruCell;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public RNN createRNN() {
+		RNNImpl rnn = new RNNImpl();
+		return rnn;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public LSTM createLSTM() {
+		LSTMImpl lstm = new LSTMImpl();
+		return lstm;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public GRU createGRU() {
+		GRUImpl gru = new GRUImpl();
+		return gru;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Recurrent_layersPackage getRecurrent_layersPackage() {
+		return (Recurrent_layersPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static Recurrent_layersPackage getPackage() {
+		return Recurrent_layersPackage.eINSTANCE;
+	}
+
+} //Recurrent_layersFactoryImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/impl/Recurrent_layersImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/impl/Recurrent_layersImpl.java
new file mode 100644
index 0000000..dff23c7
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/impl/Recurrent_layersImpl.java
@@ -0,0 +1,285 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModelImpl;
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers;
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Recurrent layers</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersImpl#getInput_size <em>Input size</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersImpl#getHidden_size <em>Hidden size</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersImpl#isBias_pt <em>Bias pt</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class Recurrent_layersImpl extends ModelImpl implements Recurrent_layers {
+	/**
+	 * The default value of the '{@link #getInput_size() <em>Input size</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInput_size()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int INPUT_SIZE_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getInput_size() <em>Input size</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getInput_size()
+	 * @generated
+	 * @ordered
+	 */
+	protected int input_size = INPUT_SIZE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getHidden_size() <em>Hidden size</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHidden_size()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int HIDDEN_SIZE_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getHidden_size() <em>Hidden size</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getHidden_size()
+	 * @generated
+	 * @ordered
+	 */
+	protected int hidden_size = HIDDEN_SIZE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isBias_pt() <em>Bias pt</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isBias_pt()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean BIAS_PT_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isBias_pt() <em>Bias pt</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isBias_pt()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean bias_pt = BIAS_PT_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Recurrent_layersImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Recurrent_layersPackage.Literals.RECURRENT_LAYERS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getInput_size() {
+		return input_size;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setInput_size(int newInput_size) {
+		int oldInput_size = input_size;
+		input_size = newInput_size;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Recurrent_layersPackage.RECURRENT_LAYERS__INPUT_SIZE, oldInput_size, input_size));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getHidden_size() {
+		return hidden_size;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setHidden_size(int newHidden_size) {
+		int oldHidden_size = hidden_size;
+		hidden_size = newHidden_size;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Recurrent_layersPackage.RECURRENT_LAYERS__HIDDEN_SIZE, oldHidden_size, hidden_size));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isBias_pt() {
+		return bias_pt;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBias_pt(boolean newBias_pt) {
+		boolean oldBias_pt = bias_pt;
+		bias_pt = newBias_pt;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Recurrent_layersPackage.RECURRENT_LAYERS__BIAS_PT, oldBias_pt, bias_pt));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Recurrent_layersPackage.RECURRENT_LAYERS__INPUT_SIZE:
+				return getInput_size();
+			case Recurrent_layersPackage.RECURRENT_LAYERS__HIDDEN_SIZE:
+				return getHidden_size();
+			case Recurrent_layersPackage.RECURRENT_LAYERS__BIAS_PT:
+				return isBias_pt();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Recurrent_layersPackage.RECURRENT_LAYERS__INPUT_SIZE:
+				setInput_size((Integer)newValue);
+				return;
+			case Recurrent_layersPackage.RECURRENT_LAYERS__HIDDEN_SIZE:
+				setHidden_size((Integer)newValue);
+				return;
+			case Recurrent_layersPackage.RECURRENT_LAYERS__BIAS_PT:
+				setBias_pt((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Recurrent_layersPackage.RECURRENT_LAYERS__INPUT_SIZE:
+				setInput_size(INPUT_SIZE_EDEFAULT);
+				return;
+			case Recurrent_layersPackage.RECURRENT_LAYERS__HIDDEN_SIZE:
+				setHidden_size(HIDDEN_SIZE_EDEFAULT);
+				return;
+			case Recurrent_layersPackage.RECURRENT_LAYERS__BIAS_PT:
+				setBias_pt(BIAS_PT_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Recurrent_layersPackage.RECURRENT_LAYERS__INPUT_SIZE:
+				return input_size != INPUT_SIZE_EDEFAULT;
+			case Recurrent_layersPackage.RECURRENT_LAYERS__HIDDEN_SIZE:
+				return hidden_size != HIDDEN_SIZE_EDEFAULT;
+			case Recurrent_layersPackage.RECURRENT_LAYERS__BIAS_PT:
+				return bias_pt != BIAS_PT_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (input_size: "); //$NON-NLS-1$
+		result.append(input_size);
+		result.append(", hidden_size: "); //$NON-NLS-1$
+		result.append(hidden_size);
+		result.append(", bias_pt: "); //$NON-NLS-1$
+		result.append(bias_pt);
+		result.append(')');
+		return result.toString();
+	}
+
+} //Recurrent_layersImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/impl/Recurrent_layersPackageImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/impl/Recurrent_layersPackageImpl.java
new file mode 100644
index 0000000..1f90155
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/impl/Recurrent_layersPackageImpl.java
@@ -0,0 +1,746 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.AIMLPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.Layer_weight_regularizersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModulePackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.GRUCell;
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.LSTMCell;
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.RNNCell;
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers;
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersFactory;
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.DatatypesPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl.DatatypesPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.impl.AIMLPackageImpl;
+
+import org.eclipse.uml2.types.TypesPackage;
+
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class Recurrent_layersPackageImpl extends EPackageImpl implements Recurrent_layersPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass recurrent_layersEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass recurrent_layers_1EClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass rnnCellEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lstmCellEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass gruCellEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass rnnEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass lstmEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass gruEClass = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private Recurrent_layersPackageImpl() {
+		super(eNS_URI, Recurrent_layersFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>This method is used to initialize {@link Recurrent_layersPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static Recurrent_layersPackage init() {
+		if (isInited) return (Recurrent_layersPackage)EPackage.Registry.INSTANCE.getEPackage(Recurrent_layersPackage.eNS_URI);
+
+		// Obtain or create and register package
+		Object registeredRecurrent_layersPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		Recurrent_layersPackageImpl theRecurrent_layersPackage = registeredRecurrent_layersPackage instanceof Recurrent_layersPackageImpl ? (Recurrent_layersPackageImpl)registeredRecurrent_layersPackage : new Recurrent_layersPackageImpl();
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		EcorePackage.eINSTANCE.eClass();
+		TypesPackage.eINSTANCE.eClass();
+		UMLPackage.eINSTANCE.eClass();
+
+		// Obtain or create and register interdependencies
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AIMLPackage.eNS_URI);
+		AIMLPackageImpl theAIMLPackage = (AIMLPackageImpl)(registeredPackage instanceof AIMLPackageImpl ? registeredPackage : AIMLPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		ModulePackageImpl theModulePackage = (ModulePackageImpl)(registeredPackage instanceof ModulePackageImpl ? registeredPackage : ModulePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(TensorPackage.eNS_URI);
+		TensorPackageImpl theTensorPackage = (TensorPackageImpl)(registeredPackage instanceof TensorPackageImpl ? registeredPackage : TensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DatatypesPackage.eNS_URI);
+		DatatypesPackageImpl theDatatypesPackage = (DatatypesPackageImpl)(registeredPackage instanceof DatatypesPackageImpl ? registeredPackage : DatatypesPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Pooling_layersPackage.eNS_URI);
+		Pooling_layersPackageImpl thePooling_layersPackage = (Pooling_layersPackageImpl)(registeredPackage instanceof Pooling_layersPackageImpl ? registeredPackage : Pooling_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Convolution_layersPackage.eNS_URI);
+		Convolution_layersPackageImpl theConvolution_layersPackage = (Convolution_layersPackageImpl)(registeredPackage instanceof Convolution_layersPackageImpl ? registeredPackage : Convolution_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_constraintsPackage.eNS_URI);
+		Layer_weight_constraintsPackageImpl theLayer_weight_constraintsPackage = (Layer_weight_constraintsPackageImpl)(registeredPackage instanceof Layer_weight_constraintsPackageImpl ? registeredPackage : Layer_weight_constraintsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Padding_layersPackage.eNS_URI);
+		Padding_layersPackageImpl thePadding_layersPackage = (Padding_layersPackageImpl)(registeredPackage instanceof Padding_layersPackageImpl ? registeredPackage : Padding_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NonLinearActivationsPackage.eNS_URI);
+		NonLinearActivationsPackageImpl theNonLinearActivationsPackage = (NonLinearActivationsPackageImpl)(registeredPackage instanceof NonLinearActivationsPackageImpl ? registeredPackage : NonLinearActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftMinMaxActivationsPackage.eNS_URI);
+		SoftMinMaxActivationsPackageImpl theSoftMinMaxActivationsPackage = (SoftMinMaxActivationsPackageImpl)(registeredPackage instanceof SoftMinMaxActivationsPackageImpl ? registeredPackage : SoftMinMaxActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Normalization_layersPackage.eNS_URI);
+		Normalization_layersPackageImpl theNormalization_layersPackage = (Normalization_layersPackageImpl)(registeredPackage instanceof Normalization_layersPackageImpl ? registeredPackage : Normalization_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Transformer_layersPackage.eNS_URI);
+		Transformer_layersPackageImpl theTransformer_layersPackage = (Transformer_layersPackageImpl)(registeredPackage instanceof Transformer_layersPackageImpl ? registeredPackage : Transformer_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Linear_layersPackage.eNS_URI);
+		Linear_layersPackageImpl theLinear_layersPackage = (Linear_layersPackageImpl)(registeredPackage instanceof Linear_layersPackageImpl ? registeredPackage : Linear_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Dropout_layersPackage.eNS_URI);
+		Dropout_layersPackageImpl theDropout_layersPackage = (Dropout_layersPackageImpl)(registeredPackage instanceof Dropout_layersPackageImpl ? registeredPackage : Dropout_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Sparse_layersPackage.eNS_URI);
+		Sparse_layersPackageImpl theSparse_layersPackage = (Sparse_layersPackageImpl)(registeredPackage instanceof Sparse_layersPackageImpl ? registeredPackage : Sparse_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Distance_functionsPackage.eNS_URI);
+		Distance_functionsPackageImpl theDistance_functionsPackage = (Distance_functionsPackageImpl)(registeredPackage instanceof Distance_functionsPackageImpl ? registeredPackage : Distance_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Loss_functionsPackage.eNS_URI);
+		Loss_functionsPackageImpl theLoss_functionsPackage = (Loss_functionsPackageImpl)(registeredPackage instanceof Loss_functionsPackageImpl ? registeredPackage : Loss_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Vision_layersPackage.eNS_URI);
+		Vision_layersPackageImpl theVision_layersPackage = (Vision_layersPackageImpl)(registeredPackage instanceof Vision_layersPackageImpl ? registeredPackage : Vision_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DataParallel_layersPackage.eNS_URI);
+		DataParallel_layersPackageImpl theDataParallel_layersPackage = (DataParallel_layersPackageImpl)(registeredPackage instanceof DataParallel_layersPackageImpl ? registeredPackage : DataParallel_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_regularizersPackage.eNS_URI);
+		Layer_weight_regularizersPackageImpl theLayer_weight_regularizersPackage = (Layer_weight_regularizersPackageImpl)(registeredPackage instanceof Layer_weight_regularizersPackageImpl ? registeredPackage : Layer_weight_regularizersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_initializersPackage.eNS_URI);
+		Layer_weight_initializersPackageImpl theLayer_weight_initializersPackage = (Layer_weight_initializersPackageImpl)(registeredPackage instanceof Layer_weight_initializersPackageImpl ? registeredPackage : Layer_weight_initializersPackage.eINSTANCE);
+
+		// Create package meta-data objects
+		theRecurrent_layersPackage.createPackageContents();
+		theAIMLPackage.createPackageContents();
+		theModulePackage.createPackageContents();
+		theTensorPackage.createPackageContents();
+		theDatatypesPackage.createPackageContents();
+		thePooling_layersPackage.createPackageContents();
+		theConvolution_layersPackage.createPackageContents();
+		theLayer_weight_constraintsPackage.createPackageContents();
+		thePadding_layersPackage.createPackageContents();
+		theNonLinearActivationsPackage.createPackageContents();
+		theSoftMinMaxActivationsPackage.createPackageContents();
+		theNormalization_layersPackage.createPackageContents();
+		theTransformer_layersPackage.createPackageContents();
+		theLinear_layersPackage.createPackageContents();
+		theDropout_layersPackage.createPackageContents();
+		theSparse_layersPackage.createPackageContents();
+		theDistance_functionsPackage.createPackageContents();
+		theLoss_functionsPackage.createPackageContents();
+		theVision_layersPackage.createPackageContents();
+		theDataParallel_layersPackage.createPackageContents();
+		theLayer_weight_regularizersPackage.createPackageContents();
+		theLayer_weight_initializersPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theRecurrent_layersPackage.initializePackageContents();
+		theAIMLPackage.initializePackageContents();
+		theModulePackage.initializePackageContents();
+		theTensorPackage.initializePackageContents();
+		theDatatypesPackage.initializePackageContents();
+		thePooling_layersPackage.initializePackageContents();
+		theConvolution_layersPackage.initializePackageContents();
+		theLayer_weight_constraintsPackage.initializePackageContents();
+		thePadding_layersPackage.initializePackageContents();
+		theNonLinearActivationsPackage.initializePackageContents();
+		theSoftMinMaxActivationsPackage.initializePackageContents();
+		theNormalization_layersPackage.initializePackageContents();
+		theTransformer_layersPackage.initializePackageContents();
+		theLinear_layersPackage.initializePackageContents();
+		theDropout_layersPackage.initializePackageContents();
+		theSparse_layersPackage.initializePackageContents();
+		theDistance_functionsPackage.initializePackageContents();
+		theLoss_functionsPackage.initializePackageContents();
+		theVision_layersPackage.initializePackageContents();
+		theDataParallel_layersPackage.initializePackageContents();
+		theLayer_weight_regularizersPackage.initializePackageContents();
+		theLayer_weight_initializersPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theRecurrent_layersPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(Recurrent_layersPackage.eNS_URI, theRecurrent_layersPackage);
+		return theRecurrent_layersPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getRecurrent_layers() {
+		return recurrent_layersEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getRecurrent_layers_Input_size() {
+		return (EAttribute)recurrent_layersEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getRecurrent_layers_Hidden_size() {
+		return (EAttribute)recurrent_layersEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getRecurrent_layers_Bias_pt() {
+		return (EAttribute)recurrent_layersEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getRecurrent_layers_1() {
+		return recurrent_layers_1EClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getRecurrent_layers_1_Num_layers() {
+		return (EAttribute)recurrent_layers_1EClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getRecurrent_layers_1_Batch_first_pt() {
+		return (EAttribute)recurrent_layers_1EClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getRecurrent_layers_1_Dropout() {
+		return (EAttribute)recurrent_layers_1EClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getRecurrent_layers_1_Bidirectional_pt() {
+		return (EAttribute)recurrent_layers_1EClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getRecurrent_layers_1_Activation() {
+		return (EAttribute)recurrent_layers_1EClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getRecurrent_layers_1_Recurrent_activation() {
+		return (EAttribute)recurrent_layers_1EClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getRecurrent_layers_1_Use_bias() {
+		return (EAttribute)recurrent_layers_1EClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getRecurrent_layers_1_Kernel_initializer() {
+		return (EAttribute)recurrent_layers_1EClass.getEStructuralFeatures().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getRecurrent_layers_1_Recurrent_initializer() {
+		return (EAttribute)recurrent_layers_1EClass.getEStructuralFeatures().get(8);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getRecurrent_layers_1_Bias_initializer() {
+		return (EAttribute)recurrent_layers_1EClass.getEStructuralFeatures().get(9);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getRecurrent_layers_1_Return_sequences() {
+		return (EAttribute)recurrent_layers_1EClass.getEStructuralFeatures().get(10);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getRecurrent_layers_1_Return_state() {
+		return (EAttribute)recurrent_layers_1EClass.getEStructuralFeatures().get(11);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getRecurrent_layers_1_Bidirectional_k() {
+		return (EReference)recurrent_layers_1EClass.getEStructuralFeatures().get(12);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getRecurrent_layers_1_Recurrent_dropout() {
+		return (EAttribute)recurrent_layers_1EClass.getEStructuralFeatures().get(13);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getRNNCell() {
+		return rnnCellEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getRNNCell_Nonlinearity() {
+		return (EAttribute)rnnCellEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getLSTMCell() {
+		return lstmCellEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getGRUCell() {
+		return gruCellEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getRNN() {
+		return rnnEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getRNN_Nonlinearity() {
+		return (EAttribute)rnnEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getLSTM() {
+		return lstmEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getGRU() {
+		return gruEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Recurrent_layersFactory getRecurrent_layersFactory() {
+		return (Recurrent_layersFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		recurrent_layersEClass = createEClass(RECURRENT_LAYERS);
+		createEAttribute(recurrent_layersEClass, RECURRENT_LAYERS__INPUT_SIZE);
+		createEAttribute(recurrent_layersEClass, RECURRENT_LAYERS__HIDDEN_SIZE);
+		createEAttribute(recurrent_layersEClass, RECURRENT_LAYERS__BIAS_PT);
+
+		recurrent_layers_1EClass = createEClass(RECURRENT_LAYERS_1);
+		createEAttribute(recurrent_layers_1EClass, RECURRENT_LAYERS_1__NUM_LAYERS);
+		createEAttribute(recurrent_layers_1EClass, RECURRENT_LAYERS_1__BATCH_FIRST_PT);
+		createEAttribute(recurrent_layers_1EClass, RECURRENT_LAYERS_1__DROPOUT);
+		createEAttribute(recurrent_layers_1EClass, RECURRENT_LAYERS_1__BIDIRECTIONAL_PT);
+		createEAttribute(recurrent_layers_1EClass, RECURRENT_LAYERS_1__ACTIVATION);
+		createEAttribute(recurrent_layers_1EClass, RECURRENT_LAYERS_1__RECURRENT_ACTIVATION);
+		createEAttribute(recurrent_layers_1EClass, RECURRENT_LAYERS_1__USE_BIAS);
+		createEAttribute(recurrent_layers_1EClass, RECURRENT_LAYERS_1__KERNEL_INITIALIZER);
+		createEAttribute(recurrent_layers_1EClass, RECURRENT_LAYERS_1__RECURRENT_INITIALIZER);
+		createEAttribute(recurrent_layers_1EClass, RECURRENT_LAYERS_1__BIAS_INITIALIZER);
+		createEAttribute(recurrent_layers_1EClass, RECURRENT_LAYERS_1__RETURN_SEQUENCES);
+		createEAttribute(recurrent_layers_1EClass, RECURRENT_LAYERS_1__RETURN_STATE);
+		createEReference(recurrent_layers_1EClass, RECURRENT_LAYERS_1__BIDIRECTIONAL_K);
+		createEAttribute(recurrent_layers_1EClass, RECURRENT_LAYERS_1__RECURRENT_DROPOUT);
+
+		rnnCellEClass = createEClass(RNN_CELL);
+		createEAttribute(rnnCellEClass, RNN_CELL__NONLINEARITY);
+
+		lstmCellEClass = createEClass(LSTM_CELL);
+
+		gruCellEClass = createEClass(GRU_CELL);
+
+		rnnEClass = createEClass(RNN);
+		createEAttribute(rnnEClass, RNN__NONLINEARITY);
+
+		lstmEClass = createEClass(LSTM);
+
+		gruEClass = createEClass(GRU);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		ModulePackage theModulePackage = (ModulePackage)EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		recurrent_layersEClass.getESuperTypes().add(theModulePackage.getModel());
+		recurrent_layers_1EClass.getESuperTypes().add(this.getRecurrent_layers());
+		rnnCellEClass.getESuperTypes().add(this.getRecurrent_layers());
+		lstmCellEClass.getESuperTypes().add(this.getRecurrent_layers());
+		gruCellEClass.getESuperTypes().add(this.getRecurrent_layers());
+		rnnEClass.getESuperTypes().add(this.getRecurrent_layers_1());
+		lstmEClass.getESuperTypes().add(this.getRecurrent_layers_1());
+		gruEClass.getESuperTypes().add(this.getRecurrent_layers_1());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(recurrent_layersEClass, Recurrent_layers.class, "Recurrent_layers", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getRecurrent_layers_Input_size(), theTypesPackage.getInteger(), "input_size", null, 1, 1, Recurrent_layers.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getRecurrent_layers_Hidden_size(), theTypesPackage.getInteger(), "hidden_size", null, 1, 1, Recurrent_layers.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getRecurrent_layers_Bias_pt(), theTypesPackage.getBoolean(), "bias_pt", null, 0, 1, Recurrent_layers.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(recurrent_layers_1EClass, Recurrent_layers_1.class, "Recurrent_layers_1", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getRecurrent_layers_1_Num_layers(), theTypesPackage.getInteger(), "num_layers", null, 0, 1, Recurrent_layers_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getRecurrent_layers_1_Batch_first_pt(), theTypesPackage.getBoolean(), "batch_first_pt", null, 0, 1, Recurrent_layers_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getRecurrent_layers_1_Dropout(), theTypesPackage.getReal(), "dropout", null, 0, 1, Recurrent_layers_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getRecurrent_layers_1_Bidirectional_pt(), theTypesPackage.getBoolean(), "bidirectional_pt", null, 0, 1, Recurrent_layers_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getRecurrent_layers_1_Activation(), theTypesPackage.getString(), "activation", null, 0, 1, Recurrent_layers_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getRecurrent_layers_1_Recurrent_activation(), theTypesPackage.getString(), "recurrent_activation", null, 0, 1, Recurrent_layers_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getRecurrent_layers_1_Use_bias(), theTypesPackage.getBoolean(), "use_bias", null, 0, 1, Recurrent_layers_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getRecurrent_layers_1_Kernel_initializer(), theTypesPackage.getString(), "kernel_initializer", null, 0, 1, Recurrent_layers_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getRecurrent_layers_1_Recurrent_initializer(), theTypesPackage.getString(), "recurrent_initializer", null, 0, 1, Recurrent_layers_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getRecurrent_layers_1_Bias_initializer(), theTypesPackage.getString(), "bias_initializer", null, 0, 1, Recurrent_layers_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getRecurrent_layers_1_Return_sequences(), theTypesPackage.getBoolean(), "return_sequences", null, 0, 1, Recurrent_layers_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getRecurrent_layers_1_Return_state(), theTypesPackage.getBoolean(), "return_state", null, 0, 1, Recurrent_layers_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEReference(getRecurrent_layers_1_Bidirectional_k(), this.getRecurrent_layers_1(), null, "bidirectional_k", null, 0, 1, Recurrent_layers_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getRecurrent_layers_1_Recurrent_dropout(), theTypesPackage.getReal(), "recurrent_dropout", null, 1, 1, Recurrent_layers_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(rnnCellEClass, RNNCell.class, "RNNCell", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getRNNCell_Nonlinearity(), theTypesPackage.getString(), "nonlinearity", null, 0, 1, RNNCell.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(lstmCellEClass, LSTMCell.class, "LSTMCell", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(gruCellEClass, GRUCell.class, "GRUCell", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(rnnEClass, org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.RNN.class, "RNN", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getRNN_Nonlinearity(), theTypesPackage.getString(), "nonlinearity", null, 0, 1, org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.RNN.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(lstmEClass, org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.LSTM.class, "LSTM", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(gruEClass, org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.GRU.class, "GRU", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+	}
+
+} //Recurrent_layersPackageImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/impl/Recurrent_layers_1Impl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/impl/Recurrent_layers_1Impl.java
new file mode 100644
index 0000000..c5e2ada
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/impl/Recurrent_layers_1Impl.java
@@ -0,0 +1,908 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Recurrent layers 1</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layers_1Impl#getNum_layers <em>Num layers</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layers_1Impl#isBatch_first_pt <em>Batch first pt</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layers_1Impl#getDropout <em>Dropout</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layers_1Impl#isBidirectional_pt <em>Bidirectional pt</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layers_1Impl#getActivation <em>Activation</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layers_1Impl#getRecurrent_activation <em>Recurrent activation</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layers_1Impl#isUse_bias <em>Use bias</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layers_1Impl#getKernel_initializer <em>Kernel initializer</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layers_1Impl#getRecurrent_initializer <em>Recurrent initializer</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layers_1Impl#getBias_initializer <em>Bias initializer</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layers_1Impl#isReturn_sequences <em>Return sequences</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layers_1Impl#isReturn_state <em>Return state</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layers_1Impl#getBidirectional_k <em>Bidirectional k</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layers_1Impl#getRecurrent_dropout <em>Recurrent dropout</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class Recurrent_layers_1Impl extends Recurrent_layersImpl implements Recurrent_layers_1 {
+	/**
+	 * The default value of the '{@link #getNum_layers() <em>Num layers</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNum_layers()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int NUM_LAYERS_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getNum_layers() <em>Num layers</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNum_layers()
+	 * @generated
+	 * @ordered
+	 */
+	protected int num_layers = NUM_LAYERS_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isBatch_first_pt() <em>Batch first pt</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isBatch_first_pt()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean BATCH_FIRST_PT_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isBatch_first_pt() <em>Batch first pt</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isBatch_first_pt()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean batch_first_pt = BATCH_FIRST_PT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getDropout() <em>Dropout</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDropout()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double DROPOUT_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getDropout() <em>Dropout</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDropout()
+	 * @generated
+	 * @ordered
+	 */
+	protected double dropout = DROPOUT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isBidirectional_pt() <em>Bidirectional pt</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isBidirectional_pt()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean BIDIRECTIONAL_PT_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isBidirectional_pt() <em>Bidirectional pt</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isBidirectional_pt()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean bidirectional_pt = BIDIRECTIONAL_PT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getActivation() <em>Activation</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getActivation()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ACTIVATION_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getActivation() <em>Activation</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getActivation()
+	 * @generated
+	 * @ordered
+	 */
+	protected String activation = ACTIVATION_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getRecurrent_activation() <em>Recurrent activation</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRecurrent_activation()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String RECURRENT_ACTIVATION_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getRecurrent_activation() <em>Recurrent activation</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRecurrent_activation()
+	 * @generated
+	 * @ordered
+	 */
+	protected String recurrent_activation = RECURRENT_ACTIVATION_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isUse_bias() <em>Use bias</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isUse_bias()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean USE_BIAS_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isUse_bias() <em>Use bias</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isUse_bias()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean use_bias = USE_BIAS_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getKernel_initializer() <em>Kernel initializer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKernel_initializer()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String KERNEL_INITIALIZER_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getKernel_initializer() <em>Kernel initializer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getKernel_initializer()
+	 * @generated
+	 * @ordered
+	 */
+	protected String kernel_initializer = KERNEL_INITIALIZER_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getRecurrent_initializer() <em>Recurrent initializer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRecurrent_initializer()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String RECURRENT_INITIALIZER_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getRecurrent_initializer() <em>Recurrent initializer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRecurrent_initializer()
+	 * @generated
+	 * @ordered
+	 */
+	protected String recurrent_initializer = RECURRENT_INITIALIZER_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getBias_initializer() <em>Bias initializer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBias_initializer()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String BIAS_INITIALIZER_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getBias_initializer() <em>Bias initializer</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBias_initializer()
+	 * @generated
+	 * @ordered
+	 */
+	protected String bias_initializer = BIAS_INITIALIZER_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isReturn_sequences() <em>Return sequences</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isReturn_sequences()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean RETURN_SEQUENCES_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isReturn_sequences() <em>Return sequences</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isReturn_sequences()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean return_sequences = RETURN_SEQUENCES_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isReturn_state() <em>Return state</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isReturn_state()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean RETURN_STATE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isReturn_state() <em>Return state</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isReturn_state()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean return_state = RETURN_STATE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getBidirectional_k() <em>Bidirectional k</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBidirectional_k()
+	 * @generated
+	 * @ordered
+	 */
+	protected Recurrent_layers_1 bidirectional_k;
+
+	/**
+	 * The default value of the '{@link #getRecurrent_dropout() <em>Recurrent dropout</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRecurrent_dropout()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double RECURRENT_DROPOUT_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getRecurrent_dropout() <em>Recurrent dropout</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRecurrent_dropout()
+	 * @generated
+	 * @ordered
+	 */
+	protected double recurrent_dropout = RECURRENT_DROPOUT_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Recurrent_layers_1Impl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Recurrent_layersPackage.Literals.RECURRENT_LAYERS_1;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getNum_layers() {
+		return num_layers;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setNum_layers(int newNum_layers) {
+		int oldNum_layers = num_layers;
+		num_layers = newNum_layers;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Recurrent_layersPackage.RECURRENT_LAYERS_1__NUM_LAYERS, oldNum_layers, num_layers));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isBatch_first_pt() {
+		return batch_first_pt;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBatch_first_pt(boolean newBatch_first_pt) {
+		boolean oldBatch_first_pt = batch_first_pt;
+		batch_first_pt = newBatch_first_pt;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Recurrent_layersPackage.RECURRENT_LAYERS_1__BATCH_FIRST_PT, oldBatch_first_pt, batch_first_pt));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getDropout() {
+		return dropout;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDropout(double newDropout) {
+		double oldDropout = dropout;
+		dropout = newDropout;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Recurrent_layersPackage.RECURRENT_LAYERS_1__DROPOUT, oldDropout, dropout));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isBidirectional_pt() {
+		return bidirectional_pt;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBidirectional_pt(boolean newBidirectional_pt) {
+		boolean oldBidirectional_pt = bidirectional_pt;
+		bidirectional_pt = newBidirectional_pt;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Recurrent_layersPackage.RECURRENT_LAYERS_1__BIDIRECTIONAL_PT, oldBidirectional_pt, bidirectional_pt));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getActivation() {
+		return activation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setActivation(String newActivation) {
+		String oldActivation = activation;
+		activation = newActivation;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Recurrent_layersPackage.RECURRENT_LAYERS_1__ACTIVATION, oldActivation, activation));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getRecurrent_activation() {
+		return recurrent_activation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setRecurrent_activation(String newRecurrent_activation) {
+		String oldRecurrent_activation = recurrent_activation;
+		recurrent_activation = newRecurrent_activation;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Recurrent_layersPackage.RECURRENT_LAYERS_1__RECURRENT_ACTIVATION, oldRecurrent_activation, recurrent_activation));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isUse_bias() {
+		return use_bias;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setUse_bias(boolean newUse_bias) {
+		boolean oldUse_bias = use_bias;
+		use_bias = newUse_bias;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Recurrent_layersPackage.RECURRENT_LAYERS_1__USE_BIAS, oldUse_bias, use_bias));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getKernel_initializer() {
+		return kernel_initializer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setKernel_initializer(String newKernel_initializer) {
+		String oldKernel_initializer = kernel_initializer;
+		kernel_initializer = newKernel_initializer;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Recurrent_layersPackage.RECURRENT_LAYERS_1__KERNEL_INITIALIZER, oldKernel_initializer, kernel_initializer));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getRecurrent_initializer() {
+		return recurrent_initializer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setRecurrent_initializer(String newRecurrent_initializer) {
+		String oldRecurrent_initializer = recurrent_initializer;
+		recurrent_initializer = newRecurrent_initializer;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Recurrent_layersPackage.RECURRENT_LAYERS_1__RECURRENT_INITIALIZER, oldRecurrent_initializer, recurrent_initializer));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getBias_initializer() {
+		return bias_initializer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBias_initializer(String newBias_initializer) {
+		String oldBias_initializer = bias_initializer;
+		bias_initializer = newBias_initializer;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Recurrent_layersPackage.RECURRENT_LAYERS_1__BIAS_INITIALIZER, oldBias_initializer, bias_initializer));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isReturn_sequences() {
+		return return_sequences;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setReturn_sequences(boolean newReturn_sequences) {
+		boolean oldReturn_sequences = return_sequences;
+		return_sequences = newReturn_sequences;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Recurrent_layersPackage.RECURRENT_LAYERS_1__RETURN_SEQUENCES, oldReturn_sequences, return_sequences));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isReturn_state() {
+		return return_state;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setReturn_state(boolean newReturn_state) {
+		boolean oldReturn_state = return_state;
+		return_state = newReturn_state;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Recurrent_layersPackage.RECURRENT_LAYERS_1__RETURN_STATE, oldReturn_state, return_state));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Recurrent_layers_1 getBidirectional_k() {
+		if (bidirectional_k != null && bidirectional_k.eIsProxy()) {
+			InternalEObject oldBidirectional_k = (InternalEObject)bidirectional_k;
+			bidirectional_k = (Recurrent_layers_1)eResolveProxy(oldBidirectional_k);
+			if (bidirectional_k != oldBidirectional_k) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, Recurrent_layersPackage.RECURRENT_LAYERS_1__BIDIRECTIONAL_K, oldBidirectional_k, bidirectional_k));
+			}
+		}
+		return bidirectional_k;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Recurrent_layers_1 basicGetBidirectional_k() {
+		return bidirectional_k;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBidirectional_k(Recurrent_layers_1 newBidirectional_k) {
+		Recurrent_layers_1 oldBidirectional_k = bidirectional_k;
+		bidirectional_k = newBidirectional_k;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Recurrent_layersPackage.RECURRENT_LAYERS_1__BIDIRECTIONAL_K, oldBidirectional_k, bidirectional_k));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getRecurrent_dropout() {
+		return recurrent_dropout;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setRecurrent_dropout(double newRecurrent_dropout) {
+		double oldRecurrent_dropout = recurrent_dropout;
+		recurrent_dropout = newRecurrent_dropout;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Recurrent_layersPackage.RECURRENT_LAYERS_1__RECURRENT_DROPOUT, oldRecurrent_dropout, recurrent_dropout));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__NUM_LAYERS:
+				return getNum_layers();
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__BATCH_FIRST_PT:
+				return isBatch_first_pt();
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__DROPOUT:
+				return getDropout();
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__BIDIRECTIONAL_PT:
+				return isBidirectional_pt();
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__ACTIVATION:
+				return getActivation();
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__RECURRENT_ACTIVATION:
+				return getRecurrent_activation();
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__USE_BIAS:
+				return isUse_bias();
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__KERNEL_INITIALIZER:
+				return getKernel_initializer();
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__RECURRENT_INITIALIZER:
+				return getRecurrent_initializer();
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__BIAS_INITIALIZER:
+				return getBias_initializer();
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__RETURN_SEQUENCES:
+				return isReturn_sequences();
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__RETURN_STATE:
+				return isReturn_state();
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__BIDIRECTIONAL_K:
+				if (resolve) return getBidirectional_k();
+				return basicGetBidirectional_k();
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__RECURRENT_DROPOUT:
+				return getRecurrent_dropout();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__NUM_LAYERS:
+				setNum_layers((Integer)newValue);
+				return;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__BATCH_FIRST_PT:
+				setBatch_first_pt((Boolean)newValue);
+				return;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__DROPOUT:
+				setDropout((Double)newValue);
+				return;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__BIDIRECTIONAL_PT:
+				setBidirectional_pt((Boolean)newValue);
+				return;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__ACTIVATION:
+				setActivation((String)newValue);
+				return;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__RECURRENT_ACTIVATION:
+				setRecurrent_activation((String)newValue);
+				return;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__USE_BIAS:
+				setUse_bias((Boolean)newValue);
+				return;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__KERNEL_INITIALIZER:
+				setKernel_initializer((String)newValue);
+				return;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__RECURRENT_INITIALIZER:
+				setRecurrent_initializer((String)newValue);
+				return;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__BIAS_INITIALIZER:
+				setBias_initializer((String)newValue);
+				return;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__RETURN_SEQUENCES:
+				setReturn_sequences((Boolean)newValue);
+				return;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__RETURN_STATE:
+				setReturn_state((Boolean)newValue);
+				return;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__BIDIRECTIONAL_K:
+				setBidirectional_k((Recurrent_layers_1)newValue);
+				return;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__RECURRENT_DROPOUT:
+				setRecurrent_dropout((Double)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__NUM_LAYERS:
+				setNum_layers(NUM_LAYERS_EDEFAULT);
+				return;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__BATCH_FIRST_PT:
+				setBatch_first_pt(BATCH_FIRST_PT_EDEFAULT);
+				return;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__DROPOUT:
+				setDropout(DROPOUT_EDEFAULT);
+				return;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__BIDIRECTIONAL_PT:
+				setBidirectional_pt(BIDIRECTIONAL_PT_EDEFAULT);
+				return;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__ACTIVATION:
+				setActivation(ACTIVATION_EDEFAULT);
+				return;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__RECURRENT_ACTIVATION:
+				setRecurrent_activation(RECURRENT_ACTIVATION_EDEFAULT);
+				return;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__USE_BIAS:
+				setUse_bias(USE_BIAS_EDEFAULT);
+				return;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__KERNEL_INITIALIZER:
+				setKernel_initializer(KERNEL_INITIALIZER_EDEFAULT);
+				return;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__RECURRENT_INITIALIZER:
+				setRecurrent_initializer(RECURRENT_INITIALIZER_EDEFAULT);
+				return;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__BIAS_INITIALIZER:
+				setBias_initializer(BIAS_INITIALIZER_EDEFAULT);
+				return;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__RETURN_SEQUENCES:
+				setReturn_sequences(RETURN_SEQUENCES_EDEFAULT);
+				return;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__RETURN_STATE:
+				setReturn_state(RETURN_STATE_EDEFAULT);
+				return;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__BIDIRECTIONAL_K:
+				setBidirectional_k((Recurrent_layers_1)null);
+				return;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__RECURRENT_DROPOUT:
+				setRecurrent_dropout(RECURRENT_DROPOUT_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__NUM_LAYERS:
+				return num_layers != NUM_LAYERS_EDEFAULT;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__BATCH_FIRST_PT:
+				return batch_first_pt != BATCH_FIRST_PT_EDEFAULT;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__DROPOUT:
+				return dropout != DROPOUT_EDEFAULT;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__BIDIRECTIONAL_PT:
+				return bidirectional_pt != BIDIRECTIONAL_PT_EDEFAULT;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__ACTIVATION:
+				return ACTIVATION_EDEFAULT == null ? activation != null : !ACTIVATION_EDEFAULT.equals(activation);
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__RECURRENT_ACTIVATION:
+				return RECURRENT_ACTIVATION_EDEFAULT == null ? recurrent_activation != null : !RECURRENT_ACTIVATION_EDEFAULT.equals(recurrent_activation);
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__USE_BIAS:
+				return use_bias != USE_BIAS_EDEFAULT;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__KERNEL_INITIALIZER:
+				return KERNEL_INITIALIZER_EDEFAULT == null ? kernel_initializer != null : !KERNEL_INITIALIZER_EDEFAULT.equals(kernel_initializer);
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__RECURRENT_INITIALIZER:
+				return RECURRENT_INITIALIZER_EDEFAULT == null ? recurrent_initializer != null : !RECURRENT_INITIALIZER_EDEFAULT.equals(recurrent_initializer);
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__BIAS_INITIALIZER:
+				return BIAS_INITIALIZER_EDEFAULT == null ? bias_initializer != null : !BIAS_INITIALIZER_EDEFAULT.equals(bias_initializer);
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__RETURN_SEQUENCES:
+				return return_sequences != RETURN_SEQUENCES_EDEFAULT;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__RETURN_STATE:
+				return return_state != RETURN_STATE_EDEFAULT;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__BIDIRECTIONAL_K:
+				return bidirectional_k != null;
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1__RECURRENT_DROPOUT:
+				return recurrent_dropout != RECURRENT_DROPOUT_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (num_layers: "); //$NON-NLS-1$
+		result.append(num_layers);
+		result.append(", batch_first_pt: "); //$NON-NLS-1$
+		result.append(batch_first_pt);
+		result.append(", dropout: "); //$NON-NLS-1$
+		result.append(dropout);
+		result.append(", bidirectional_pt: "); //$NON-NLS-1$
+		result.append(bidirectional_pt);
+		result.append(", activation: "); //$NON-NLS-1$
+		result.append(activation);
+		result.append(", recurrent_activation: "); //$NON-NLS-1$
+		result.append(recurrent_activation);
+		result.append(", use_bias: "); //$NON-NLS-1$
+		result.append(use_bias);
+		result.append(", kernel_initializer: "); //$NON-NLS-1$
+		result.append(kernel_initializer);
+		result.append(", recurrent_initializer: "); //$NON-NLS-1$
+		result.append(recurrent_initializer);
+		result.append(", bias_initializer: "); //$NON-NLS-1$
+		result.append(bias_initializer);
+		result.append(", return_sequences: "); //$NON-NLS-1$
+		result.append(return_sequences);
+		result.append(", return_state: "); //$NON-NLS-1$
+		result.append(return_state);
+		result.append(", recurrent_dropout: "); //$NON-NLS-1$
+		result.append(recurrent_dropout);
+		result.append(')');
+		return result.toString();
+	}
+
+} //Recurrent_layers_1Impl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/util/Recurrent_layersAdapterFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/util/Recurrent_layersAdapterFactory.java
new file mode 100644
index 0000000..52c032d
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/util/Recurrent_layersAdapterFactory.java
@@ -0,0 +1,273 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage
+ * @generated
+ */
+public class Recurrent_layersAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static Recurrent_layersPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Recurrent_layersAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = Recurrent_layersPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Recurrent_layersSwitch<Adapter> modelSwitch =
+		new Recurrent_layersSwitch<Adapter>() {
+			@Override
+			public Adapter caseRecurrent_layers(Recurrent_layers object) {
+				return createRecurrent_layersAdapter();
+			}
+			@Override
+			public Adapter caseRecurrent_layers_1(Recurrent_layers_1 object) {
+				return createRecurrent_layers_1Adapter();
+			}
+			@Override
+			public Adapter caseRNNCell(RNNCell object) {
+				return createRNNCellAdapter();
+			}
+			@Override
+			public Adapter caseLSTMCell(LSTMCell object) {
+				return createLSTMCellAdapter();
+			}
+			@Override
+			public Adapter caseGRUCell(GRUCell object) {
+				return createGRUCellAdapter();
+			}
+			@Override
+			public Adapter caseRNN(RNN object) {
+				return createRNNAdapter();
+			}
+			@Override
+			public Adapter caseLSTM(LSTM object) {
+				return createLSTMAdapter();
+			}
+			@Override
+			public Adapter caseGRU(GRU object) {
+				return createGRUAdapter();
+			}
+			@Override
+			public Adapter caseModel(Model object) {
+				return createModelAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers <em>Recurrent layers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers
+	 * @generated
+	 */
+	public Adapter createRecurrent_layersAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1 <em>Recurrent layers 1</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layers_1
+	 * @generated
+	 */
+	public Adapter createRecurrent_layers_1Adapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.RNNCell <em>RNN Cell</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.RNNCell
+	 * @generated
+	 */
+	public Adapter createRNNCellAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.LSTMCell <em>LSTM Cell</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.LSTMCell
+	 * @generated
+	 */
+	public Adapter createLSTMCellAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.GRUCell <em>GRU Cell</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.GRUCell
+	 * @generated
+	 */
+	public Adapter createGRUCellAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.RNN <em>RNN</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.RNN
+	 * @generated
+	 */
+	public Adapter createRNNAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.LSTM <em>LSTM</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.LSTM
+	 * @generated
+	 */
+	public Adapter createLSTMAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.GRU <em>GRU</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.GRU
+	 * @generated
+	 */
+	public Adapter createGRUAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model <em>Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.Model
+	 * @generated
+	 */
+	public Adapter createModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //Recurrent_layersAdapterFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/util/Recurrent_layersSwitch.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/util/Recurrent_layersSwitch.java
new file mode 100644
index 0000000..db80151
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Recurrent_layers/util/Recurrent_layersSwitch.java
@@ -0,0 +1,299 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage
+ * @generated
+ */
+public class Recurrent_layersSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static Recurrent_layersPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Recurrent_layersSwitch() {
+		if (modelPackage == null) {
+			modelPackage = Recurrent_layersPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case Recurrent_layersPackage.RECURRENT_LAYERS: {
+				Recurrent_layers recurrent_layers = (Recurrent_layers)theEObject;
+				T result = caseRecurrent_layers(recurrent_layers);
+				if (result == null) result = caseModel(recurrent_layers);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Recurrent_layersPackage.RECURRENT_LAYERS_1: {
+				Recurrent_layers_1 recurrent_layers_1 = (Recurrent_layers_1)theEObject;
+				T result = caseRecurrent_layers_1(recurrent_layers_1);
+				if (result == null) result = caseRecurrent_layers(recurrent_layers_1);
+				if (result == null) result = caseModel(recurrent_layers_1);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Recurrent_layersPackage.RNN_CELL: {
+				RNNCell rnnCell = (RNNCell)theEObject;
+				T result = caseRNNCell(rnnCell);
+				if (result == null) result = caseRecurrent_layers(rnnCell);
+				if (result == null) result = caseModel(rnnCell);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Recurrent_layersPackage.LSTM_CELL: {
+				LSTMCell lstmCell = (LSTMCell)theEObject;
+				T result = caseLSTMCell(lstmCell);
+				if (result == null) result = caseRecurrent_layers(lstmCell);
+				if (result == null) result = caseModel(lstmCell);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Recurrent_layersPackage.GRU_CELL: {
+				GRUCell gruCell = (GRUCell)theEObject;
+				T result = caseGRUCell(gruCell);
+				if (result == null) result = caseRecurrent_layers(gruCell);
+				if (result == null) result = caseModel(gruCell);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Recurrent_layersPackage.RNN: {
+				RNN rnn = (RNN)theEObject;
+				T result = caseRNN(rnn);
+				if (result == null) result = caseRecurrent_layers_1(rnn);
+				if (result == null) result = caseRecurrent_layers(rnn);
+				if (result == null) result = caseModel(rnn);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Recurrent_layersPackage.LSTM: {
+				LSTM lstm = (LSTM)theEObject;
+				T result = caseLSTM(lstm);
+				if (result == null) result = caseRecurrent_layers_1(lstm);
+				if (result == null) result = caseRecurrent_layers(lstm);
+				if (result == null) result = caseModel(lstm);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Recurrent_layersPackage.GRU: {
+				GRU gru = (GRU)theEObject;
+				T result = caseGRU(gru);
+				if (result == null) result = caseRecurrent_layers_1(gru);
+				if (result == null) result = caseRecurrent_layers(gru);
+				if (result == null) result = caseModel(gru);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Recurrent layers</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Recurrent layers</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseRecurrent_layers(Recurrent_layers object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Recurrent layers 1</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Recurrent layers 1</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseRecurrent_layers_1(Recurrent_layers_1 object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>RNN Cell</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>RNN Cell</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseRNNCell(RNNCell object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LSTM Cell</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>LSTM Cell</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLSTMCell(LSTMCell object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>GRU Cell</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>GRU Cell</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseGRUCell(GRUCell object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>RNN</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>RNN</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseRNN(RNN object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>LSTM</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>LSTM</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLSTM(LSTM object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>GRU</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>GRU</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseGRU(GRU object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseModel(Model object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //Recurrent_layersSwitch
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SmoothL1Loss.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SmoothL1Loss.java
new file mode 100644
index 0000000..d8fe907
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SmoothL1Loss.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Smooth L1 Loss</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.AIMLPackage#getSmoothL1Loss()
+ * @model
+ * @generated
+ */
+public interface SmoothL1Loss extends Loss_functions_1 {
+} // SmoothL1Loss
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMarginLoss.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMarginLoss.java
new file mode 100644
index 0000000..8b9ea68
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMarginLoss.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Soft Margin Loss</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.AIMLPackage#getSoftMarginLoss()
+ * @model
+ * @generated
+ */
+public interface SoftMarginLoss extends Loss_functions_1 {
+} // SoftMarginLoss
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/AdaptiveLogSoftmaxWithLoss.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/AdaptiveLogSoftmaxWithLoss.java
new file mode 100644
index 0000000..08aa355
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/AdaptiveLogSoftmaxWithLoss.java
@@ -0,0 +1,157 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Adaptive Log Softmax With Loss</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.AdaptiveLogSoftmaxWithLoss#getIn_features <em>In features</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.AdaptiveLogSoftmaxWithLoss#getN_classes <em>Nclasses</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.AdaptiveLogSoftmaxWithLoss#getCutoffs <em>Cutoffs</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.AdaptiveLogSoftmaxWithLoss#getDiv_value <em>Div value</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.AdaptiveLogSoftmaxWithLoss#isHead_biais <em>Head biais</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage#getAdaptiveLogSoftmaxWithLoss()
+ * @model
+ * @generated
+ */
+public interface AdaptiveLogSoftmaxWithLoss extends SoftMinMax {
+	/**
+	 * Returns the value of the '<em><b>In features</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>In features</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>In features</em>' attribute.
+	 * @see #setIn_features(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage#getAdaptiveLogSoftmaxWithLoss_In_features()
+	 * @model dataType="org.eclipse.uml2.types.Integer" required="true" ordered="false"
+	 * @generated
+	 */
+	int getIn_features();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.AdaptiveLogSoftmaxWithLoss#getIn_features <em>In features</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>In features</em>' attribute.
+	 * @see #getIn_features()
+	 * @generated
+	 */
+	void setIn_features(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Nclasses</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Nclasses</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Nclasses</em>' attribute.
+	 * @see #setN_classes(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage#getAdaptiveLogSoftmaxWithLoss_N_classes()
+	 * @model dataType="org.eclipse.uml2.types.Integer" required="true" ordered="false"
+	 * @generated
+	 */
+	int getN_classes();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.AdaptiveLogSoftmaxWithLoss#getN_classes <em>Nclasses</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Nclasses</em>' attribute.
+	 * @see #getN_classes()
+	 * @generated
+	 */
+	void setN_classes(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Cutoffs</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.Integer}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Cutoffs</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Cutoffs</em>' attribute list.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage#getAdaptiveLogSoftmaxWithLoss_Cutoffs()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	EList<Integer> getCutoffs();
+
+	/**
+	 * Returns the value of the '<em><b>Div value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Div value</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Div value</em>' attribute.
+	 * @see #setDiv_value(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage#getAdaptiveLogSoftmaxWithLoss_Div_value()
+	 * @model dataType="org.eclipse.uml2.types.Real" ordered="false"
+	 * @generated
+	 */
+	double getDiv_value();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.AdaptiveLogSoftmaxWithLoss#getDiv_value <em>Div value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Div value</em>' attribute.
+	 * @see #getDiv_value()
+	 * @generated
+	 */
+	void setDiv_value(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Head biais</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Head biais</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Head biais</em>' attribute.
+	 * @see #setHead_biais(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage#getAdaptiveLogSoftmaxWithLoss_Head_biais()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isHead_biais();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.AdaptiveLogSoftmaxWithLoss#isHead_biais <em>Head biais</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Head biais</em>' attribute.
+	 * @see #isHead_biais()
+	 * @generated
+	 */
+	void setHead_biais(boolean value);
+
+} // AdaptiveLogSoftmaxWithLoss
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/LogSoftmax.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/LogSoftmax.java
new file mode 100644
index 0000000..d7c0693
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/LogSoftmax.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Log Softmax</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage#getLogSoftmax()
+ * @model
+ * @generated
+ */
+public interface LogSoftmax extends SoftMinMax_1 {
+} // LogSoftmax
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/SoftMinMax.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/SoftMinMax.java
new file mode 100644
index 0000000..133d9dd
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/SoftMinMax.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Soft Min Max</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage#getSoftMinMax()
+ * @model abstract="true"
+ * @generated
+ */
+public interface SoftMinMax extends Model {
+} // SoftMinMax
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/SoftMinMaxActivationsFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/SoftMinMaxActivationsFactory.java
new file mode 100644
index 0000000..cb2b1e9
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/SoftMinMaxActivationsFactory.java
@@ -0,0 +1,87 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage
+ * @generated
+ */
+public interface SoftMinMaxActivationsFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	SoftMinMaxActivationsFactory eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Softmin</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Softmin</em>'.
+	 * @generated
+	 */
+	Softmin createSoftmin();
+
+	/**
+	 * Returns a new object of class '<em>Softmax</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Softmax</em>'.
+	 * @generated
+	 */
+	Softmax createSoftmax();
+
+	/**
+	 * Returns a new object of class '<em>Softmax2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Softmax2d</em>'.
+	 * @generated
+	 */
+	Softmax2d createSoftmax2d();
+
+	/**
+	 * Returns a new object of class '<em>Log Softmax</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Log Softmax</em>'.
+	 * @generated
+	 */
+	LogSoftmax createLogSoftmax();
+
+	/**
+	 * Returns a new object of class '<em>Adaptive Log Softmax With Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Adaptive Log Softmax With Loss</em>'.
+	 * @generated
+	 */
+	AdaptiveLogSoftmaxWithLoss createAdaptiveLogSoftmaxWithLoss();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	SoftMinMaxActivationsPackage getSoftMinMaxActivationsPackage();
+
+} //SoftMinMaxActivationsFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/SoftMinMaxActivationsPackage.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/SoftMinMaxActivationsPackage.java
new file mode 100644
index 0000000..35fede8
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/SoftMinMaxActivationsPackage.java
@@ -0,0 +1,1067 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface SoftMinMaxActivationsPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "SoftMinMaxActivations"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://www.eclipse.org/papyrus/AIML/softminmax/1"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "AIML.SoftMinMaxActivations"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	SoftMinMaxActivationsPackage eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxImpl <em>Soft Min Max</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl#getSoftMinMax()
+	 * @generated
+	 */
+	int SOFT_MIN_MAX = 0;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFT_MIN_MAX__BASE_CLASS = ModulePackage.MODEL__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFT_MIN_MAX__NAME = ModulePackage.MODEL__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFT_MIN_MAX__DATA = ModulePackage.MODEL__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFT_MIN_MAX__REQUIRES_GRAD = ModulePackage.MODEL__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFT_MIN_MAX__SUB_MODULE = ModulePackage.MODEL__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFT_MIN_MAX__OPTIMIZER = ModulePackage.MODEL__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFT_MIN_MAX__LOSS = ModulePackage.MODEL__LOSS;
+
+	/**
+	 * The number of structural features of the '<em>Soft Min Max</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFT_MIN_MAX_FEATURE_COUNT = ModulePackage.MODEL_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Soft Min Max</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFT_MIN_MAX_OPERATION_COUNT = ModulePackage.MODEL_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMax_1Impl <em>Soft Min Max 1</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMax_1Impl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl#getSoftMinMax_1()
+	 * @generated
+	 */
+	int SOFT_MIN_MAX_1 = 1;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFT_MIN_MAX_1__BASE_CLASS = SOFT_MIN_MAX__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFT_MIN_MAX_1__NAME = SOFT_MIN_MAX__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFT_MIN_MAX_1__DATA = SOFT_MIN_MAX__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFT_MIN_MAX_1__REQUIRES_GRAD = SOFT_MIN_MAX__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFT_MIN_MAX_1__SUB_MODULE = SOFT_MIN_MAX__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFT_MIN_MAX_1__OPTIMIZER = SOFT_MIN_MAX__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFT_MIN_MAX_1__LOSS = SOFT_MIN_MAX__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Dim</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFT_MIN_MAX_1__DIM = SOFT_MIN_MAX_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Soft Min Max 1</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFT_MIN_MAX_1_FEATURE_COUNT = SOFT_MIN_MAX_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Soft Min Max 1</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFT_MIN_MAX_1_OPERATION_COUNT = SOFT_MIN_MAX_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftminImpl <em>Softmin</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftminImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl#getSoftmin()
+	 * @generated
+	 */
+	int SOFTMIN = 2;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTMIN__BASE_CLASS = SOFT_MIN_MAX_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTMIN__NAME = SOFT_MIN_MAX_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTMIN__DATA = SOFT_MIN_MAX_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTMIN__REQUIRES_GRAD = SOFT_MIN_MAX_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTMIN__SUB_MODULE = SOFT_MIN_MAX_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTMIN__OPTIMIZER = SOFT_MIN_MAX_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTMIN__LOSS = SOFT_MIN_MAX_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Dim</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTMIN__DIM = SOFT_MIN_MAX_1__DIM;
+
+	/**
+	 * The number of structural features of the '<em>Softmin</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTMIN_FEATURE_COUNT = SOFT_MIN_MAX_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Softmin</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTMIN_OPERATION_COUNT = SOFT_MIN_MAX_1_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftmaxImpl <em>Softmax</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftmaxImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl#getSoftmax()
+	 * @generated
+	 */
+	int SOFTMAX = 3;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTMAX__BASE_CLASS = SOFT_MIN_MAX_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTMAX__NAME = SOFT_MIN_MAX_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTMAX__DATA = SOFT_MIN_MAX_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTMAX__REQUIRES_GRAD = SOFT_MIN_MAX_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTMAX__SUB_MODULE = SOFT_MIN_MAX_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTMAX__OPTIMIZER = SOFT_MIN_MAX_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTMAX__LOSS = SOFT_MIN_MAX_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Dim</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTMAX__DIM = SOFT_MIN_MAX_1__DIM;
+
+	/**
+	 * The number of structural features of the '<em>Softmax</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTMAX_FEATURE_COUNT = SOFT_MIN_MAX_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Softmax</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTMAX_OPERATION_COUNT = SOFT_MIN_MAX_1_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.Softmax2dImpl <em>Softmax2d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.Softmax2dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl#getSoftmax2d()
+	 * @generated
+	 */
+	int SOFTMAX2D = 4;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTMAX2D__BASE_CLASS = SOFT_MIN_MAX__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTMAX2D__NAME = SOFT_MIN_MAX__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTMAX2D__DATA = SOFT_MIN_MAX__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTMAX2D__REQUIRES_GRAD = SOFT_MIN_MAX__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTMAX2D__SUB_MODULE = SOFT_MIN_MAX__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTMAX2D__OPTIMIZER = SOFT_MIN_MAX__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTMAX2D__LOSS = SOFT_MIN_MAX__LOSS;
+
+	/**
+	 * The number of structural features of the '<em>Softmax2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTMAX2D_FEATURE_COUNT = SOFT_MIN_MAX_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Softmax2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SOFTMAX2D_OPERATION_COUNT = SOFT_MIN_MAX_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.LogSoftmaxImpl <em>Log Softmax</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.LogSoftmaxImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl#getLogSoftmax()
+	 * @generated
+	 */
+	int LOG_SOFTMAX = 5;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOG_SOFTMAX__BASE_CLASS = SOFT_MIN_MAX_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOG_SOFTMAX__NAME = SOFT_MIN_MAX_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOG_SOFTMAX__DATA = SOFT_MIN_MAX_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOG_SOFTMAX__REQUIRES_GRAD = SOFT_MIN_MAX_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOG_SOFTMAX__SUB_MODULE = SOFT_MIN_MAX_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOG_SOFTMAX__OPTIMIZER = SOFT_MIN_MAX_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOG_SOFTMAX__LOSS = SOFT_MIN_MAX_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Dim</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOG_SOFTMAX__DIM = SOFT_MIN_MAX_1__DIM;
+
+	/**
+	 * The number of structural features of the '<em>Log Softmax</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOG_SOFTMAX_FEATURE_COUNT = SOFT_MIN_MAX_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Log Softmax</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int LOG_SOFTMAX_OPERATION_COUNT = SOFT_MIN_MAX_1_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.AdaptiveLogSoftmaxWithLossImpl <em>Adaptive Log Softmax With Loss</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.AdaptiveLogSoftmaxWithLossImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl#getAdaptiveLogSoftmaxWithLoss()
+	 * @generated
+	 */
+	int ADAPTIVE_LOG_SOFTMAX_WITH_LOSS = 6;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__BASE_CLASS = SOFT_MIN_MAX__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__NAME = SOFT_MIN_MAX__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__DATA = SOFT_MIN_MAX__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__REQUIRES_GRAD = SOFT_MIN_MAX__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__SUB_MODULE = SOFT_MIN_MAX__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__OPTIMIZER = SOFT_MIN_MAX__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__LOSS = SOFT_MIN_MAX__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>In features</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__IN_FEATURES = SOFT_MIN_MAX_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Nclasses</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__NCLASSES = SOFT_MIN_MAX_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Cutoffs</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__CUTOFFS = SOFT_MIN_MAX_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Div value</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__DIV_VALUE = SOFT_MIN_MAX_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Head biais</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__HEAD_BIAIS = SOFT_MIN_MAX_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of structural features of the '<em>Adaptive Log Softmax With Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_LOG_SOFTMAX_WITH_LOSS_FEATURE_COUNT = SOFT_MIN_MAX_FEATURE_COUNT + 5;
+
+	/**
+	 * The number of operations of the '<em>Adaptive Log Softmax With Loss</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ADAPTIVE_LOG_SOFTMAX_WITH_LOSS_OPERATION_COUNT = SOFT_MIN_MAX_OPERATION_COUNT + 0;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMax <em>Soft Min Max</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Soft Min Max</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMax
+	 * @generated
+	 */
+	EClass getSoftMinMax();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMax_1 <em>Soft Min Max 1</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Soft Min Max 1</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMax_1
+	 * @generated
+	 */
+	EClass getSoftMinMax_1();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMax_1#getDim <em>Dim</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Dim</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMax_1#getDim()
+	 * @see #getSoftMinMax_1()
+	 * @generated
+	 */
+	EAttribute getSoftMinMax_1_Dim();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.Softmin <em>Softmin</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Softmin</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.Softmin
+	 * @generated
+	 */
+	EClass getSoftmin();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.Softmax <em>Softmax</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Softmax</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.Softmax
+	 * @generated
+	 */
+	EClass getSoftmax();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.Softmax2d <em>Softmax2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Softmax2d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.Softmax2d
+	 * @generated
+	 */
+	EClass getSoftmax2d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.LogSoftmax <em>Log Softmax</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Log Softmax</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.LogSoftmax
+	 * @generated
+	 */
+	EClass getLogSoftmax();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.AdaptiveLogSoftmaxWithLoss <em>Adaptive Log Softmax With Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Adaptive Log Softmax With Loss</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.AdaptiveLogSoftmaxWithLoss
+	 * @generated
+	 */
+	EClass getAdaptiveLogSoftmaxWithLoss();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.AdaptiveLogSoftmaxWithLoss#getIn_features <em>In features</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>In features</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.AdaptiveLogSoftmaxWithLoss#getIn_features()
+	 * @see #getAdaptiveLogSoftmaxWithLoss()
+	 * @generated
+	 */
+	EAttribute getAdaptiveLogSoftmaxWithLoss_In_features();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.AdaptiveLogSoftmaxWithLoss#getN_classes <em>Nclasses</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Nclasses</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.AdaptiveLogSoftmaxWithLoss#getN_classes()
+	 * @see #getAdaptiveLogSoftmaxWithLoss()
+	 * @generated
+	 */
+	EAttribute getAdaptiveLogSoftmaxWithLoss_N_classes();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.AdaptiveLogSoftmaxWithLoss#getCutoffs <em>Cutoffs</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Cutoffs</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.AdaptiveLogSoftmaxWithLoss#getCutoffs()
+	 * @see #getAdaptiveLogSoftmaxWithLoss()
+	 * @generated
+	 */
+	EAttribute getAdaptiveLogSoftmaxWithLoss_Cutoffs();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.AdaptiveLogSoftmaxWithLoss#getDiv_value <em>Div value</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Div value</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.AdaptiveLogSoftmaxWithLoss#getDiv_value()
+	 * @see #getAdaptiveLogSoftmaxWithLoss()
+	 * @generated
+	 */
+	EAttribute getAdaptiveLogSoftmaxWithLoss_Div_value();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.AdaptiveLogSoftmaxWithLoss#isHead_biais <em>Head biais</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Head biais</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.AdaptiveLogSoftmaxWithLoss#isHead_biais()
+	 * @see #getAdaptiveLogSoftmaxWithLoss()
+	 * @generated
+	 */
+	EAttribute getAdaptiveLogSoftmaxWithLoss_Head_biais();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	SoftMinMaxActivationsFactory getSoftMinMaxActivationsFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxImpl <em>Soft Min Max</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl#getSoftMinMax()
+		 * @generated
+		 */
+		EClass SOFT_MIN_MAX = eINSTANCE.getSoftMinMax();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMax_1Impl <em>Soft Min Max 1</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMax_1Impl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl#getSoftMinMax_1()
+		 * @generated
+		 */
+		EClass SOFT_MIN_MAX_1 = eINSTANCE.getSoftMinMax_1();
+
+		/**
+		 * The meta object literal for the '<em><b>Dim</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SOFT_MIN_MAX_1__DIM = eINSTANCE.getSoftMinMax_1_Dim();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftminImpl <em>Softmin</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftminImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl#getSoftmin()
+		 * @generated
+		 */
+		EClass SOFTMIN = eINSTANCE.getSoftmin();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftmaxImpl <em>Softmax</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftmaxImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl#getSoftmax()
+		 * @generated
+		 */
+		EClass SOFTMAX = eINSTANCE.getSoftmax();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.Softmax2dImpl <em>Softmax2d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.Softmax2dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl#getSoftmax2d()
+		 * @generated
+		 */
+		EClass SOFTMAX2D = eINSTANCE.getSoftmax2d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.LogSoftmaxImpl <em>Log Softmax</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.LogSoftmaxImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl#getLogSoftmax()
+		 * @generated
+		 */
+		EClass LOG_SOFTMAX = eINSTANCE.getLogSoftmax();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.AdaptiveLogSoftmaxWithLossImpl <em>Adaptive Log Softmax With Loss</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.AdaptiveLogSoftmaxWithLossImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl#getAdaptiveLogSoftmaxWithLoss()
+		 * @generated
+		 */
+		EClass ADAPTIVE_LOG_SOFTMAX_WITH_LOSS = eINSTANCE.getAdaptiveLogSoftmaxWithLoss();
+
+		/**
+		 * The meta object literal for the '<em><b>In features</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__IN_FEATURES = eINSTANCE.getAdaptiveLogSoftmaxWithLoss_In_features();
+
+		/**
+		 * The meta object literal for the '<em><b>Nclasses</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__NCLASSES = eINSTANCE.getAdaptiveLogSoftmaxWithLoss_N_classes();
+
+		/**
+		 * The meta object literal for the '<em><b>Cutoffs</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__CUTOFFS = eINSTANCE.getAdaptiveLogSoftmaxWithLoss_Cutoffs();
+
+		/**
+		 * The meta object literal for the '<em><b>Div value</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__DIV_VALUE = eINSTANCE.getAdaptiveLogSoftmaxWithLoss_Div_value();
+
+		/**
+		 * The meta object literal for the '<em><b>Head biais</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__HEAD_BIAIS = eINSTANCE.getAdaptiveLogSoftmaxWithLoss_Head_biais();
+
+	}
+
+} //SoftMinMaxActivationsPackage
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/SoftMinMax_1.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/SoftMinMax_1.java
new file mode 100644
index 0000000..83aaa24
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/SoftMinMax_1.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Soft Min Max 1</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMax_1#getDim <em>Dim</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage#getSoftMinMax_1()
+ * @model abstract="true"
+ * @generated
+ */
+public interface SoftMinMax_1 extends SoftMinMax {
+	/**
+	 * Returns the value of the '<em><b>Dim</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Dim</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Dim</em>' attribute.
+	 * @see #setDim(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage#getSoftMinMax_1_Dim()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	int getDim();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMax_1#getDim <em>Dim</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Dim</em>' attribute.
+	 * @see #getDim()
+	 * @generated
+	 */
+	void setDim(int value);
+
+} // SoftMinMax_1
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/Softmax.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/Softmax.java
new file mode 100644
index 0000000..0075b51
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/Softmax.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Softmax</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage#getSoftmax()
+ * @model
+ * @generated
+ */
+public interface Softmax extends SoftMinMax_1 {
+} // Softmax
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/Softmax2d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/Softmax2d.java
new file mode 100644
index 0000000..23ca6fd
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/Softmax2d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Softmax2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage#getSoftmax2d()
+ * @model
+ * @generated
+ */
+public interface Softmax2d extends SoftMinMax {
+} // Softmax2d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/Softmin.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/Softmin.java
new file mode 100644
index 0000000..366ad45
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/Softmin.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Softmin</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage#getSoftmin()
+ * @model
+ * @generated
+ */
+public interface Softmin extends SoftMinMax_1 {
+} // Softmin
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/impl/AdaptiveLogSoftmaxWithLossImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/impl/AdaptiveLogSoftmaxWithLossImpl.java
new file mode 100644
index 0000000..4868fb2
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/impl/AdaptiveLogSoftmaxWithLossImpl.java
@@ -0,0 +1,385 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.AdaptiveLogSoftmaxWithLoss;
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Adaptive Log Softmax With Loss</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.AdaptiveLogSoftmaxWithLossImpl#getIn_features <em>In features</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.AdaptiveLogSoftmaxWithLossImpl#getN_classes <em>Nclasses</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.AdaptiveLogSoftmaxWithLossImpl#getCutoffs <em>Cutoffs</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.AdaptiveLogSoftmaxWithLossImpl#getDiv_value <em>Div value</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.AdaptiveLogSoftmaxWithLossImpl#isHead_biais <em>Head biais</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class AdaptiveLogSoftmaxWithLossImpl extends SoftMinMaxImpl implements AdaptiveLogSoftmaxWithLoss {
+	/**
+	 * The default value of the '{@link #getIn_features() <em>In features</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIn_features()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int IN_FEATURES_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getIn_features() <em>In features</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getIn_features()
+	 * @generated
+	 * @ordered
+	 */
+	protected int in_features = IN_FEATURES_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getN_classes() <em>Nclasses</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getN_classes()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int NCLASSES_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getN_classes() <em>Nclasses</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getN_classes()
+	 * @generated
+	 * @ordered
+	 */
+	protected int n_classes = NCLASSES_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getCutoffs() <em>Cutoffs</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCutoffs()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Integer> cutoffs;
+
+	/**
+	 * The default value of the '{@link #getDiv_value() <em>Div value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDiv_value()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double DIV_VALUE_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getDiv_value() <em>Div value</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDiv_value()
+	 * @generated
+	 * @ordered
+	 */
+	protected double div_value = DIV_VALUE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isHead_biais() <em>Head biais</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHead_biais()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean HEAD_BIAIS_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isHead_biais() <em>Head biais</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isHead_biais()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean head_biais = HEAD_BIAIS_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AdaptiveLogSoftmaxWithLossImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SoftMinMaxActivationsPackage.Literals.ADAPTIVE_LOG_SOFTMAX_WITH_LOSS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getIn_features() {
+		return in_features;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setIn_features(int newIn_features) {
+		int oldIn_features = in_features;
+		in_features = newIn_features;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SoftMinMaxActivationsPackage.ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__IN_FEATURES, oldIn_features, in_features));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getN_classes() {
+		return n_classes;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setN_classes(int newN_classes) {
+		int oldN_classes = n_classes;
+		n_classes = newN_classes;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SoftMinMaxActivationsPackage.ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__NCLASSES, oldN_classes, n_classes));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Integer> getCutoffs() {
+		if (cutoffs == null) {
+			cutoffs = new EDataTypeUniqueEList<Integer>(Integer.class, this, SoftMinMaxActivationsPackage.ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__CUTOFFS);
+		}
+		return cutoffs;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getDiv_value() {
+		return div_value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDiv_value(double newDiv_value) {
+		double oldDiv_value = div_value;
+		div_value = newDiv_value;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SoftMinMaxActivationsPackage.ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__DIV_VALUE, oldDiv_value, div_value));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isHead_biais() {
+		return head_biais;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setHead_biais(boolean newHead_biais) {
+		boolean oldHead_biais = head_biais;
+		head_biais = newHead_biais;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SoftMinMaxActivationsPackage.ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__HEAD_BIAIS, oldHead_biais, head_biais));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SoftMinMaxActivationsPackage.ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__IN_FEATURES:
+				return getIn_features();
+			case SoftMinMaxActivationsPackage.ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__NCLASSES:
+				return getN_classes();
+			case SoftMinMaxActivationsPackage.ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__CUTOFFS:
+				return getCutoffs();
+			case SoftMinMaxActivationsPackage.ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__DIV_VALUE:
+				return getDiv_value();
+			case SoftMinMaxActivationsPackage.ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__HEAD_BIAIS:
+				return isHead_biais();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SoftMinMaxActivationsPackage.ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__IN_FEATURES:
+				setIn_features((Integer)newValue);
+				return;
+			case SoftMinMaxActivationsPackage.ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__NCLASSES:
+				setN_classes((Integer)newValue);
+				return;
+			case SoftMinMaxActivationsPackage.ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__CUTOFFS:
+				getCutoffs().clear();
+				getCutoffs().addAll((Collection<? extends Integer>)newValue);
+				return;
+			case SoftMinMaxActivationsPackage.ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__DIV_VALUE:
+				setDiv_value((Double)newValue);
+				return;
+			case SoftMinMaxActivationsPackage.ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__HEAD_BIAIS:
+				setHead_biais((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SoftMinMaxActivationsPackage.ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__IN_FEATURES:
+				setIn_features(IN_FEATURES_EDEFAULT);
+				return;
+			case SoftMinMaxActivationsPackage.ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__NCLASSES:
+				setN_classes(NCLASSES_EDEFAULT);
+				return;
+			case SoftMinMaxActivationsPackage.ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__CUTOFFS:
+				getCutoffs().clear();
+				return;
+			case SoftMinMaxActivationsPackage.ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__DIV_VALUE:
+				setDiv_value(DIV_VALUE_EDEFAULT);
+				return;
+			case SoftMinMaxActivationsPackage.ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__HEAD_BIAIS:
+				setHead_biais(HEAD_BIAIS_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SoftMinMaxActivationsPackage.ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__IN_FEATURES:
+				return in_features != IN_FEATURES_EDEFAULT;
+			case SoftMinMaxActivationsPackage.ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__NCLASSES:
+				return n_classes != NCLASSES_EDEFAULT;
+			case SoftMinMaxActivationsPackage.ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__CUTOFFS:
+				return cutoffs != null && !cutoffs.isEmpty();
+			case SoftMinMaxActivationsPackage.ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__DIV_VALUE:
+				return div_value != DIV_VALUE_EDEFAULT;
+			case SoftMinMaxActivationsPackage.ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__HEAD_BIAIS:
+				return head_biais != HEAD_BIAIS_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (in_features: "); //$NON-NLS-1$
+		result.append(in_features);
+		result.append(", n_classes: "); //$NON-NLS-1$
+		result.append(n_classes);
+		result.append(", cutoffs: "); //$NON-NLS-1$
+		result.append(cutoffs);
+		result.append(", div_value: "); //$NON-NLS-1$
+		result.append(div_value);
+		result.append(", head_biais: "); //$NON-NLS-1$
+		result.append(head_biais);
+		result.append(')');
+		return result.toString();
+	}
+
+} //AdaptiveLogSoftmaxWithLossImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/impl/LogSoftmaxImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/impl/LogSoftmaxImpl.java
new file mode 100644
index 0000000..5707395
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/impl/LogSoftmaxImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.LogSoftmax;
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Log Softmax</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class LogSoftmaxImpl extends SoftMinMax_1Impl implements LogSoftmax {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected LogSoftmaxImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SoftMinMaxActivationsPackage.Literals.LOG_SOFTMAX;
+	}
+
+} //LogSoftmaxImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/impl/SoftMinMaxActivationsFactoryImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/impl/SoftMinMaxActivationsFactoryImpl.java
new file mode 100644
index 0000000..e15a90b
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/impl/SoftMinMaxActivationsFactoryImpl.java
@@ -0,0 +1,154 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SoftMinMaxActivationsFactoryImpl extends EFactoryImpl implements SoftMinMaxActivationsFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static SoftMinMaxActivationsFactory init() {
+		try {
+			SoftMinMaxActivationsFactory theSoftMinMaxActivationsFactory = (SoftMinMaxActivationsFactory)EPackage.Registry.INSTANCE.getEFactory(SoftMinMaxActivationsPackage.eNS_URI);
+			if (theSoftMinMaxActivationsFactory != null) {
+				return theSoftMinMaxActivationsFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new SoftMinMaxActivationsFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SoftMinMaxActivationsFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case SoftMinMaxActivationsPackage.SOFTMIN: return createSoftmin();
+			case SoftMinMaxActivationsPackage.SOFTMAX: return createSoftmax();
+			case SoftMinMaxActivationsPackage.SOFTMAX2D: return createSoftmax2d();
+			case SoftMinMaxActivationsPackage.LOG_SOFTMAX: return createLogSoftmax();
+			case SoftMinMaxActivationsPackage.ADAPTIVE_LOG_SOFTMAX_WITH_LOSS: return createAdaptiveLogSoftmaxWithLoss();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Softmin createSoftmin() {
+		SoftminImpl softmin = new SoftminImpl();
+		return softmin;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Softmax createSoftmax() {
+		SoftmaxImpl softmax = new SoftmaxImpl();
+		return softmax;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Softmax2d createSoftmax2d() {
+		Softmax2dImpl softmax2d = new Softmax2dImpl();
+		return softmax2d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public LogSoftmax createLogSoftmax() {
+		LogSoftmaxImpl logSoftmax = new LogSoftmaxImpl();
+		return logSoftmax;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public AdaptiveLogSoftmaxWithLoss createAdaptiveLogSoftmaxWithLoss() {
+		AdaptiveLogSoftmaxWithLossImpl adaptiveLogSoftmaxWithLoss = new AdaptiveLogSoftmaxWithLossImpl();
+		return adaptiveLogSoftmaxWithLoss;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public SoftMinMaxActivationsPackage getSoftMinMaxActivationsPackage() {
+		return (SoftMinMaxActivationsPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static SoftMinMaxActivationsPackage getPackage() {
+		return SoftMinMaxActivationsPackage.eINSTANCE;
+	}
+
+} //SoftMinMaxActivationsFactoryImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/impl/SoftMinMaxActivationsPackageImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/impl/SoftMinMaxActivationsPackageImpl.java
new file mode 100644
index 0000000..c0c8e51
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/impl/SoftMinMaxActivationsPackageImpl.java
@@ -0,0 +1,569 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.AIMLPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.Layer_weight_regularizersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModulePackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.AdaptiveLogSoftmaxWithLoss;
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.LogSoftmax;
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMax;
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsFactory;
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMax_1;
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.Softmax;
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.Softmax2d;
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.Softmin;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.DatatypesPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl.DatatypesPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.impl.AIMLPackageImpl;
+
+import org.eclipse.uml2.types.TypesPackage;
+
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class SoftMinMaxActivationsPackageImpl extends EPackageImpl implements SoftMinMaxActivationsPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass softMinMaxEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass softMinMax_1EClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass softminEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass softmaxEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass softmax2dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass logSoftmaxEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass adaptiveLogSoftmaxWithLossEClass = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private SoftMinMaxActivationsPackageImpl() {
+		super(eNS_URI, SoftMinMaxActivationsFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>This method is used to initialize {@link SoftMinMaxActivationsPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static SoftMinMaxActivationsPackage init() {
+		if (isInited) return (SoftMinMaxActivationsPackage)EPackage.Registry.INSTANCE.getEPackage(SoftMinMaxActivationsPackage.eNS_URI);
+
+		// Obtain or create and register package
+		Object registeredSoftMinMaxActivationsPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		SoftMinMaxActivationsPackageImpl theSoftMinMaxActivationsPackage = registeredSoftMinMaxActivationsPackage instanceof SoftMinMaxActivationsPackageImpl ? (SoftMinMaxActivationsPackageImpl)registeredSoftMinMaxActivationsPackage : new SoftMinMaxActivationsPackageImpl();
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		EcorePackage.eINSTANCE.eClass();
+		TypesPackage.eINSTANCE.eClass();
+		UMLPackage.eINSTANCE.eClass();
+
+		// Obtain or create and register interdependencies
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AIMLPackage.eNS_URI);
+		AIMLPackageImpl theAIMLPackage = (AIMLPackageImpl)(registeredPackage instanceof AIMLPackageImpl ? registeredPackage : AIMLPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		ModulePackageImpl theModulePackage = (ModulePackageImpl)(registeredPackage instanceof ModulePackageImpl ? registeredPackage : ModulePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(TensorPackage.eNS_URI);
+		TensorPackageImpl theTensorPackage = (TensorPackageImpl)(registeredPackage instanceof TensorPackageImpl ? registeredPackage : TensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DatatypesPackage.eNS_URI);
+		DatatypesPackageImpl theDatatypesPackage = (DatatypesPackageImpl)(registeredPackage instanceof DatatypesPackageImpl ? registeredPackage : DatatypesPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Pooling_layersPackage.eNS_URI);
+		Pooling_layersPackageImpl thePooling_layersPackage = (Pooling_layersPackageImpl)(registeredPackage instanceof Pooling_layersPackageImpl ? registeredPackage : Pooling_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Convolution_layersPackage.eNS_URI);
+		Convolution_layersPackageImpl theConvolution_layersPackage = (Convolution_layersPackageImpl)(registeredPackage instanceof Convolution_layersPackageImpl ? registeredPackage : Convolution_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_constraintsPackage.eNS_URI);
+		Layer_weight_constraintsPackageImpl theLayer_weight_constraintsPackage = (Layer_weight_constraintsPackageImpl)(registeredPackage instanceof Layer_weight_constraintsPackageImpl ? registeredPackage : Layer_weight_constraintsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Padding_layersPackage.eNS_URI);
+		Padding_layersPackageImpl thePadding_layersPackage = (Padding_layersPackageImpl)(registeredPackage instanceof Padding_layersPackageImpl ? registeredPackage : Padding_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NonLinearActivationsPackage.eNS_URI);
+		NonLinearActivationsPackageImpl theNonLinearActivationsPackage = (NonLinearActivationsPackageImpl)(registeredPackage instanceof NonLinearActivationsPackageImpl ? registeredPackage : NonLinearActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Normalization_layersPackage.eNS_URI);
+		Normalization_layersPackageImpl theNormalization_layersPackage = (Normalization_layersPackageImpl)(registeredPackage instanceof Normalization_layersPackageImpl ? registeredPackage : Normalization_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Recurrent_layersPackage.eNS_URI);
+		Recurrent_layersPackageImpl theRecurrent_layersPackage = (Recurrent_layersPackageImpl)(registeredPackage instanceof Recurrent_layersPackageImpl ? registeredPackage : Recurrent_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Transformer_layersPackage.eNS_URI);
+		Transformer_layersPackageImpl theTransformer_layersPackage = (Transformer_layersPackageImpl)(registeredPackage instanceof Transformer_layersPackageImpl ? registeredPackage : Transformer_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Linear_layersPackage.eNS_URI);
+		Linear_layersPackageImpl theLinear_layersPackage = (Linear_layersPackageImpl)(registeredPackage instanceof Linear_layersPackageImpl ? registeredPackage : Linear_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Dropout_layersPackage.eNS_URI);
+		Dropout_layersPackageImpl theDropout_layersPackage = (Dropout_layersPackageImpl)(registeredPackage instanceof Dropout_layersPackageImpl ? registeredPackage : Dropout_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Sparse_layersPackage.eNS_URI);
+		Sparse_layersPackageImpl theSparse_layersPackage = (Sparse_layersPackageImpl)(registeredPackage instanceof Sparse_layersPackageImpl ? registeredPackage : Sparse_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Distance_functionsPackage.eNS_URI);
+		Distance_functionsPackageImpl theDistance_functionsPackage = (Distance_functionsPackageImpl)(registeredPackage instanceof Distance_functionsPackageImpl ? registeredPackage : Distance_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Loss_functionsPackage.eNS_URI);
+		Loss_functionsPackageImpl theLoss_functionsPackage = (Loss_functionsPackageImpl)(registeredPackage instanceof Loss_functionsPackageImpl ? registeredPackage : Loss_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Vision_layersPackage.eNS_URI);
+		Vision_layersPackageImpl theVision_layersPackage = (Vision_layersPackageImpl)(registeredPackage instanceof Vision_layersPackageImpl ? registeredPackage : Vision_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DataParallel_layersPackage.eNS_URI);
+		DataParallel_layersPackageImpl theDataParallel_layersPackage = (DataParallel_layersPackageImpl)(registeredPackage instanceof DataParallel_layersPackageImpl ? registeredPackage : DataParallel_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_regularizersPackage.eNS_URI);
+		Layer_weight_regularizersPackageImpl theLayer_weight_regularizersPackage = (Layer_weight_regularizersPackageImpl)(registeredPackage instanceof Layer_weight_regularizersPackageImpl ? registeredPackage : Layer_weight_regularizersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_initializersPackage.eNS_URI);
+		Layer_weight_initializersPackageImpl theLayer_weight_initializersPackage = (Layer_weight_initializersPackageImpl)(registeredPackage instanceof Layer_weight_initializersPackageImpl ? registeredPackage : Layer_weight_initializersPackage.eINSTANCE);
+
+		// Create package meta-data objects
+		theSoftMinMaxActivationsPackage.createPackageContents();
+		theAIMLPackage.createPackageContents();
+		theModulePackage.createPackageContents();
+		theTensorPackage.createPackageContents();
+		theDatatypesPackage.createPackageContents();
+		thePooling_layersPackage.createPackageContents();
+		theConvolution_layersPackage.createPackageContents();
+		theLayer_weight_constraintsPackage.createPackageContents();
+		thePadding_layersPackage.createPackageContents();
+		theNonLinearActivationsPackage.createPackageContents();
+		theNormalization_layersPackage.createPackageContents();
+		theRecurrent_layersPackage.createPackageContents();
+		theTransformer_layersPackage.createPackageContents();
+		theLinear_layersPackage.createPackageContents();
+		theDropout_layersPackage.createPackageContents();
+		theSparse_layersPackage.createPackageContents();
+		theDistance_functionsPackage.createPackageContents();
+		theLoss_functionsPackage.createPackageContents();
+		theVision_layersPackage.createPackageContents();
+		theDataParallel_layersPackage.createPackageContents();
+		theLayer_weight_regularizersPackage.createPackageContents();
+		theLayer_weight_initializersPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theSoftMinMaxActivationsPackage.initializePackageContents();
+		theAIMLPackage.initializePackageContents();
+		theModulePackage.initializePackageContents();
+		theTensorPackage.initializePackageContents();
+		theDatatypesPackage.initializePackageContents();
+		thePooling_layersPackage.initializePackageContents();
+		theConvolution_layersPackage.initializePackageContents();
+		theLayer_weight_constraintsPackage.initializePackageContents();
+		thePadding_layersPackage.initializePackageContents();
+		theNonLinearActivationsPackage.initializePackageContents();
+		theNormalization_layersPackage.initializePackageContents();
+		theRecurrent_layersPackage.initializePackageContents();
+		theTransformer_layersPackage.initializePackageContents();
+		theLinear_layersPackage.initializePackageContents();
+		theDropout_layersPackage.initializePackageContents();
+		theSparse_layersPackage.initializePackageContents();
+		theDistance_functionsPackage.initializePackageContents();
+		theLoss_functionsPackage.initializePackageContents();
+		theVision_layersPackage.initializePackageContents();
+		theDataParallel_layersPackage.initializePackageContents();
+		theLayer_weight_regularizersPackage.initializePackageContents();
+		theLayer_weight_initializersPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theSoftMinMaxActivationsPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(SoftMinMaxActivationsPackage.eNS_URI, theSoftMinMaxActivationsPackage);
+		return theSoftMinMaxActivationsPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getSoftMinMax() {
+		return softMinMaxEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getSoftMinMax_1() {
+		return softMinMax_1EClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getSoftMinMax_1_Dim() {
+		return (EAttribute)softMinMax_1EClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getSoftmin() {
+		return softminEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getSoftmax() {
+		return softmaxEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getSoftmax2d() {
+		return softmax2dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getLogSoftmax() {
+		return logSoftmaxEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getAdaptiveLogSoftmaxWithLoss() {
+		return adaptiveLogSoftmaxWithLossEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getAdaptiveLogSoftmaxWithLoss_In_features() {
+		return (EAttribute)adaptiveLogSoftmaxWithLossEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getAdaptiveLogSoftmaxWithLoss_N_classes() {
+		return (EAttribute)adaptiveLogSoftmaxWithLossEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getAdaptiveLogSoftmaxWithLoss_Cutoffs() {
+		return (EAttribute)adaptiveLogSoftmaxWithLossEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getAdaptiveLogSoftmaxWithLoss_Div_value() {
+		return (EAttribute)adaptiveLogSoftmaxWithLossEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getAdaptiveLogSoftmaxWithLoss_Head_biais() {
+		return (EAttribute)adaptiveLogSoftmaxWithLossEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public SoftMinMaxActivationsFactory getSoftMinMaxActivationsFactory() {
+		return (SoftMinMaxActivationsFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		softMinMaxEClass = createEClass(SOFT_MIN_MAX);
+
+		softMinMax_1EClass = createEClass(SOFT_MIN_MAX_1);
+		createEAttribute(softMinMax_1EClass, SOFT_MIN_MAX_1__DIM);
+
+		softminEClass = createEClass(SOFTMIN);
+
+		softmaxEClass = createEClass(SOFTMAX);
+
+		softmax2dEClass = createEClass(SOFTMAX2D);
+
+		logSoftmaxEClass = createEClass(LOG_SOFTMAX);
+
+		adaptiveLogSoftmaxWithLossEClass = createEClass(ADAPTIVE_LOG_SOFTMAX_WITH_LOSS);
+		createEAttribute(adaptiveLogSoftmaxWithLossEClass, ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__IN_FEATURES);
+		createEAttribute(adaptiveLogSoftmaxWithLossEClass, ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__NCLASSES);
+		createEAttribute(adaptiveLogSoftmaxWithLossEClass, ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__CUTOFFS);
+		createEAttribute(adaptiveLogSoftmaxWithLossEClass, ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__DIV_VALUE);
+		createEAttribute(adaptiveLogSoftmaxWithLossEClass, ADAPTIVE_LOG_SOFTMAX_WITH_LOSS__HEAD_BIAIS);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		ModulePackage theModulePackage = (ModulePackage)EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		softMinMaxEClass.getESuperTypes().add(theModulePackage.getModel());
+		softMinMax_1EClass.getESuperTypes().add(this.getSoftMinMax());
+		softminEClass.getESuperTypes().add(this.getSoftMinMax_1());
+		softmaxEClass.getESuperTypes().add(this.getSoftMinMax_1());
+		softmax2dEClass.getESuperTypes().add(this.getSoftMinMax());
+		logSoftmaxEClass.getESuperTypes().add(this.getSoftMinMax_1());
+		adaptiveLogSoftmaxWithLossEClass.getESuperTypes().add(this.getSoftMinMax());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(softMinMaxEClass, SoftMinMax.class, "SoftMinMax", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(softMinMax_1EClass, SoftMinMax_1.class, "SoftMinMax_1", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getSoftMinMax_1_Dim(), theTypesPackage.getInteger(), "dim", null, 0, 1, SoftMinMax_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(softminEClass, Softmin.class, "Softmin", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(softmaxEClass, Softmax.class, "Softmax", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(softmax2dEClass, Softmax2d.class, "Softmax2d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(logSoftmaxEClass, LogSoftmax.class, "LogSoftmax", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(adaptiveLogSoftmaxWithLossEClass, AdaptiveLogSoftmaxWithLoss.class, "AdaptiveLogSoftmaxWithLoss", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getAdaptiveLogSoftmaxWithLoss_In_features(), theTypesPackage.getInteger(), "in_features", null, 1, 1, AdaptiveLogSoftmaxWithLoss.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getAdaptiveLogSoftmaxWithLoss_N_classes(), theTypesPackage.getInteger(), "n_classes", null, 1, 1, AdaptiveLogSoftmaxWithLoss.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getAdaptiveLogSoftmaxWithLoss_Cutoffs(), theTypesPackage.getInteger(), "cutoffs", null, 0, -1, AdaptiveLogSoftmaxWithLoss.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getAdaptiveLogSoftmaxWithLoss_Div_value(), theTypesPackage.getReal(), "div_value", null, 0, 1, AdaptiveLogSoftmaxWithLoss.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getAdaptiveLogSoftmaxWithLoss_Head_biais(), theTypesPackage.getBoolean(), "head_biais", null, 0, 1, AdaptiveLogSoftmaxWithLoss.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+	}
+
+} //SoftMinMaxActivationsPackageImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/impl/SoftMinMaxImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/impl/SoftMinMaxImpl.java
new file mode 100644
index 0000000..89fd0c4
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/impl/SoftMinMaxImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModelImpl;
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMax;
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Soft Min Max</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public abstract class SoftMinMaxImpl extends ModelImpl implements SoftMinMax {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SoftMinMaxImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SoftMinMaxActivationsPackage.Literals.SOFT_MIN_MAX;
+	}
+
+} //SoftMinMaxImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/impl/SoftMinMax_1Impl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/impl/SoftMinMax_1Impl.java
new file mode 100644
index 0000000..94af71a
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/impl/SoftMinMax_1Impl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMax_1;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Soft Min Max 1</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMax_1Impl#getDim <em>Dim</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class SoftMinMax_1Impl extends SoftMinMaxImpl implements SoftMinMax_1 {
+	/**
+	 * The default value of the '{@link #getDim() <em>Dim</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDim()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int DIM_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getDim() <em>Dim</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDim()
+	 * @generated
+	 * @ordered
+	 */
+	protected int dim = DIM_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SoftMinMax_1Impl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SoftMinMaxActivationsPackage.Literals.SOFT_MIN_MAX_1;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getDim() {
+		return dim;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDim(int newDim) {
+		int oldDim = dim;
+		dim = newDim;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, SoftMinMaxActivationsPackage.SOFT_MIN_MAX_1__DIM, oldDim, dim));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case SoftMinMaxActivationsPackage.SOFT_MIN_MAX_1__DIM:
+				return getDim();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case SoftMinMaxActivationsPackage.SOFT_MIN_MAX_1__DIM:
+				setDim((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case SoftMinMaxActivationsPackage.SOFT_MIN_MAX_1__DIM:
+				setDim(DIM_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case SoftMinMaxActivationsPackage.SOFT_MIN_MAX_1__DIM:
+				return dim != DIM_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (dim: "); //$NON-NLS-1$
+		result.append(dim);
+		result.append(')');
+		return result.toString();
+	}
+
+} //SoftMinMax_1Impl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/impl/Softmax2dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/impl/Softmax2dImpl.java
new file mode 100644
index 0000000..d32b9da
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/impl/Softmax2dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.Softmax2d;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Softmax2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class Softmax2dImpl extends SoftMinMaxImpl implements Softmax2d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Softmax2dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SoftMinMaxActivationsPackage.Literals.SOFTMAX2D;
+	}
+
+} //Softmax2dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/impl/SoftmaxImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/impl/SoftmaxImpl.java
new file mode 100644
index 0000000..deebd09
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/impl/SoftmaxImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.Softmax;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Softmax</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class SoftmaxImpl extends SoftMinMax_1Impl implements Softmax {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SoftmaxImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SoftMinMaxActivationsPackage.Literals.SOFTMAX;
+	}
+
+} //SoftmaxImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/impl/SoftminImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/impl/SoftminImpl.java
new file mode 100644
index 0000000..9913586
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/impl/SoftminImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.Softmin;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Softmin</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class SoftminImpl extends SoftMinMax_1Impl implements Softmin {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SoftminImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return SoftMinMaxActivationsPackage.Literals.SOFTMIN;
+	}
+
+} //SoftminImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/util/SoftMinMaxActivationsAdapterFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/util/SoftMinMaxActivationsAdapterFactory.java
new file mode 100644
index 0000000..dd393b9
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/util/SoftMinMaxActivationsAdapterFactory.java
@@ -0,0 +1,255 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage
+ * @generated
+ */
+public class SoftMinMaxActivationsAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static SoftMinMaxActivationsPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SoftMinMaxActivationsAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = SoftMinMaxActivationsPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SoftMinMaxActivationsSwitch<Adapter> modelSwitch =
+		new SoftMinMaxActivationsSwitch<Adapter>() {
+			@Override
+			public Adapter caseSoftMinMax(SoftMinMax object) {
+				return createSoftMinMaxAdapter();
+			}
+			@Override
+			public Adapter caseSoftMinMax_1(SoftMinMax_1 object) {
+				return createSoftMinMax_1Adapter();
+			}
+			@Override
+			public Adapter caseSoftmin(Softmin object) {
+				return createSoftminAdapter();
+			}
+			@Override
+			public Adapter caseSoftmax(Softmax object) {
+				return createSoftmaxAdapter();
+			}
+			@Override
+			public Adapter caseSoftmax2d(Softmax2d object) {
+				return createSoftmax2dAdapter();
+			}
+			@Override
+			public Adapter caseLogSoftmax(LogSoftmax object) {
+				return createLogSoftmaxAdapter();
+			}
+			@Override
+			public Adapter caseAdaptiveLogSoftmaxWithLoss(AdaptiveLogSoftmaxWithLoss object) {
+				return createAdaptiveLogSoftmaxWithLossAdapter();
+			}
+			@Override
+			public Adapter caseModel(Model object) {
+				return createModelAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMax <em>Soft Min Max</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMax
+	 * @generated
+	 */
+	public Adapter createSoftMinMaxAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMax_1 <em>Soft Min Max 1</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMax_1
+	 * @generated
+	 */
+	public Adapter createSoftMinMax_1Adapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.Softmin <em>Softmin</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.Softmin
+	 * @generated
+	 */
+	public Adapter createSoftminAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.Softmax <em>Softmax</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.Softmax
+	 * @generated
+	 */
+	public Adapter createSoftmaxAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.Softmax2d <em>Softmax2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.Softmax2d
+	 * @generated
+	 */
+	public Adapter createSoftmax2dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.LogSoftmax <em>Log Softmax</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.LogSoftmax
+	 * @generated
+	 */
+	public Adapter createLogSoftmaxAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.AdaptiveLogSoftmaxWithLoss <em>Adaptive Log Softmax With Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.AdaptiveLogSoftmaxWithLoss
+	 * @generated
+	 */
+	public Adapter createAdaptiveLogSoftmaxWithLossAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model <em>Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.Model
+	 * @generated
+	 */
+	public Adapter createModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //SoftMinMaxActivationsAdapterFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/util/SoftMinMaxActivationsSwitch.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/util/SoftMinMaxActivationsSwitch.java
new file mode 100644
index 0000000..6ccd455
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/SoftMinMaxActivations/util/SoftMinMaxActivationsSwitch.java
@@ -0,0 +1,276 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage
+ * @generated
+ */
+public class SoftMinMaxActivationsSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static SoftMinMaxActivationsPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public SoftMinMaxActivationsSwitch() {
+		if (modelPackage == null) {
+			modelPackage = SoftMinMaxActivationsPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case SoftMinMaxActivationsPackage.SOFT_MIN_MAX: {
+				SoftMinMax softMinMax = (SoftMinMax)theEObject;
+				T result = caseSoftMinMax(softMinMax);
+				if (result == null) result = caseModel(softMinMax);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SoftMinMaxActivationsPackage.SOFT_MIN_MAX_1: {
+				SoftMinMax_1 softMinMax_1 = (SoftMinMax_1)theEObject;
+				T result = caseSoftMinMax_1(softMinMax_1);
+				if (result == null) result = caseSoftMinMax(softMinMax_1);
+				if (result == null) result = caseModel(softMinMax_1);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SoftMinMaxActivationsPackage.SOFTMIN: {
+				Softmin softmin = (Softmin)theEObject;
+				T result = caseSoftmin(softmin);
+				if (result == null) result = caseSoftMinMax_1(softmin);
+				if (result == null) result = caseSoftMinMax(softmin);
+				if (result == null) result = caseModel(softmin);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SoftMinMaxActivationsPackage.SOFTMAX: {
+				Softmax softmax = (Softmax)theEObject;
+				T result = caseSoftmax(softmax);
+				if (result == null) result = caseSoftMinMax_1(softmax);
+				if (result == null) result = caseSoftMinMax(softmax);
+				if (result == null) result = caseModel(softmax);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SoftMinMaxActivationsPackage.SOFTMAX2D: {
+				Softmax2d softmax2d = (Softmax2d)theEObject;
+				T result = caseSoftmax2d(softmax2d);
+				if (result == null) result = caseSoftMinMax(softmax2d);
+				if (result == null) result = caseModel(softmax2d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SoftMinMaxActivationsPackage.LOG_SOFTMAX: {
+				LogSoftmax logSoftmax = (LogSoftmax)theEObject;
+				T result = caseLogSoftmax(logSoftmax);
+				if (result == null) result = caseSoftMinMax_1(logSoftmax);
+				if (result == null) result = caseSoftMinMax(logSoftmax);
+				if (result == null) result = caseModel(logSoftmax);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case SoftMinMaxActivationsPackage.ADAPTIVE_LOG_SOFTMAX_WITH_LOSS: {
+				AdaptiveLogSoftmaxWithLoss adaptiveLogSoftmaxWithLoss = (AdaptiveLogSoftmaxWithLoss)theEObject;
+				T result = caseAdaptiveLogSoftmaxWithLoss(adaptiveLogSoftmaxWithLoss);
+				if (result == null) result = caseSoftMinMax(adaptiveLogSoftmaxWithLoss);
+				if (result == null) result = caseModel(adaptiveLogSoftmaxWithLoss);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Soft Min Max</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Soft Min Max</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSoftMinMax(SoftMinMax object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Soft Min Max 1</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Soft Min Max 1</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSoftMinMax_1(SoftMinMax_1 object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Softmin</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Softmin</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSoftmin(Softmin object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Softmax</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Softmax</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSoftmax(Softmax object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Softmax2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Softmax2d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSoftmax2d(Softmax2d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Log Softmax</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Log Softmax</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLogSoftmax(LogSoftmax object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Adaptive Log Softmax With Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Adaptive Log Softmax With Loss</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseAdaptiveLogSoftmaxWithLoss(AdaptiveLogSoftmaxWithLoss object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseModel(Model object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //SoftMinMaxActivationsSwitch
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/Embedding.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/Embedding.java
new file mode 100644
index 0000000..0d3404e
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/Embedding.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Embedding</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Embedding#getPadding_idx <em>Padding idx</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage#getEmbedding()
+ * @model
+ * @generated
+ */
+public interface Embedding extends Sparse_layers {
+	/**
+	 * Returns the value of the '<em><b>Padding idx</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Padding idx</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Padding idx</em>' attribute.
+	 * @see #setPadding_idx(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage#getEmbedding_Padding_idx()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	int getPadding_idx();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Embedding#getPadding_idx <em>Padding idx</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Padding idx</em>' attribute.
+	 * @see #getPadding_idx()
+	 * @generated
+	 */
+	void setPadding_idx(int value);
+
+} // Embedding
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/EmbeddingBag.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/EmbeddingBag.java
new file mode 100644
index 0000000..bddb236
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/EmbeddingBag.java
@@ -0,0 +1,85 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Embedding Bag</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.EmbeddingBag#getMode <em>Mode</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.EmbeddingBag#isInclude_last_offset <em>Include last offset</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage#getEmbeddingBag()
+ * @model
+ * @generated
+ */
+public interface EmbeddingBag extends Sparse_layers {
+	/**
+	 * Returns the value of the '<em><b>Mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Mode</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Mode</em>' attribute.
+	 * @see #setMode(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage#getEmbeddingBag_Mode()
+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+	 * @generated
+	 */
+	String getMode();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.EmbeddingBag#getMode <em>Mode</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Mode</em>' attribute.
+	 * @see #getMode()
+	 * @generated
+	 */
+	void setMode(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Include last offset</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Include last offset</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Include last offset</em>' attribute.
+	 * @see #setInclude_last_offset(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage#getEmbeddingBag_Include_last_offset()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isInclude_last_offset();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.EmbeddingBag#isInclude_last_offset <em>Include last offset</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Include last offset</em>' attribute.
+	 * @see #isInclude_last_offset()
+	 * @generated
+	 */
+	void setInclude_last_offset(boolean value);
+
+} // EmbeddingBag
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/Sparse_layers.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/Sparse_layers.java
new file mode 100644
index 0000000..20a4f2a
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/Sparse_layers.java
@@ -0,0 +1,195 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Sparse layers</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layers#getNum_embeddings <em>Num embeddings</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layers#getEmbedding_dim <em>Embedding dim</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layers#getMax_norm <em>Max norm</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layers#getNorm_type <em>Norm type</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layers#isSparse <em>Sparse</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layers#isScale_grad_by_freq <em>Scale grad by freq</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage#getSparse_layers()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Sparse_layers extends Model {
+	/**
+	 * Returns the value of the '<em><b>Num embeddings</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Num embeddings</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Num embeddings</em>' attribute.
+	 * @see #setNum_embeddings(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage#getSparse_layers_Num_embeddings()
+	 * @model dataType="org.eclipse.uml2.types.Integer" required="true" ordered="false"
+	 * @generated
+	 */
+	int getNum_embeddings();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layers#getNum_embeddings <em>Num embeddings</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Num embeddings</em>' attribute.
+	 * @see #getNum_embeddings()
+	 * @generated
+	 */
+	void setNum_embeddings(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Embedding dim</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Embedding dim</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Embedding dim</em>' attribute.
+	 * @see #setEmbedding_dim(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage#getSparse_layers_Embedding_dim()
+	 * @model dataType="org.eclipse.uml2.types.Integer" required="true" ordered="false"
+	 * @generated
+	 */
+	int getEmbedding_dim();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layers#getEmbedding_dim <em>Embedding dim</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Embedding dim</em>' attribute.
+	 * @see #getEmbedding_dim()
+	 * @generated
+	 */
+	void setEmbedding_dim(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Max norm</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Max norm</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Max norm</em>' attribute.
+	 * @see #setMax_norm(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage#getSparse_layers_Max_norm()
+	 * @model dataType="org.eclipse.uml2.types.Real" ordered="false"
+	 * @generated
+	 */
+	double getMax_norm();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layers#getMax_norm <em>Max norm</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Max norm</em>' attribute.
+	 * @see #getMax_norm()
+	 * @generated
+	 */
+	void setMax_norm(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Norm type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Norm type</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Norm type</em>' attribute.
+	 * @see #setNorm_type(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage#getSparse_layers_Norm_type()
+	 * @model dataType="org.eclipse.uml2.types.Real" ordered="false"
+	 *        annotation="http://www.eclipse.org/uml2/2.0.0/UML originalName='norm_type '"
+	 * @generated
+	 */
+	double getNorm_type();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layers#getNorm_type <em>Norm type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Norm type</em>' attribute.
+	 * @see #getNorm_type()
+	 * @generated
+	 */
+	void setNorm_type(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Sparse</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Sparse</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Sparse</em>' attribute.
+	 * @see #setSparse(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage#getSparse_layers_Sparse()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isSparse();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layers#isSparse <em>Sparse</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Sparse</em>' attribute.
+	 * @see #isSparse()
+	 * @generated
+	 */
+	void setSparse(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Scale grad by freq</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Scale grad by freq</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Scale grad by freq</em>' attribute.
+	 * @see #setScale_grad_by_freq(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage#getSparse_layers_Scale_grad_by_freq()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isScale_grad_by_freq();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layers#isScale_grad_by_freq <em>Scale grad by freq</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Scale grad by freq</em>' attribute.
+	 * @see #isScale_grad_by_freq()
+	 * @generated
+	 */
+	void setScale_grad_by_freq(boolean value);
+
+} // Sparse_layers
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/Sparse_layersFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/Sparse_layersFactory.java
new file mode 100644
index 0000000..dcb6bc3
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/Sparse_layersFactory.java
@@ -0,0 +1,60 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage
+ * @generated
+ */
+public interface Sparse_layersFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	Sparse_layersFactory eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Embedding</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Embedding</em>'.
+	 * @generated
+	 */
+	Embedding createEmbedding();
+
+	/**
+	 * Returns a new object of class '<em>Embedding Bag</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Embedding Bag</em>'.
+	 * @generated
+	 */
+	EmbeddingBag createEmbeddingBag();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	Sparse_layersPackage getSparse_layersPackage();
+
+} //Sparse_layersFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/Sparse_layersPackage.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/Sparse_layersPackage.java
new file mode 100644
index 0000000..c7d281e
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/Sparse_layersPackage.java
@@ -0,0 +1,788 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface Sparse_layersPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "Sparse_layers"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://www.eclipse.org/papyrus/AIML/sparse/1"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "AIML.Sparse_layers"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	Sparse_layersPackage eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersImpl <em>Sparse layers</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersPackageImpl#getSparse_layers()
+	 * @generated
+	 */
+	int SPARSE_LAYERS = 0;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SPARSE_LAYERS__BASE_CLASS = ModulePackage.MODEL__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SPARSE_LAYERS__NAME = ModulePackage.MODEL__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SPARSE_LAYERS__DATA = ModulePackage.MODEL__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SPARSE_LAYERS__REQUIRES_GRAD = ModulePackage.MODEL__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SPARSE_LAYERS__SUB_MODULE = ModulePackage.MODEL__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SPARSE_LAYERS__OPTIMIZER = ModulePackage.MODEL__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SPARSE_LAYERS__LOSS = ModulePackage.MODEL__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Num embeddings</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SPARSE_LAYERS__NUM_EMBEDDINGS = ModulePackage.MODEL_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Embedding dim</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SPARSE_LAYERS__EMBEDDING_DIM = ModulePackage.MODEL_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Max norm</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SPARSE_LAYERS__MAX_NORM = ModulePackage.MODEL_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Norm type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SPARSE_LAYERS__NORM_TYPE = ModulePackage.MODEL_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Sparse</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SPARSE_LAYERS__SPARSE = ModulePackage.MODEL_FEATURE_COUNT + 4;
+
+	/**
+	 * The feature id for the '<em><b>Scale grad by freq</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SPARSE_LAYERS__SCALE_GRAD_BY_FREQ = ModulePackage.MODEL_FEATURE_COUNT + 5;
+
+	/**
+	 * The number of structural features of the '<em>Sparse layers</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SPARSE_LAYERS_FEATURE_COUNT = ModulePackage.MODEL_FEATURE_COUNT + 6;
+
+	/**
+	 * The number of operations of the '<em>Sparse layers</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int SPARSE_LAYERS_OPERATION_COUNT = ModulePackage.MODEL_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.EmbeddingImpl <em>Embedding</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.EmbeddingImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersPackageImpl#getEmbedding()
+	 * @generated
+	 */
+	int EMBEDDING = 1;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMBEDDING__BASE_CLASS = SPARSE_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMBEDDING__NAME = SPARSE_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMBEDDING__DATA = SPARSE_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMBEDDING__REQUIRES_GRAD = SPARSE_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMBEDDING__SUB_MODULE = SPARSE_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMBEDDING__OPTIMIZER = SPARSE_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMBEDDING__LOSS = SPARSE_LAYERS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Num embeddings</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMBEDDING__NUM_EMBEDDINGS = SPARSE_LAYERS__NUM_EMBEDDINGS;
+
+	/**
+	 * The feature id for the '<em><b>Embedding dim</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMBEDDING__EMBEDDING_DIM = SPARSE_LAYERS__EMBEDDING_DIM;
+
+	/**
+	 * The feature id for the '<em><b>Max norm</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMBEDDING__MAX_NORM = SPARSE_LAYERS__MAX_NORM;
+
+	/**
+	 * The feature id for the '<em><b>Norm type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMBEDDING__NORM_TYPE = SPARSE_LAYERS__NORM_TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Sparse</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMBEDDING__SPARSE = SPARSE_LAYERS__SPARSE;
+
+	/**
+	 * The feature id for the '<em><b>Scale grad by freq</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMBEDDING__SCALE_GRAD_BY_FREQ = SPARSE_LAYERS__SCALE_GRAD_BY_FREQ;
+
+	/**
+	 * The feature id for the '<em><b>Padding idx</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMBEDDING__PADDING_IDX = SPARSE_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Embedding</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMBEDDING_FEATURE_COUNT = SPARSE_LAYERS_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Embedding</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMBEDDING_OPERATION_COUNT = SPARSE_LAYERS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.EmbeddingBagImpl <em>Embedding Bag</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.EmbeddingBagImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersPackageImpl#getEmbeddingBag()
+	 * @generated
+	 */
+	int EMBEDDING_BAG = 2;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMBEDDING_BAG__BASE_CLASS = SPARSE_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMBEDDING_BAG__NAME = SPARSE_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMBEDDING_BAG__DATA = SPARSE_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMBEDDING_BAG__REQUIRES_GRAD = SPARSE_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMBEDDING_BAG__SUB_MODULE = SPARSE_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMBEDDING_BAG__OPTIMIZER = SPARSE_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMBEDDING_BAG__LOSS = SPARSE_LAYERS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Num embeddings</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMBEDDING_BAG__NUM_EMBEDDINGS = SPARSE_LAYERS__NUM_EMBEDDINGS;
+
+	/**
+	 * The feature id for the '<em><b>Embedding dim</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMBEDDING_BAG__EMBEDDING_DIM = SPARSE_LAYERS__EMBEDDING_DIM;
+
+	/**
+	 * The feature id for the '<em><b>Max norm</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMBEDDING_BAG__MAX_NORM = SPARSE_LAYERS__MAX_NORM;
+
+	/**
+	 * The feature id for the '<em><b>Norm type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMBEDDING_BAG__NORM_TYPE = SPARSE_LAYERS__NORM_TYPE;
+
+	/**
+	 * The feature id for the '<em><b>Sparse</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMBEDDING_BAG__SPARSE = SPARSE_LAYERS__SPARSE;
+
+	/**
+	 * The feature id for the '<em><b>Scale grad by freq</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMBEDDING_BAG__SCALE_GRAD_BY_FREQ = SPARSE_LAYERS__SCALE_GRAD_BY_FREQ;
+
+	/**
+	 * The feature id for the '<em><b>Mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMBEDDING_BAG__MODE = SPARSE_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Include last offset</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMBEDDING_BAG__INCLUDE_LAST_OFFSET = SPARSE_LAYERS_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Embedding Bag</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMBEDDING_BAG_FEATURE_COUNT = SPARSE_LAYERS_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Embedding Bag</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int EMBEDDING_BAG_OPERATION_COUNT = SPARSE_LAYERS_OPERATION_COUNT + 0;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layers <em>Sparse layers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Sparse layers</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layers
+	 * @generated
+	 */
+	EClass getSparse_layers();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layers#getNum_embeddings <em>Num embeddings</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Num embeddings</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layers#getNum_embeddings()
+	 * @see #getSparse_layers()
+	 * @generated
+	 */
+	EAttribute getSparse_layers_Num_embeddings();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layers#getEmbedding_dim <em>Embedding dim</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Embedding dim</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layers#getEmbedding_dim()
+	 * @see #getSparse_layers()
+	 * @generated
+	 */
+	EAttribute getSparse_layers_Embedding_dim();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layers#getMax_norm <em>Max norm</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Max norm</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layers#getMax_norm()
+	 * @see #getSparse_layers()
+	 * @generated
+	 */
+	EAttribute getSparse_layers_Max_norm();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layers#getNorm_type <em>Norm type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Norm type</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layers#getNorm_type()
+	 * @see #getSparse_layers()
+	 * @generated
+	 */
+	EAttribute getSparse_layers_Norm_type();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layers#isSparse <em>Sparse</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Sparse</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layers#isSparse()
+	 * @see #getSparse_layers()
+	 * @generated
+	 */
+	EAttribute getSparse_layers_Sparse();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layers#isScale_grad_by_freq <em>Scale grad by freq</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Scale grad by freq</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layers#isScale_grad_by_freq()
+	 * @see #getSparse_layers()
+	 * @generated
+	 */
+	EAttribute getSparse_layers_Scale_grad_by_freq();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Embedding <em>Embedding</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Embedding</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Embedding
+	 * @generated
+	 */
+	EClass getEmbedding();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Embedding#getPadding_idx <em>Padding idx</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Padding idx</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Embedding#getPadding_idx()
+	 * @see #getEmbedding()
+	 * @generated
+	 */
+	EAttribute getEmbedding_Padding_idx();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.EmbeddingBag <em>Embedding Bag</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Embedding Bag</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.EmbeddingBag
+	 * @generated
+	 */
+	EClass getEmbeddingBag();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.EmbeddingBag#getMode <em>Mode</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Mode</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.EmbeddingBag#getMode()
+	 * @see #getEmbeddingBag()
+	 * @generated
+	 */
+	EAttribute getEmbeddingBag_Mode();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.EmbeddingBag#isInclude_last_offset <em>Include last offset</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Include last offset</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.EmbeddingBag#isInclude_last_offset()
+	 * @see #getEmbeddingBag()
+	 * @generated
+	 */
+	EAttribute getEmbeddingBag_Include_last_offset();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	Sparse_layersFactory getSparse_layersFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersImpl <em>Sparse layers</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersPackageImpl#getSparse_layers()
+		 * @generated
+		 */
+		EClass SPARSE_LAYERS = eINSTANCE.getSparse_layers();
+
+		/**
+		 * The meta object literal for the '<em><b>Num embeddings</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SPARSE_LAYERS__NUM_EMBEDDINGS = eINSTANCE.getSparse_layers_Num_embeddings();
+
+		/**
+		 * The meta object literal for the '<em><b>Embedding dim</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SPARSE_LAYERS__EMBEDDING_DIM = eINSTANCE.getSparse_layers_Embedding_dim();
+
+		/**
+		 * The meta object literal for the '<em><b>Max norm</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SPARSE_LAYERS__MAX_NORM = eINSTANCE.getSparse_layers_Max_norm();
+
+		/**
+		 * The meta object literal for the '<em><b>Norm type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SPARSE_LAYERS__NORM_TYPE = eINSTANCE.getSparse_layers_Norm_type();
+
+		/**
+		 * The meta object literal for the '<em><b>Sparse</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SPARSE_LAYERS__SPARSE = eINSTANCE.getSparse_layers_Sparse();
+
+		/**
+		 * The meta object literal for the '<em><b>Scale grad by freq</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute SPARSE_LAYERS__SCALE_GRAD_BY_FREQ = eINSTANCE.getSparse_layers_Scale_grad_by_freq();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.EmbeddingImpl <em>Embedding</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.EmbeddingImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersPackageImpl#getEmbedding()
+		 * @generated
+		 */
+		EClass EMBEDDING = eINSTANCE.getEmbedding();
+
+		/**
+		 * The meta object literal for the '<em><b>Padding idx</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EMBEDDING__PADDING_IDX = eINSTANCE.getEmbedding_Padding_idx();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.EmbeddingBagImpl <em>Embedding Bag</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.EmbeddingBagImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersPackageImpl#getEmbeddingBag()
+		 * @generated
+		 */
+		EClass EMBEDDING_BAG = eINSTANCE.getEmbeddingBag();
+
+		/**
+		 * The meta object literal for the '<em><b>Mode</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EMBEDDING_BAG__MODE = eINSTANCE.getEmbeddingBag_Mode();
+
+		/**
+		 * The meta object literal for the '<em><b>Include last offset</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute EMBEDDING_BAG__INCLUDE_LAST_OFFSET = eINSTANCE.getEmbeddingBag_Include_last_offset();
+
+	}
+
+} //Sparse_layersPackage
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/impl/EmbeddingBagImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/impl/EmbeddingBagImpl.java
new file mode 100644
index 0000000..bcb85b1
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/impl/EmbeddingBagImpl.java
@@ -0,0 +1,229 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.EmbeddingBag;
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Embedding Bag</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.EmbeddingBagImpl#getMode <em>Mode</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.EmbeddingBagImpl#isInclude_last_offset <em>Include last offset</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class EmbeddingBagImpl extends Sparse_layersImpl implements EmbeddingBag {
+	/**
+	 * The default value of the '{@link #getMode() <em>Mode</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMode()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MODE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMode() <em>Mode</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMode()
+	 * @generated
+	 * @ordered
+	 */
+	protected String mode = MODE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isInclude_last_offset() <em>Include last offset</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isInclude_last_offset()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean INCLUDE_LAST_OFFSET_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isInclude_last_offset() <em>Include last offset</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isInclude_last_offset()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean include_last_offset = INCLUDE_LAST_OFFSET_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EmbeddingBagImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Sparse_layersPackage.Literals.EMBEDDING_BAG;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getMode() {
+		return mode;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setMode(String newMode) {
+		String oldMode = mode;
+		mode = newMode;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Sparse_layersPackage.EMBEDDING_BAG__MODE, oldMode, mode));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isInclude_last_offset() {
+		return include_last_offset;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setInclude_last_offset(boolean newInclude_last_offset) {
+		boolean oldInclude_last_offset = include_last_offset;
+		include_last_offset = newInclude_last_offset;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Sparse_layersPackage.EMBEDDING_BAG__INCLUDE_LAST_OFFSET, oldInclude_last_offset, include_last_offset));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Sparse_layersPackage.EMBEDDING_BAG__MODE:
+				return getMode();
+			case Sparse_layersPackage.EMBEDDING_BAG__INCLUDE_LAST_OFFSET:
+				return isInclude_last_offset();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Sparse_layersPackage.EMBEDDING_BAG__MODE:
+				setMode((String)newValue);
+				return;
+			case Sparse_layersPackage.EMBEDDING_BAG__INCLUDE_LAST_OFFSET:
+				setInclude_last_offset((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Sparse_layersPackage.EMBEDDING_BAG__MODE:
+				setMode(MODE_EDEFAULT);
+				return;
+			case Sparse_layersPackage.EMBEDDING_BAG__INCLUDE_LAST_OFFSET:
+				setInclude_last_offset(INCLUDE_LAST_OFFSET_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Sparse_layersPackage.EMBEDDING_BAG__MODE:
+				return MODE_EDEFAULT == null ? mode != null : !MODE_EDEFAULT.equals(mode);
+			case Sparse_layersPackage.EMBEDDING_BAG__INCLUDE_LAST_OFFSET:
+				return include_last_offset != INCLUDE_LAST_OFFSET_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (mode: "); //$NON-NLS-1$
+		result.append(mode);
+		result.append(", include_last_offset: "); //$NON-NLS-1$
+		result.append(include_last_offset);
+		result.append(')');
+		return result.toString();
+	}
+
+} //EmbeddingBagImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/impl/EmbeddingImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/impl/EmbeddingImpl.java
new file mode 100644
index 0000000..2373be9
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/impl/EmbeddingImpl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Embedding;
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Embedding</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.EmbeddingImpl#getPadding_idx <em>Padding idx</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class EmbeddingImpl extends Sparse_layersImpl implements Embedding {
+	/**
+	 * The default value of the '{@link #getPadding_idx() <em>Padding idx</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPadding_idx()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int PADDING_IDX_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getPadding_idx() <em>Padding idx</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getPadding_idx()
+	 * @generated
+	 * @ordered
+	 */
+	protected int padding_idx = PADDING_IDX_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EmbeddingImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Sparse_layersPackage.Literals.EMBEDDING;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getPadding_idx() {
+		return padding_idx;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setPadding_idx(int newPadding_idx) {
+		int oldPadding_idx = padding_idx;
+		padding_idx = newPadding_idx;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Sparse_layersPackage.EMBEDDING__PADDING_IDX, oldPadding_idx, padding_idx));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Sparse_layersPackage.EMBEDDING__PADDING_IDX:
+				return getPadding_idx();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Sparse_layersPackage.EMBEDDING__PADDING_IDX:
+				setPadding_idx((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Sparse_layersPackage.EMBEDDING__PADDING_IDX:
+				setPadding_idx(PADDING_IDX_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Sparse_layersPackage.EMBEDDING__PADDING_IDX:
+				return padding_idx != PADDING_IDX_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (padding_idx: "); //$NON-NLS-1$
+		result.append(padding_idx);
+		result.append(')');
+		return result.toString();
+	}
+
+} //EmbeddingImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/impl/Sparse_layersFactoryImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/impl/Sparse_layersFactoryImpl.java
new file mode 100644
index 0000000..2c97e01
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/impl/Sparse_layersFactoryImpl.java
@@ -0,0 +1,118 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class Sparse_layersFactoryImpl extends EFactoryImpl implements Sparse_layersFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static Sparse_layersFactory init() {
+		try {
+			Sparse_layersFactory theSparse_layersFactory = (Sparse_layersFactory)EPackage.Registry.INSTANCE.getEFactory(Sparse_layersPackage.eNS_URI);
+			if (theSparse_layersFactory != null) {
+				return theSparse_layersFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new Sparse_layersFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Sparse_layersFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case Sparse_layersPackage.EMBEDDING: return createEmbedding();
+			case Sparse_layersPackage.EMBEDDING_BAG: return createEmbeddingBag();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Embedding createEmbedding() {
+		EmbeddingImpl embedding = new EmbeddingImpl();
+		return embedding;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EmbeddingBag createEmbeddingBag() {
+		EmbeddingBagImpl embeddingBag = new EmbeddingBagImpl();
+		return embeddingBag;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Sparse_layersPackage getSparse_layersPackage() {
+		return (Sparse_layersPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static Sparse_layersPackage getPackage() {
+		return Sparse_layersPackage.eINSTANCE;
+	}
+
+} //Sparse_layersFactoryImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/impl/Sparse_layersImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/impl/Sparse_layersImpl.java
new file mode 100644
index 0000000..1a9214a
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/impl/Sparse_layersImpl.java
@@ -0,0 +1,453 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModelImpl;
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layers;
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Sparse layers</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersImpl#getNum_embeddings <em>Num embeddings</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersImpl#getEmbedding_dim <em>Embedding dim</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersImpl#getMax_norm <em>Max norm</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersImpl#getNorm_type <em>Norm type</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersImpl#isSparse <em>Sparse</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersImpl#isScale_grad_by_freq <em>Scale grad by freq</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class Sparse_layersImpl extends ModelImpl implements Sparse_layers {
+	/**
+	 * The default value of the '{@link #getNum_embeddings() <em>Num embeddings</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNum_embeddings()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int NUM_EMBEDDINGS_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getNum_embeddings() <em>Num embeddings</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNum_embeddings()
+	 * @generated
+	 * @ordered
+	 */
+	protected int num_embeddings = NUM_EMBEDDINGS_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getEmbedding_dim() <em>Embedding dim</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEmbedding_dim()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int EMBEDDING_DIM_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getEmbedding_dim() <em>Embedding dim</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEmbedding_dim()
+	 * @generated
+	 * @ordered
+	 */
+	protected int embedding_dim = EMBEDDING_DIM_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getMax_norm() <em>Max norm</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMax_norm()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double MAX_NORM_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getMax_norm() <em>Max norm</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMax_norm()
+	 * @generated
+	 * @ordered
+	 */
+	protected double max_norm = MAX_NORM_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getNorm_type() <em>Norm type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNorm_type()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double NORM_TYPE_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getNorm_type() <em>Norm type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNorm_type()
+	 * @generated
+	 * @ordered
+	 */
+	protected double norm_type = NORM_TYPE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isSparse() <em>Sparse</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSparse()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean SPARSE_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isSparse() <em>Sparse</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isSparse()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean sparse = SPARSE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isScale_grad_by_freq() <em>Scale grad by freq</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isScale_grad_by_freq()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean SCALE_GRAD_BY_FREQ_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isScale_grad_by_freq() <em>Scale grad by freq</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isScale_grad_by_freq()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean scale_grad_by_freq = SCALE_GRAD_BY_FREQ_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Sparse_layersImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Sparse_layersPackage.Literals.SPARSE_LAYERS;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getNum_embeddings() {
+		return num_embeddings;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setNum_embeddings(int newNum_embeddings) {
+		int oldNum_embeddings = num_embeddings;
+		num_embeddings = newNum_embeddings;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Sparse_layersPackage.SPARSE_LAYERS__NUM_EMBEDDINGS, oldNum_embeddings, num_embeddings));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getEmbedding_dim() {
+		return embedding_dim;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setEmbedding_dim(int newEmbedding_dim) {
+		int oldEmbedding_dim = embedding_dim;
+		embedding_dim = newEmbedding_dim;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Sparse_layersPackage.SPARSE_LAYERS__EMBEDDING_DIM, oldEmbedding_dim, embedding_dim));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getMax_norm() {
+		return max_norm;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setMax_norm(double newMax_norm) {
+		double oldMax_norm = max_norm;
+		max_norm = newMax_norm;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Sparse_layersPackage.SPARSE_LAYERS__MAX_NORM, oldMax_norm, max_norm));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getNorm_type() {
+		return norm_type;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setNorm_type(double newNorm_type) {
+		double oldNorm_type = norm_type;
+		norm_type = newNorm_type;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Sparse_layersPackage.SPARSE_LAYERS__NORM_TYPE, oldNorm_type, norm_type));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isSparse() {
+		return sparse;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setSparse(boolean newSparse) {
+		boolean oldSparse = sparse;
+		sparse = newSparse;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Sparse_layersPackage.SPARSE_LAYERS__SPARSE, oldSparse, sparse));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isScale_grad_by_freq() {
+		return scale_grad_by_freq;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setScale_grad_by_freq(boolean newScale_grad_by_freq) {
+		boolean oldScale_grad_by_freq = scale_grad_by_freq;
+		scale_grad_by_freq = newScale_grad_by_freq;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Sparse_layersPackage.SPARSE_LAYERS__SCALE_GRAD_BY_FREQ, oldScale_grad_by_freq, scale_grad_by_freq));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Sparse_layersPackage.SPARSE_LAYERS__NUM_EMBEDDINGS:
+				return getNum_embeddings();
+			case Sparse_layersPackage.SPARSE_LAYERS__EMBEDDING_DIM:
+				return getEmbedding_dim();
+			case Sparse_layersPackage.SPARSE_LAYERS__MAX_NORM:
+				return getMax_norm();
+			case Sparse_layersPackage.SPARSE_LAYERS__NORM_TYPE:
+				return getNorm_type();
+			case Sparse_layersPackage.SPARSE_LAYERS__SPARSE:
+				return isSparse();
+			case Sparse_layersPackage.SPARSE_LAYERS__SCALE_GRAD_BY_FREQ:
+				return isScale_grad_by_freq();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Sparse_layersPackage.SPARSE_LAYERS__NUM_EMBEDDINGS:
+				setNum_embeddings((Integer)newValue);
+				return;
+			case Sparse_layersPackage.SPARSE_LAYERS__EMBEDDING_DIM:
+				setEmbedding_dim((Integer)newValue);
+				return;
+			case Sparse_layersPackage.SPARSE_LAYERS__MAX_NORM:
+				setMax_norm((Double)newValue);
+				return;
+			case Sparse_layersPackage.SPARSE_LAYERS__NORM_TYPE:
+				setNorm_type((Double)newValue);
+				return;
+			case Sparse_layersPackage.SPARSE_LAYERS__SPARSE:
+				setSparse((Boolean)newValue);
+				return;
+			case Sparse_layersPackage.SPARSE_LAYERS__SCALE_GRAD_BY_FREQ:
+				setScale_grad_by_freq((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Sparse_layersPackage.SPARSE_LAYERS__NUM_EMBEDDINGS:
+				setNum_embeddings(NUM_EMBEDDINGS_EDEFAULT);
+				return;
+			case Sparse_layersPackage.SPARSE_LAYERS__EMBEDDING_DIM:
+				setEmbedding_dim(EMBEDDING_DIM_EDEFAULT);
+				return;
+			case Sparse_layersPackage.SPARSE_LAYERS__MAX_NORM:
+				setMax_norm(MAX_NORM_EDEFAULT);
+				return;
+			case Sparse_layersPackage.SPARSE_LAYERS__NORM_TYPE:
+				setNorm_type(NORM_TYPE_EDEFAULT);
+				return;
+			case Sparse_layersPackage.SPARSE_LAYERS__SPARSE:
+				setSparse(SPARSE_EDEFAULT);
+				return;
+			case Sparse_layersPackage.SPARSE_LAYERS__SCALE_GRAD_BY_FREQ:
+				setScale_grad_by_freq(SCALE_GRAD_BY_FREQ_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Sparse_layersPackage.SPARSE_LAYERS__NUM_EMBEDDINGS:
+				return num_embeddings != NUM_EMBEDDINGS_EDEFAULT;
+			case Sparse_layersPackage.SPARSE_LAYERS__EMBEDDING_DIM:
+				return embedding_dim != EMBEDDING_DIM_EDEFAULT;
+			case Sparse_layersPackage.SPARSE_LAYERS__MAX_NORM:
+				return max_norm != MAX_NORM_EDEFAULT;
+			case Sparse_layersPackage.SPARSE_LAYERS__NORM_TYPE:
+				return norm_type != NORM_TYPE_EDEFAULT;
+			case Sparse_layersPackage.SPARSE_LAYERS__SPARSE:
+				return sparse != SPARSE_EDEFAULT;
+			case Sparse_layersPackage.SPARSE_LAYERS__SCALE_GRAD_BY_FREQ:
+				return scale_grad_by_freq != SCALE_GRAD_BY_FREQ_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (num_embeddings: "); //$NON-NLS-1$
+		result.append(num_embeddings);
+		result.append(", embedding_dim: "); //$NON-NLS-1$
+		result.append(embedding_dim);
+		result.append(", max_norm: "); //$NON-NLS-1$
+		result.append(max_norm);
+		result.append(", norm_type: "); //$NON-NLS-1$
+		result.append(norm_type);
+		result.append(", sparse: "); //$NON-NLS-1$
+		result.append(sparse);
+		result.append(", scale_grad_by_freq: "); //$NON-NLS-1$
+		result.append(scale_grad_by_freq);
+		result.append(')');
+		return result.toString();
+	}
+
+} //Sparse_layersImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/impl/Sparse_layersPackageImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/impl/Sparse_layersPackageImpl.java
new file mode 100644
index 0000000..04fd193
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/impl/Sparse_layersPackageImpl.java
@@ -0,0 +1,533 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.AIMLPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.Layer_weight_regularizersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModulePackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Embedding;
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.EmbeddingBag;
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layers;
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersFactory;
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.DatatypesPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl.DatatypesPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.impl.AIMLPackageImpl;
+
+import org.eclipse.uml2.types.TypesPackage;
+
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class Sparse_layersPackageImpl extends EPackageImpl implements Sparse_layersPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass sparse_layersEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass embeddingEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass embeddingBagEClass = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private Sparse_layersPackageImpl() {
+		super(eNS_URI, Sparse_layersFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>This method is used to initialize {@link Sparse_layersPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static Sparse_layersPackage init() {
+		if (isInited) return (Sparse_layersPackage)EPackage.Registry.INSTANCE.getEPackage(Sparse_layersPackage.eNS_URI);
+
+		// Obtain or create and register package
+		Object registeredSparse_layersPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		Sparse_layersPackageImpl theSparse_layersPackage = registeredSparse_layersPackage instanceof Sparse_layersPackageImpl ? (Sparse_layersPackageImpl)registeredSparse_layersPackage : new Sparse_layersPackageImpl();
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		EcorePackage.eINSTANCE.eClass();
+		TypesPackage.eINSTANCE.eClass();
+		UMLPackage.eINSTANCE.eClass();
+
+		// Obtain or create and register interdependencies
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AIMLPackage.eNS_URI);
+		AIMLPackageImpl theAIMLPackage = (AIMLPackageImpl)(registeredPackage instanceof AIMLPackageImpl ? registeredPackage : AIMLPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		ModulePackageImpl theModulePackage = (ModulePackageImpl)(registeredPackage instanceof ModulePackageImpl ? registeredPackage : ModulePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(TensorPackage.eNS_URI);
+		TensorPackageImpl theTensorPackage = (TensorPackageImpl)(registeredPackage instanceof TensorPackageImpl ? registeredPackage : TensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DatatypesPackage.eNS_URI);
+		DatatypesPackageImpl theDatatypesPackage = (DatatypesPackageImpl)(registeredPackage instanceof DatatypesPackageImpl ? registeredPackage : DatatypesPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Pooling_layersPackage.eNS_URI);
+		Pooling_layersPackageImpl thePooling_layersPackage = (Pooling_layersPackageImpl)(registeredPackage instanceof Pooling_layersPackageImpl ? registeredPackage : Pooling_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Convolution_layersPackage.eNS_URI);
+		Convolution_layersPackageImpl theConvolution_layersPackage = (Convolution_layersPackageImpl)(registeredPackage instanceof Convolution_layersPackageImpl ? registeredPackage : Convolution_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_constraintsPackage.eNS_URI);
+		Layer_weight_constraintsPackageImpl theLayer_weight_constraintsPackage = (Layer_weight_constraintsPackageImpl)(registeredPackage instanceof Layer_weight_constraintsPackageImpl ? registeredPackage : Layer_weight_constraintsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Padding_layersPackage.eNS_URI);
+		Padding_layersPackageImpl thePadding_layersPackage = (Padding_layersPackageImpl)(registeredPackage instanceof Padding_layersPackageImpl ? registeredPackage : Padding_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NonLinearActivationsPackage.eNS_URI);
+		NonLinearActivationsPackageImpl theNonLinearActivationsPackage = (NonLinearActivationsPackageImpl)(registeredPackage instanceof NonLinearActivationsPackageImpl ? registeredPackage : NonLinearActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftMinMaxActivationsPackage.eNS_URI);
+		SoftMinMaxActivationsPackageImpl theSoftMinMaxActivationsPackage = (SoftMinMaxActivationsPackageImpl)(registeredPackage instanceof SoftMinMaxActivationsPackageImpl ? registeredPackage : SoftMinMaxActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Normalization_layersPackage.eNS_URI);
+		Normalization_layersPackageImpl theNormalization_layersPackage = (Normalization_layersPackageImpl)(registeredPackage instanceof Normalization_layersPackageImpl ? registeredPackage : Normalization_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Recurrent_layersPackage.eNS_URI);
+		Recurrent_layersPackageImpl theRecurrent_layersPackage = (Recurrent_layersPackageImpl)(registeredPackage instanceof Recurrent_layersPackageImpl ? registeredPackage : Recurrent_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Transformer_layersPackage.eNS_URI);
+		Transformer_layersPackageImpl theTransformer_layersPackage = (Transformer_layersPackageImpl)(registeredPackage instanceof Transformer_layersPackageImpl ? registeredPackage : Transformer_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Linear_layersPackage.eNS_URI);
+		Linear_layersPackageImpl theLinear_layersPackage = (Linear_layersPackageImpl)(registeredPackage instanceof Linear_layersPackageImpl ? registeredPackage : Linear_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Dropout_layersPackage.eNS_URI);
+		Dropout_layersPackageImpl theDropout_layersPackage = (Dropout_layersPackageImpl)(registeredPackage instanceof Dropout_layersPackageImpl ? registeredPackage : Dropout_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Distance_functionsPackage.eNS_URI);
+		Distance_functionsPackageImpl theDistance_functionsPackage = (Distance_functionsPackageImpl)(registeredPackage instanceof Distance_functionsPackageImpl ? registeredPackage : Distance_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Loss_functionsPackage.eNS_URI);
+		Loss_functionsPackageImpl theLoss_functionsPackage = (Loss_functionsPackageImpl)(registeredPackage instanceof Loss_functionsPackageImpl ? registeredPackage : Loss_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Vision_layersPackage.eNS_URI);
+		Vision_layersPackageImpl theVision_layersPackage = (Vision_layersPackageImpl)(registeredPackage instanceof Vision_layersPackageImpl ? registeredPackage : Vision_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DataParallel_layersPackage.eNS_URI);
+		DataParallel_layersPackageImpl theDataParallel_layersPackage = (DataParallel_layersPackageImpl)(registeredPackage instanceof DataParallel_layersPackageImpl ? registeredPackage : DataParallel_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_regularizersPackage.eNS_URI);
+		Layer_weight_regularizersPackageImpl theLayer_weight_regularizersPackage = (Layer_weight_regularizersPackageImpl)(registeredPackage instanceof Layer_weight_regularizersPackageImpl ? registeredPackage : Layer_weight_regularizersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_initializersPackage.eNS_URI);
+		Layer_weight_initializersPackageImpl theLayer_weight_initializersPackage = (Layer_weight_initializersPackageImpl)(registeredPackage instanceof Layer_weight_initializersPackageImpl ? registeredPackage : Layer_weight_initializersPackage.eINSTANCE);
+
+		// Create package meta-data objects
+		theSparse_layersPackage.createPackageContents();
+		theAIMLPackage.createPackageContents();
+		theModulePackage.createPackageContents();
+		theTensorPackage.createPackageContents();
+		theDatatypesPackage.createPackageContents();
+		thePooling_layersPackage.createPackageContents();
+		theConvolution_layersPackage.createPackageContents();
+		theLayer_weight_constraintsPackage.createPackageContents();
+		thePadding_layersPackage.createPackageContents();
+		theNonLinearActivationsPackage.createPackageContents();
+		theSoftMinMaxActivationsPackage.createPackageContents();
+		theNormalization_layersPackage.createPackageContents();
+		theRecurrent_layersPackage.createPackageContents();
+		theTransformer_layersPackage.createPackageContents();
+		theLinear_layersPackage.createPackageContents();
+		theDropout_layersPackage.createPackageContents();
+		theDistance_functionsPackage.createPackageContents();
+		theLoss_functionsPackage.createPackageContents();
+		theVision_layersPackage.createPackageContents();
+		theDataParallel_layersPackage.createPackageContents();
+		theLayer_weight_regularizersPackage.createPackageContents();
+		theLayer_weight_initializersPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theSparse_layersPackage.initializePackageContents();
+		theAIMLPackage.initializePackageContents();
+		theModulePackage.initializePackageContents();
+		theTensorPackage.initializePackageContents();
+		theDatatypesPackage.initializePackageContents();
+		thePooling_layersPackage.initializePackageContents();
+		theConvolution_layersPackage.initializePackageContents();
+		theLayer_weight_constraintsPackage.initializePackageContents();
+		thePadding_layersPackage.initializePackageContents();
+		theNonLinearActivationsPackage.initializePackageContents();
+		theSoftMinMaxActivationsPackage.initializePackageContents();
+		theNormalization_layersPackage.initializePackageContents();
+		theRecurrent_layersPackage.initializePackageContents();
+		theTransformer_layersPackage.initializePackageContents();
+		theLinear_layersPackage.initializePackageContents();
+		theDropout_layersPackage.initializePackageContents();
+		theDistance_functionsPackage.initializePackageContents();
+		theLoss_functionsPackage.initializePackageContents();
+		theVision_layersPackage.initializePackageContents();
+		theDataParallel_layersPackage.initializePackageContents();
+		theLayer_weight_regularizersPackage.initializePackageContents();
+		theLayer_weight_initializersPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theSparse_layersPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(Sparse_layersPackage.eNS_URI, theSparse_layersPackage);
+		return theSparse_layersPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getSparse_layers() {
+		return sparse_layersEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getSparse_layers_Num_embeddings() {
+		return (EAttribute)sparse_layersEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getSparse_layers_Embedding_dim() {
+		return (EAttribute)sparse_layersEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getSparse_layers_Max_norm() {
+		return (EAttribute)sparse_layersEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getSparse_layers_Norm_type() {
+		return (EAttribute)sparse_layersEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getSparse_layers_Sparse() {
+		return (EAttribute)sparse_layersEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getSparse_layers_Scale_grad_by_freq() {
+		return (EAttribute)sparse_layersEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getEmbedding() {
+		return embeddingEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getEmbedding_Padding_idx() {
+		return (EAttribute)embeddingEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getEmbeddingBag() {
+		return embeddingBagEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getEmbeddingBag_Mode() {
+		return (EAttribute)embeddingBagEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getEmbeddingBag_Include_last_offset() {
+		return (EAttribute)embeddingBagEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Sparse_layersFactory getSparse_layersFactory() {
+		return (Sparse_layersFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		sparse_layersEClass = createEClass(SPARSE_LAYERS);
+		createEAttribute(sparse_layersEClass, SPARSE_LAYERS__NUM_EMBEDDINGS);
+		createEAttribute(sparse_layersEClass, SPARSE_LAYERS__EMBEDDING_DIM);
+		createEAttribute(sparse_layersEClass, SPARSE_LAYERS__MAX_NORM);
+		createEAttribute(sparse_layersEClass, SPARSE_LAYERS__NORM_TYPE);
+		createEAttribute(sparse_layersEClass, SPARSE_LAYERS__SPARSE);
+		createEAttribute(sparse_layersEClass, SPARSE_LAYERS__SCALE_GRAD_BY_FREQ);
+
+		embeddingEClass = createEClass(EMBEDDING);
+		createEAttribute(embeddingEClass, EMBEDDING__PADDING_IDX);
+
+		embeddingBagEClass = createEClass(EMBEDDING_BAG);
+		createEAttribute(embeddingBagEClass, EMBEDDING_BAG__MODE);
+		createEAttribute(embeddingBagEClass, EMBEDDING_BAG__INCLUDE_LAST_OFFSET);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		ModulePackage theModulePackage = (ModulePackage)EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		sparse_layersEClass.getESuperTypes().add(theModulePackage.getModel());
+		embeddingEClass.getESuperTypes().add(this.getSparse_layers());
+		embeddingBagEClass.getESuperTypes().add(this.getSparse_layers());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(sparse_layersEClass, Sparse_layers.class, "Sparse_layers", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getSparse_layers_Num_embeddings(), theTypesPackage.getInteger(), "num_embeddings", null, 1, 1, Sparse_layers.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getSparse_layers_Embedding_dim(), theTypesPackage.getInteger(), "embedding_dim", null, 1, 1, Sparse_layers.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getSparse_layers_Max_norm(), theTypesPackage.getReal(), "max_norm", null, 0, 1, Sparse_layers.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getSparse_layers_Norm_type(), theTypesPackage.getReal(), "norm_type", null, 0, 1, Sparse_layers.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getSparse_layers_Sparse(), theTypesPackage.getBoolean(), "sparse", null, 0, 1, Sparse_layers.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getSparse_layers_Scale_grad_by_freq(), theTypesPackage.getBoolean(), "scale_grad_by_freq", null, 0, 1, Sparse_layers.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(embeddingEClass, Embedding.class, "Embedding", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getEmbedding_Padding_idx(), theTypesPackage.getInteger(), "padding_idx", null, 0, 1, Embedding.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(embeddingBagEClass, EmbeddingBag.class, "EmbeddingBag", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getEmbeddingBag_Mode(), theTypesPackage.getString(), "mode", null, 0, 1, EmbeddingBag.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getEmbeddingBag_Include_last_offset(), theTypesPackage.getBoolean(), "include_last_offset", null, 0, 1, EmbeddingBag.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		// Create annotations
+		// http://www.eclipse.org/uml2/2.0.0/UML
+		createUMLAnnotations();
+	}
+
+	/**
+	 * Initializes the annotations for <b>http://www.eclipse.org/uml2/2.0.0/UML</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createUMLAnnotations() {
+		String source = "http://www.eclipse.org/uml2/2.0.0/UML"; //$NON-NLS-1$
+		addAnnotation
+		  (getSparse_layers_Norm_type(),
+		   source,
+		   new String[] {
+			   "originalName", "norm_type " //$NON-NLS-1$ //$NON-NLS-2$
+		   });
+	}
+
+} //Sparse_layersPackageImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/util/Sparse_layersAdapterFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/util/Sparse_layersAdapterFactory.java
new file mode 100644
index 0000000..3bc0fc2
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/util/Sparse_layersAdapterFactory.java
@@ -0,0 +1,183 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage
+ * @generated
+ */
+public class Sparse_layersAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static Sparse_layersPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Sparse_layersAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = Sparse_layersPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Sparse_layersSwitch<Adapter> modelSwitch =
+		new Sparse_layersSwitch<Adapter>() {
+			@Override
+			public Adapter caseSparse_layers(Sparse_layers object) {
+				return createSparse_layersAdapter();
+			}
+			@Override
+			public Adapter caseEmbedding(Embedding object) {
+				return createEmbeddingAdapter();
+			}
+			@Override
+			public Adapter caseEmbeddingBag(EmbeddingBag object) {
+				return createEmbeddingBagAdapter();
+			}
+			@Override
+			public Adapter caseModel(Model object) {
+				return createModelAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layers <em>Sparse layers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layers
+	 * @generated
+	 */
+	public Adapter createSparse_layersAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Embedding <em>Embedding</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Embedding
+	 * @generated
+	 */
+	public Adapter createEmbeddingAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.EmbeddingBag <em>Embedding Bag</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.EmbeddingBag
+	 * @generated
+	 */
+	public Adapter createEmbeddingBagAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model <em>Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.Model
+	 * @generated
+	 */
+	public Adapter createModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //Sparse_layersAdapterFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/util/Sparse_layersSwitch.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/util/Sparse_layersSwitch.java
new file mode 100644
index 0000000..0b64cd1
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Sparse_layers/util/Sparse_layersSwitch.java
@@ -0,0 +1,181 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage
+ * @generated
+ */
+public class Sparse_layersSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static Sparse_layersPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Sparse_layersSwitch() {
+		if (modelPackage == null) {
+			modelPackage = Sparse_layersPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case Sparse_layersPackage.SPARSE_LAYERS: {
+				Sparse_layers sparse_layers = (Sparse_layers)theEObject;
+				T result = caseSparse_layers(sparse_layers);
+				if (result == null) result = caseModel(sparse_layers);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Sparse_layersPackage.EMBEDDING: {
+				Embedding embedding = (Embedding)theEObject;
+				T result = caseEmbedding(embedding);
+				if (result == null) result = caseSparse_layers(embedding);
+				if (result == null) result = caseModel(embedding);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Sparse_layersPackage.EMBEDDING_BAG: {
+				EmbeddingBag embeddingBag = (EmbeddingBag)theEObject;
+				T result = caseEmbeddingBag(embeddingBag);
+				if (result == null) result = caseSparse_layers(embeddingBag);
+				if (result == null) result = caseModel(embeddingBag);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Sparse layers</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Sparse layers</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSparse_layers(Sparse_layers object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Embedding</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Embedding</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseEmbedding(Embedding object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Embedding Bag</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Embedding Bag</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseEmbeddingBag(EmbeddingBag object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseModel(Model object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //Sparse_layersSwitch
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Tensor/EDType.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Tensor/EDType.java
new file mode 100644
index 0000000..258a56a
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Tensor/EDType.java
@@ -0,0 +1,379 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Tensor;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>ED Type</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage#getEDType()
+ * @model
+ * @generated
+ */
+public enum EDType implements Enumerator {
+	/**
+	 * The '<em><b>Float32</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #FLOAT32_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	FLOAT32(0, "float32", "float32"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Float64</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #FLOAT64_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	FLOAT64(1, "float64", "float64"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Float16</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #FLOAT16_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	FLOAT16(2, "float16", "float16"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Uint8</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #UINT8_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	UINT8(3, "uint8", "uint8"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Int8</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #INT8_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	INT8(4, "int8", "int8"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Int16</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #INT16_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	INT16(5, "int16", "int16"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Int32</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #INT32_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	INT32(6, "int32", "int32"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Int64</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #INT64_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	INT64(7, "int64", "int64"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Bool</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #BOOL_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	BOOL(8, "bool", "bool"); //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Float32</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #FLOAT32
+	 * @model name="float32"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int FLOAT32_VALUE = 0;
+
+	/**
+	 * The '<em><b>Float64</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #FLOAT64
+	 * @model name="float64"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int FLOAT64_VALUE = 1;
+
+	/**
+	 * The '<em><b>Float16</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #FLOAT16
+	 * @model name="float16"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int FLOAT16_VALUE = 2;
+
+	/**
+	 * The '<em><b>Uint8</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #UINT8
+	 * @model name="uint8"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int UINT8_VALUE = 3;
+
+	/**
+	 * The '<em><b>Int8</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #INT8
+	 * @model name="int8"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int INT8_VALUE = 4;
+
+	/**
+	 * The '<em><b>Int16</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #INT16
+	 * @model name="int16"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int INT16_VALUE = 5;
+
+	/**
+	 * The '<em><b>Int32</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #INT32
+	 * @model name="int32"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int INT32_VALUE = 6;
+
+	/**
+	 * The '<em><b>Int64</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #INT64
+	 * @model name="int64"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int INT64_VALUE = 7;
+
+	/**
+	 * The '<em><b>Bool</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #BOOL
+	 * @model name="bool"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int BOOL_VALUE = 8;
+
+	/**
+	 * An array of all the '<em><b>ED Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final EDType[] VALUES_ARRAY =
+		new EDType[] {
+			FLOAT32,
+			FLOAT64,
+			FLOAT16,
+			UINT8,
+			INT8,
+			INT16,
+			INT32,
+			INT64,
+			BOOL,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>ED Type</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<EDType> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>ED Type</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static EDType get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			EDType result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>ED Type</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static EDType getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			EDType result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>ED Type</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static EDType get(int value) {
+		switch (value) {
+			case FLOAT32_VALUE: return FLOAT32;
+			case FLOAT64_VALUE: return FLOAT64;
+			case FLOAT16_VALUE: return FLOAT16;
+			case UINT8_VALUE: return UINT8;
+			case INT8_VALUE: return INT8;
+			case INT16_VALUE: return INT16;
+			case INT32_VALUE: return INT32;
+			case INT64_VALUE: return INT64;
+			case BOOL_VALUE: return BOOL;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EDType(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //EDType
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Tensor/ETensorTypes.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Tensor/ETensorTypes.java
new file mode 100644
index 0000000..8288664
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Tensor/ETensorTypes.java
@@ -0,0 +1,379 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Tensor;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import org.eclipse.emf.common.util.Enumerator;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the literals of the enumeration '<em><b>ETensor Types</b></em>',
+ * and utility methods for working with them.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage#getETensorTypes()
+ * @model
+ * @generated
+ */
+public enum ETensorTypes implements Enumerator {
+	/**
+	 * The '<em><b>Float Tensor</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #FLOAT_TENSOR_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	FLOAT_TENSOR(0, "FloatTensor", "FloatTensor"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Double Tensor</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DOUBLE_TENSOR_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	DOUBLE_TENSOR(1, "DoubleTensor", "DoubleTensor"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Half Tensor</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #HALF_TENSOR_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	HALF_TENSOR(2, "HalfTensor", "HalfTensor"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Byte Tensor</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #BYTE_TENSOR_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	BYTE_TENSOR(3, "ByteTensor", "ByteTensor"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Char Tensor</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #CHAR_TENSOR_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	CHAR_TENSOR(4, "CharTensor", "CharTensor"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Short Tensor</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SHORT_TENSOR_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	SHORT_TENSOR(5, "ShortTensor", "ShortTensor"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Int Tensor</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #INT_TENSOR_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	INT_TENSOR(6, "IntTensor", "IntTensor"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Long Tensor</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LONG_TENSOR_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	LONG_TENSOR(7, "LongTensor", "LongTensor"), //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Bool Tensor</b></em>' literal object.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #BOOL_TENSOR_VALUE
+	 * @generated
+	 * @ordered
+	 */
+	BOOL_TENSOR(8, "BoolTensor", "BoolTensor"); //$NON-NLS-1$ //$NON-NLS-2$
+
+	/**
+	 * The '<em><b>Float Tensor</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #FLOAT_TENSOR
+	 * @model name="FloatTensor"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int FLOAT_TENSOR_VALUE = 0;
+
+	/**
+	 * The '<em><b>Double Tensor</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #DOUBLE_TENSOR
+	 * @model name="DoubleTensor"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int DOUBLE_TENSOR_VALUE = 1;
+
+	/**
+	 * The '<em><b>Half Tensor</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #HALF_TENSOR
+	 * @model name="HalfTensor"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int HALF_TENSOR_VALUE = 2;
+
+	/**
+	 * The '<em><b>Byte Tensor</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #BYTE_TENSOR
+	 * @model name="ByteTensor"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int BYTE_TENSOR_VALUE = 3;
+
+	/**
+	 * The '<em><b>Char Tensor</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #CHAR_TENSOR
+	 * @model name="CharTensor"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int CHAR_TENSOR_VALUE = 4;
+
+	/**
+	 * The '<em><b>Short Tensor</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #SHORT_TENSOR
+	 * @model name="ShortTensor"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int SHORT_TENSOR_VALUE = 5;
+
+	/**
+	 * The '<em><b>Int Tensor</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #INT_TENSOR
+	 * @model name="IntTensor"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int INT_TENSOR_VALUE = 6;
+
+	/**
+	 * The '<em><b>Long Tensor</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #LONG_TENSOR
+	 * @model name="LongTensor"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int LONG_TENSOR_VALUE = 7;
+
+	/**
+	 * The '<em><b>Bool Tensor</b></em>' literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #BOOL_TENSOR
+	 * @model name="BoolTensor"
+	 * @generated
+	 * @ordered
+	 */
+	public static final int BOOL_TENSOR_VALUE = 8;
+
+	/**
+	 * An array of all the '<em><b>ETensor Types</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static final ETensorTypes[] VALUES_ARRAY =
+		new ETensorTypes[] {
+			FLOAT_TENSOR,
+			DOUBLE_TENSOR,
+			HALF_TENSOR,
+			BYTE_TENSOR,
+			CHAR_TENSOR,
+			SHORT_TENSOR,
+			INT_TENSOR,
+			LONG_TENSOR,
+			BOOL_TENSOR,
+		};
+
+	/**
+	 * A public read-only list of all the '<em><b>ETensor Types</b></em>' enumerators.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static final List<ETensorTypes> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY));
+
+	/**
+	 * Returns the '<em><b>ETensor Types</b></em>' literal with the specified literal value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param literal the literal.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static ETensorTypes get(String literal) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			ETensorTypes result = VALUES_ARRAY[i];
+			if (result.toString().equals(literal)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>ETensor Types</b></em>' literal with the specified name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param name the name.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static ETensorTypes getByName(String name) {
+		for (int i = 0; i < VALUES_ARRAY.length; ++i) {
+			ETensorTypes result = VALUES_ARRAY[i];
+			if (result.getName().equals(name)) {
+				return result;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Returns the '<em><b>ETensor Types</b></em>' literal with the specified integer value.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the integer value.
+	 * @return the matching enumerator or <code>null</code>.
+	 * @generated
+	 */
+	public static ETensorTypes get(int value) {
+		switch (value) {
+			case FLOAT_TENSOR_VALUE: return FLOAT_TENSOR;
+			case DOUBLE_TENSOR_VALUE: return DOUBLE_TENSOR;
+			case HALF_TENSOR_VALUE: return HALF_TENSOR;
+			case BYTE_TENSOR_VALUE: return BYTE_TENSOR;
+			case CHAR_TENSOR_VALUE: return CHAR_TENSOR;
+			case SHORT_TENSOR_VALUE: return SHORT_TENSOR;
+			case INT_TENSOR_VALUE: return INT_TENSOR;
+			case LONG_TENSOR_VALUE: return LONG_TENSOR;
+			case BOOL_TENSOR_VALUE: return BOOL_TENSOR;
+		}
+		return null;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final int value;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String name;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private final String literal;
+
+	/**
+	 * Only this class can construct instances.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private ETensorTypes(int value, String name, String literal) {
+		this.value = value;
+		this.name = name;
+		this.literal = literal;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getValue() {
+	  return value;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+	  return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getLiteral() {
+	  return literal;
+	}
+
+	/**
+	 * Returns the literal value of the enumerator, which is its string representation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		return literal;
+	}
+	
+} //ETensorTypes
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Tensor/Tensor.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Tensor/Tensor.java
new file mode 100644
index 0000000..346a561
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Tensor/Tensor.java
@@ -0,0 +1,235 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Tensor;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.Device;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Tensor</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor#getData <em>Data</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor#getDtype <em>Dtype</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor#isRequires_grad <em>Requires grad</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor#isPin_memory <em>Pin memory</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor#getShape <em>Shape</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage#getTensor()
+ * @model
+ * @generated
+ */
+public interface Tensor extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Data</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.Double}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Data</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Data</em>' attribute list.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage#getTensor_Data()
+	 * @model dataType="org.eclipse.uml2.types.Real" ordered="false"
+	 * @generated
+	 */
+	EList<Double> getData();
+
+	/**
+	 * Returns the value of the '<em><b>Dtype</b></em>' attribute.
+	 * The literals are from the enumeration {@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.EDType}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Dtype</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Dtype</em>' attribute.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.EDType
+	 * @see #setDtype(EDType)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage#getTensor_Dtype()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	EDType getDtype();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor#getDtype <em>Dtype</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Dtype</em>' attribute.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.EDType
+	 * @see #getDtype()
+	 * @generated
+	 */
+	void setDtype(EDType value);
+
+	/**
+	 * Returns the value of the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Device</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Device</em>' reference.
+	 * @see #setDevice(Device)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage#getTensor_Device()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	Device getDevice();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor#getDevice <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Device</em>' reference.
+	 * @see #getDevice()
+	 * @generated
+	 */
+	void setDevice(Device value);
+
+	/**
+	 * Returns the value of the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Requires grad</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Requires grad</em>' attribute.
+	 * @see #setRequires_grad(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage#getTensor_Requires_grad()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isRequires_grad();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor#isRequires_grad <em>Requires grad</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Requires grad</em>' attribute.
+	 * @see #isRequires_grad()
+	 * @generated
+	 */
+	void setRequires_grad(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Pin memory</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Pin memory</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Pin memory</em>' attribute.
+	 * @see #setPin_memory(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage#getTensor_Pin_memory()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isPin_memory();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor#isPin_memory <em>Pin memory</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Pin memory</em>' attribute.
+	 * @see #isPin_memory()
+	 * @generated
+	 */
+	void setPin_memory(boolean value);
+
+	/**
+	 * Returns the value of the '<em><b>Shape</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.Integer}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Shape</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Shape</em>' attribute list.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage#getTensor_Shape()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	EList<Integer> getShape();
+
+	/**
+	 * Returns the value of the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Name</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Name</em>' attribute.
+	 * @see #setName(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage#getTensor_Name()
+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+	 * @generated
+	 */
+	String getName();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor#getName <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Name</em>' attribute.
+	 * @see #getName()
+	 * @generated
+	 */
+	void setName(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Base Class</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Base Class</em>' reference.
+	 * @see #setBase_Class(org.eclipse.uml2.uml.Class)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage#getTensor_Base_Class()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	org.eclipse.uml2.uml.Class getBase_Class();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor#getBase_Class <em>Base Class</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Base Class</em>' reference.
+	 * @see #getBase_Class()
+	 * @generated
+	 */
+	void setBase_Class(org.eclipse.uml2.uml.Class value);
+
+} // Tensor
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Tensor/TensorFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Tensor/TensorFactory.java
new file mode 100644
index 0000000..d7e310b
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Tensor/TensorFactory.java
@@ -0,0 +1,51 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Tensor;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage
+ * @generated
+ */
+public interface TensorFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	TensorFactory eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Tensor</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Tensor</em>'.
+	 * @generated
+	 */
+	Tensor createTensor();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	TensorPackage getTensorPackage();
+
+} //TensorFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Tensor/TensorPackage.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Tensor/TensorPackage.java
new file mode 100644
index 0000000..f472fdc
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Tensor/TensorPackage.java
@@ -0,0 +1,427 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Tensor;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface TensorPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "Tensor"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://www.eclipse.org/papyrus/AIML/tensor/1"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "AIML.Tensor"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	TensorPackage eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorImpl <em>Tensor</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorPackageImpl#getTensor()
+	 * @generated
+	 */
+	int TENSOR = 0;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TENSOR__DATA = 0;
+
+	/**
+	 * The feature id for the '<em><b>Dtype</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TENSOR__DTYPE = 1;
+
+	/**
+	 * The feature id for the '<em><b>Device</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TENSOR__DEVICE = 2;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TENSOR__REQUIRES_GRAD = 3;
+
+	/**
+	 * The feature id for the '<em><b>Pin memory</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TENSOR__PIN_MEMORY = 4;
+
+	/**
+	 * The feature id for the '<em><b>Shape</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TENSOR__SHAPE = 5;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TENSOR__NAME = 6;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TENSOR__BASE_CLASS = 7;
+
+	/**
+	 * The number of structural features of the '<em>Tensor</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TENSOR_FEATURE_COUNT = 8;
+
+	/**
+	 * The number of operations of the '<em>Tensor</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TENSOR_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.EDType <em>ED Type</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.EDType
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorPackageImpl#getEDType()
+	 * @generated
+	 */
+	int ED_TYPE = 1;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.ETensorTypes <em>ETensor Types</em>}' enum.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.ETensorTypes
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorPackageImpl#getETensorTypes()
+	 * @generated
+	 */
+	int ETENSOR_TYPES = 2;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor <em>Tensor</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Tensor</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor
+	 * @generated
+	 */
+	EClass getTensor();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor#getData <em>Data</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Data</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor#getData()
+	 * @see #getTensor()
+	 * @generated
+	 */
+	EAttribute getTensor_Data();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor#getDtype <em>Dtype</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Dtype</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor#getDtype()
+	 * @see #getTensor()
+	 * @generated
+	 */
+	EAttribute getTensor_Dtype();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor#getDevice <em>Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Device</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor#getDevice()
+	 * @see #getTensor()
+	 * @generated
+	 */
+	EReference getTensor_Device();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor#isRequires_grad <em>Requires grad</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Requires grad</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor#isRequires_grad()
+	 * @see #getTensor()
+	 * @generated
+	 */
+	EAttribute getTensor_Requires_grad();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor#isPin_memory <em>Pin memory</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Pin memory</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor#isPin_memory()
+	 * @see #getTensor()
+	 * @generated
+	 */
+	EAttribute getTensor_Pin_memory();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor#getShape <em>Shape</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Shape</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor#getShape()
+	 * @see #getTensor()
+	 * @generated
+	 */
+	EAttribute getTensor_Shape();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor#getName <em>Name</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Name</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor#getName()
+	 * @see #getTensor()
+	 * @generated
+	 */
+	EAttribute getTensor_Name();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor#getBase_Class <em>Base Class</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Base Class</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor#getBase_Class()
+	 * @see #getTensor()
+	 * @generated
+	 */
+	EReference getTensor_Base_Class();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.EDType <em>ED Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>ED Type</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.EDType
+	 * @generated
+	 */
+	EEnum getEDType();
+
+	/**
+	 * Returns the meta object for enum '{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.ETensorTypes <em>ETensor Types</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for enum '<em>ETensor Types</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.ETensorTypes
+	 * @generated
+	 */
+	EEnum getETensorTypes();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	TensorFactory getTensorFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorImpl <em>Tensor</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorPackageImpl#getTensor()
+		 * @generated
+		 */
+		EClass TENSOR = eINSTANCE.getTensor();
+
+		/**
+		 * The meta object literal for the '<em><b>Data</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute TENSOR__DATA = eINSTANCE.getTensor_Data();
+
+		/**
+		 * The meta object literal for the '<em><b>Dtype</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute TENSOR__DTYPE = eINSTANCE.getTensor_Dtype();
+
+		/**
+		 * The meta object literal for the '<em><b>Device</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference TENSOR__DEVICE = eINSTANCE.getTensor_Device();
+
+		/**
+		 * The meta object literal for the '<em><b>Requires grad</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute TENSOR__REQUIRES_GRAD = eINSTANCE.getTensor_Requires_grad();
+
+		/**
+		 * The meta object literal for the '<em><b>Pin memory</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute TENSOR__PIN_MEMORY = eINSTANCE.getTensor_Pin_memory();
+
+		/**
+		 * The meta object literal for the '<em><b>Shape</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute TENSOR__SHAPE = eINSTANCE.getTensor_Shape();
+
+		/**
+		 * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute TENSOR__NAME = eINSTANCE.getTensor_Name();
+
+		/**
+		 * The meta object literal for the '<em><b>Base Class</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference TENSOR__BASE_CLASS = eINSTANCE.getTensor_Base_Class();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.EDType <em>ED Type</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.EDType
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorPackageImpl#getEDType()
+		 * @generated
+		 */
+		EEnum ED_TYPE = eINSTANCE.getEDType();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.ETensorTypes <em>ETensor Types</em>}' enum.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.ETensorTypes
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorPackageImpl#getETensorTypes()
+		 * @generated
+		 */
+		EEnum ETENSOR_TYPES = eINSTANCE.getETensorTypes();
+
+	}
+
+} //TensorPackage
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Tensor/impl/TensorFactoryImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Tensor/impl/TensorFactoryImpl.java
new file mode 100644
index 0000000..d6f578e
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Tensor/impl/TensorFactoryImpl.java
@@ -0,0 +1,181 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TensorFactoryImpl extends EFactoryImpl implements TensorFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static TensorFactory init() {
+		try {
+			TensorFactory theTensorFactory = (TensorFactory)EPackage.Registry.INSTANCE.getEFactory(TensorPackage.eNS_URI);
+			if (theTensorFactory != null) {
+				return theTensorFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new TensorFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TensorFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case TensorPackage.TENSOR: return createTensor();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object createFromString(EDataType eDataType, String initialValue) {
+		switch (eDataType.getClassifierID()) {
+			case TensorPackage.ED_TYPE:
+				return createEDTypeFromString(eDataType, initialValue);
+			case TensorPackage.ETENSOR_TYPES:
+				return createETensorTypesFromString(eDataType, initialValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String convertToString(EDataType eDataType, Object instanceValue) {
+		switch (eDataType.getClassifierID()) {
+			case TensorPackage.ED_TYPE:
+				return convertEDTypeToString(eDataType, instanceValue);
+			case TensorPackage.ETENSOR_TYPES:
+				return convertETensorTypesToString(eDataType, instanceValue);
+			default:
+				throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Tensor createTensor() {
+		TensorImpl tensor = new TensorImpl();
+		return tensor;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EDType createEDTypeFromString(EDataType eDataType, String initialValue) {
+		EDType result = EDType.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertEDTypeToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ETensorTypes createETensorTypesFromString(EDataType eDataType, String initialValue) {
+		ETensorTypes result = ETensorTypes.get(initialValue);
+		if (result == null) throw new IllegalArgumentException("The value '" + initialValue + "' is not a valid enumerator of '" + eDataType.getName() + "'"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+		return result;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String convertETensorTypesToString(EDataType eDataType, Object instanceValue) {
+		return instanceValue == null ? null : instanceValue.toString();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public TensorPackage getTensorPackage() {
+		return (TensorPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static TensorPackage getPackage() {
+		return TensorPackage.eINSTANCE;
+	}
+
+} //TensorFactoryImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Tensor/impl/TensorImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Tensor/impl/TensorImpl.java
new file mode 100644
index 0000000..72b4438
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Tensor/impl/TensorImpl.java
@@ -0,0 +1,551 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.EDType;
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor;
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.Device;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Tensor</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorImpl#getData <em>Data</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorImpl#getDtype <em>Dtype</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorImpl#getDevice <em>Device</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorImpl#isRequires_grad <em>Requires grad</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorImpl#isPin_memory <em>Pin memory</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorImpl#getShape <em>Shape</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorImpl#getName <em>Name</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorImpl#getBase_Class <em>Base Class</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TensorImpl extends MinimalEObjectImpl.Container implements Tensor {
+	/**
+	 * The cached value of the '{@link #getData() <em>Data</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getData()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Double> data;
+
+	/**
+	 * The default value of the '{@link #getDtype() <em>Dtype</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDtype()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final EDType DTYPE_EDEFAULT = EDType.FLOAT32;
+
+	/**
+	 * The cached value of the '{@link #getDtype() <em>Dtype</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDtype()
+	 * @generated
+	 * @ordered
+	 */
+	protected EDType dtype = DTYPE_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getDevice() <em>Device</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDevice()
+	 * @generated
+	 * @ordered
+	 */
+	protected Device device;
+
+	/**
+	 * The default value of the '{@link #isRequires_grad() <em>Requires grad</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isRequires_grad()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean REQUIRES_GRAD_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isRequires_grad() <em>Requires grad</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isRequires_grad()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean requires_grad = REQUIRES_GRAD_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isPin_memory() <em>Pin memory</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isPin_memory()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean PIN_MEMORY_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isPin_memory() <em>Pin memory</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isPin_memory()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean pin_memory = PIN_MEMORY_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getShape() <em>Shape</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getShape()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Integer> shape;
+
+	/**
+	 * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String NAME_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getName()
+	 * @generated
+	 * @ordered
+	 */
+	protected String name = NAME_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getBase_Class() <em>Base Class</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBase_Class()
+	 * @generated
+	 * @ordered
+	 */
+	protected org.eclipse.uml2.uml.Class base_Class;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TensorImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return TensorPackage.Literals.TENSOR;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Double> getData() {
+		if (data == null) {
+			data = new EDataTypeUniqueEList<Double>(Double.class, this, TensorPackage.TENSOR__DATA);
+		}
+		return data;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EDType getDtype() {
+		return dtype;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDtype(EDType newDtype) {
+		EDType oldDtype = dtype;
+		dtype = newDtype == null ? DTYPE_EDEFAULT : newDtype;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, TensorPackage.TENSOR__DTYPE, oldDtype, dtype));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Device getDevice() {
+		if (device != null && device.eIsProxy()) {
+			InternalEObject oldDevice = (InternalEObject)device;
+			device = (Device)eResolveProxy(oldDevice);
+			if (device != oldDevice) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, TensorPackage.TENSOR__DEVICE, oldDevice, device));
+			}
+		}
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Device basicGetDevice() {
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDevice(Device newDevice) {
+		Device oldDevice = device;
+		device = newDevice;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, TensorPackage.TENSOR__DEVICE, oldDevice, device));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isRequires_grad() {
+		return requires_grad;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setRequires_grad(boolean newRequires_grad) {
+		boolean oldRequires_grad = requires_grad;
+		requires_grad = newRequires_grad;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, TensorPackage.TENSOR__REQUIRES_GRAD, oldRequires_grad, requires_grad));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isPin_memory() {
+		return pin_memory;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setPin_memory(boolean newPin_memory) {
+		boolean oldPin_memory = pin_memory;
+		pin_memory = newPin_memory;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, TensorPackage.TENSOR__PIN_MEMORY, oldPin_memory, pin_memory));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Integer> getShape() {
+		if (shape == null) {
+			shape = new EDataTypeUniqueEList<Integer>(Integer.class, this, TensorPackage.TENSOR__SHAPE);
+		}
+		return shape;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getName() {
+		return name;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setName(String newName) {
+		String oldName = name;
+		name = newName;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, TensorPackage.TENSOR__NAME, oldName, name));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public org.eclipse.uml2.uml.Class getBase_Class() {
+		if (base_Class != null && base_Class.eIsProxy()) {
+			InternalEObject oldBase_Class = (InternalEObject)base_Class;
+			base_Class = (org.eclipse.uml2.uml.Class)eResolveProxy(oldBase_Class);
+			if (base_Class != oldBase_Class) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, TensorPackage.TENSOR__BASE_CLASS, oldBase_Class, base_Class));
+			}
+		}
+		return base_Class;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public org.eclipse.uml2.uml.Class basicGetBase_Class() {
+		return base_Class;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setBase_Class(org.eclipse.uml2.uml.Class newBase_Class) {
+		org.eclipse.uml2.uml.Class oldBase_Class = base_Class;
+		base_Class = newBase_Class;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, TensorPackage.TENSOR__BASE_CLASS, oldBase_Class, base_Class));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case TensorPackage.TENSOR__DATA:
+				return getData();
+			case TensorPackage.TENSOR__DTYPE:
+				return getDtype();
+			case TensorPackage.TENSOR__DEVICE:
+				if (resolve) return getDevice();
+				return basicGetDevice();
+			case TensorPackage.TENSOR__REQUIRES_GRAD:
+				return isRequires_grad();
+			case TensorPackage.TENSOR__PIN_MEMORY:
+				return isPin_memory();
+			case TensorPackage.TENSOR__SHAPE:
+				return getShape();
+			case TensorPackage.TENSOR__NAME:
+				return getName();
+			case TensorPackage.TENSOR__BASE_CLASS:
+				if (resolve) return getBase_Class();
+				return basicGetBase_Class();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case TensorPackage.TENSOR__DATA:
+				getData().clear();
+				getData().addAll((Collection<? extends Double>)newValue);
+				return;
+			case TensorPackage.TENSOR__DTYPE:
+				setDtype((EDType)newValue);
+				return;
+			case TensorPackage.TENSOR__DEVICE:
+				setDevice((Device)newValue);
+				return;
+			case TensorPackage.TENSOR__REQUIRES_GRAD:
+				setRequires_grad((Boolean)newValue);
+				return;
+			case TensorPackage.TENSOR__PIN_MEMORY:
+				setPin_memory((Boolean)newValue);
+				return;
+			case TensorPackage.TENSOR__SHAPE:
+				getShape().clear();
+				getShape().addAll((Collection<? extends Integer>)newValue);
+				return;
+			case TensorPackage.TENSOR__NAME:
+				setName((String)newValue);
+				return;
+			case TensorPackage.TENSOR__BASE_CLASS:
+				setBase_Class((org.eclipse.uml2.uml.Class)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case TensorPackage.TENSOR__DATA:
+				getData().clear();
+				return;
+			case TensorPackage.TENSOR__DTYPE:
+				setDtype(DTYPE_EDEFAULT);
+				return;
+			case TensorPackage.TENSOR__DEVICE:
+				setDevice((Device)null);
+				return;
+			case TensorPackage.TENSOR__REQUIRES_GRAD:
+				setRequires_grad(REQUIRES_GRAD_EDEFAULT);
+				return;
+			case TensorPackage.TENSOR__PIN_MEMORY:
+				setPin_memory(PIN_MEMORY_EDEFAULT);
+				return;
+			case TensorPackage.TENSOR__SHAPE:
+				getShape().clear();
+				return;
+			case TensorPackage.TENSOR__NAME:
+				setName(NAME_EDEFAULT);
+				return;
+			case TensorPackage.TENSOR__BASE_CLASS:
+				setBase_Class((org.eclipse.uml2.uml.Class)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case TensorPackage.TENSOR__DATA:
+				return data != null && !data.isEmpty();
+			case TensorPackage.TENSOR__DTYPE:
+				return dtype != DTYPE_EDEFAULT;
+			case TensorPackage.TENSOR__DEVICE:
+				return device != null;
+			case TensorPackage.TENSOR__REQUIRES_GRAD:
+				return requires_grad != REQUIRES_GRAD_EDEFAULT;
+			case TensorPackage.TENSOR__PIN_MEMORY:
+				return pin_memory != PIN_MEMORY_EDEFAULT;
+			case TensorPackage.TENSOR__SHAPE:
+				return shape != null && !shape.isEmpty();
+			case TensorPackage.TENSOR__NAME:
+				return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+			case TensorPackage.TENSOR__BASE_CLASS:
+				return base_Class != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (data: "); //$NON-NLS-1$
+		result.append(data);
+		result.append(", dtype: "); //$NON-NLS-1$
+		result.append(dtype);
+		result.append(", requires_grad: "); //$NON-NLS-1$
+		result.append(requires_grad);
+		result.append(", pin_memory: "); //$NON-NLS-1$
+		result.append(pin_memory);
+		result.append(", shape: "); //$NON-NLS-1$
+		result.append(shape);
+		result.append(", name: "); //$NON-NLS-1$
+		result.append(name);
+		result.append(')');
+		return result.toString();
+	}
+
+} //TensorImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Tensor/impl/TensorPackageImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Tensor/impl/TensorPackageImpl.java
new file mode 100644
index 0000000..a547b5a
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Tensor/impl/TensorPackageImpl.java
@@ -0,0 +1,520 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EEnum;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.AIMLPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.Layer_weight_regularizersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModulePackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.EDType;
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.ETensorTypes;
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor;
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorFactory;
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.DatatypesPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl.DatatypesPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.impl.AIMLPackageImpl;
+
+import org.eclipse.uml2.types.TypesPackage;
+
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class TensorPackageImpl extends EPackageImpl implements TensorPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass tensorEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum edTypeEEnum = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EEnum eTensorTypesEEnum = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private TensorPackageImpl() {
+		super(eNS_URI, TensorFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>This method is used to initialize {@link TensorPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static TensorPackage init() {
+		if (isInited) return (TensorPackage)EPackage.Registry.INSTANCE.getEPackage(TensorPackage.eNS_URI);
+
+		// Obtain or create and register package
+		Object registeredTensorPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		TensorPackageImpl theTensorPackage = registeredTensorPackage instanceof TensorPackageImpl ? (TensorPackageImpl)registeredTensorPackage : new TensorPackageImpl();
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		EcorePackage.eINSTANCE.eClass();
+		TypesPackage.eINSTANCE.eClass();
+		UMLPackage.eINSTANCE.eClass();
+
+		// Obtain or create and register interdependencies
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AIMLPackage.eNS_URI);
+		AIMLPackageImpl theAIMLPackage = (AIMLPackageImpl)(registeredPackage instanceof AIMLPackageImpl ? registeredPackage : AIMLPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		ModulePackageImpl theModulePackage = (ModulePackageImpl)(registeredPackage instanceof ModulePackageImpl ? registeredPackage : ModulePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DatatypesPackage.eNS_URI);
+		DatatypesPackageImpl theDatatypesPackage = (DatatypesPackageImpl)(registeredPackage instanceof DatatypesPackageImpl ? registeredPackage : DatatypesPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Pooling_layersPackage.eNS_URI);
+		Pooling_layersPackageImpl thePooling_layersPackage = (Pooling_layersPackageImpl)(registeredPackage instanceof Pooling_layersPackageImpl ? registeredPackage : Pooling_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Convolution_layersPackage.eNS_URI);
+		Convolution_layersPackageImpl theConvolution_layersPackage = (Convolution_layersPackageImpl)(registeredPackage instanceof Convolution_layersPackageImpl ? registeredPackage : Convolution_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_constraintsPackage.eNS_URI);
+		Layer_weight_constraintsPackageImpl theLayer_weight_constraintsPackage = (Layer_weight_constraintsPackageImpl)(registeredPackage instanceof Layer_weight_constraintsPackageImpl ? registeredPackage : Layer_weight_constraintsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Padding_layersPackage.eNS_URI);
+		Padding_layersPackageImpl thePadding_layersPackage = (Padding_layersPackageImpl)(registeredPackage instanceof Padding_layersPackageImpl ? registeredPackage : Padding_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NonLinearActivationsPackage.eNS_URI);
+		NonLinearActivationsPackageImpl theNonLinearActivationsPackage = (NonLinearActivationsPackageImpl)(registeredPackage instanceof NonLinearActivationsPackageImpl ? registeredPackage : NonLinearActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftMinMaxActivationsPackage.eNS_URI);
+		SoftMinMaxActivationsPackageImpl theSoftMinMaxActivationsPackage = (SoftMinMaxActivationsPackageImpl)(registeredPackage instanceof SoftMinMaxActivationsPackageImpl ? registeredPackage : SoftMinMaxActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Normalization_layersPackage.eNS_URI);
+		Normalization_layersPackageImpl theNormalization_layersPackage = (Normalization_layersPackageImpl)(registeredPackage instanceof Normalization_layersPackageImpl ? registeredPackage : Normalization_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Recurrent_layersPackage.eNS_URI);
+		Recurrent_layersPackageImpl theRecurrent_layersPackage = (Recurrent_layersPackageImpl)(registeredPackage instanceof Recurrent_layersPackageImpl ? registeredPackage : Recurrent_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Transformer_layersPackage.eNS_URI);
+		Transformer_layersPackageImpl theTransformer_layersPackage = (Transformer_layersPackageImpl)(registeredPackage instanceof Transformer_layersPackageImpl ? registeredPackage : Transformer_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Linear_layersPackage.eNS_URI);
+		Linear_layersPackageImpl theLinear_layersPackage = (Linear_layersPackageImpl)(registeredPackage instanceof Linear_layersPackageImpl ? registeredPackage : Linear_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Dropout_layersPackage.eNS_URI);
+		Dropout_layersPackageImpl theDropout_layersPackage = (Dropout_layersPackageImpl)(registeredPackage instanceof Dropout_layersPackageImpl ? registeredPackage : Dropout_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Sparse_layersPackage.eNS_URI);
+		Sparse_layersPackageImpl theSparse_layersPackage = (Sparse_layersPackageImpl)(registeredPackage instanceof Sparse_layersPackageImpl ? registeredPackage : Sparse_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Distance_functionsPackage.eNS_URI);
+		Distance_functionsPackageImpl theDistance_functionsPackage = (Distance_functionsPackageImpl)(registeredPackage instanceof Distance_functionsPackageImpl ? registeredPackage : Distance_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Loss_functionsPackage.eNS_URI);
+		Loss_functionsPackageImpl theLoss_functionsPackage = (Loss_functionsPackageImpl)(registeredPackage instanceof Loss_functionsPackageImpl ? registeredPackage : Loss_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Vision_layersPackage.eNS_URI);
+		Vision_layersPackageImpl theVision_layersPackage = (Vision_layersPackageImpl)(registeredPackage instanceof Vision_layersPackageImpl ? registeredPackage : Vision_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DataParallel_layersPackage.eNS_URI);
+		DataParallel_layersPackageImpl theDataParallel_layersPackage = (DataParallel_layersPackageImpl)(registeredPackage instanceof DataParallel_layersPackageImpl ? registeredPackage : DataParallel_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_regularizersPackage.eNS_URI);
+		Layer_weight_regularizersPackageImpl theLayer_weight_regularizersPackage = (Layer_weight_regularizersPackageImpl)(registeredPackage instanceof Layer_weight_regularizersPackageImpl ? registeredPackage : Layer_weight_regularizersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_initializersPackage.eNS_URI);
+		Layer_weight_initializersPackageImpl theLayer_weight_initializersPackage = (Layer_weight_initializersPackageImpl)(registeredPackage instanceof Layer_weight_initializersPackageImpl ? registeredPackage : Layer_weight_initializersPackage.eINSTANCE);
+
+		// Create package meta-data objects
+		theTensorPackage.createPackageContents();
+		theAIMLPackage.createPackageContents();
+		theModulePackage.createPackageContents();
+		theDatatypesPackage.createPackageContents();
+		thePooling_layersPackage.createPackageContents();
+		theConvolution_layersPackage.createPackageContents();
+		theLayer_weight_constraintsPackage.createPackageContents();
+		thePadding_layersPackage.createPackageContents();
+		theNonLinearActivationsPackage.createPackageContents();
+		theSoftMinMaxActivationsPackage.createPackageContents();
+		theNormalization_layersPackage.createPackageContents();
+		theRecurrent_layersPackage.createPackageContents();
+		theTransformer_layersPackage.createPackageContents();
+		theLinear_layersPackage.createPackageContents();
+		theDropout_layersPackage.createPackageContents();
+		theSparse_layersPackage.createPackageContents();
+		theDistance_functionsPackage.createPackageContents();
+		theLoss_functionsPackage.createPackageContents();
+		theVision_layersPackage.createPackageContents();
+		theDataParallel_layersPackage.createPackageContents();
+		theLayer_weight_regularizersPackage.createPackageContents();
+		theLayer_weight_initializersPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theTensorPackage.initializePackageContents();
+		theAIMLPackage.initializePackageContents();
+		theModulePackage.initializePackageContents();
+		theDatatypesPackage.initializePackageContents();
+		thePooling_layersPackage.initializePackageContents();
+		theConvolution_layersPackage.initializePackageContents();
+		theLayer_weight_constraintsPackage.initializePackageContents();
+		thePadding_layersPackage.initializePackageContents();
+		theNonLinearActivationsPackage.initializePackageContents();
+		theSoftMinMaxActivationsPackage.initializePackageContents();
+		theNormalization_layersPackage.initializePackageContents();
+		theRecurrent_layersPackage.initializePackageContents();
+		theTransformer_layersPackage.initializePackageContents();
+		theLinear_layersPackage.initializePackageContents();
+		theDropout_layersPackage.initializePackageContents();
+		theSparse_layersPackage.initializePackageContents();
+		theDistance_functionsPackage.initializePackageContents();
+		theLoss_functionsPackage.initializePackageContents();
+		theVision_layersPackage.initializePackageContents();
+		theDataParallel_layersPackage.initializePackageContents();
+		theLayer_weight_regularizersPackage.initializePackageContents();
+		theLayer_weight_initializersPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theTensorPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(TensorPackage.eNS_URI, theTensorPackage);
+		return theTensorPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getTensor() {
+		return tensorEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getTensor_Data() {
+		return (EAttribute)tensorEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getTensor_Dtype() {
+		return (EAttribute)tensorEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getTensor_Device() {
+		return (EReference)tensorEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getTensor_Requires_grad() {
+		return (EAttribute)tensorEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getTensor_Pin_memory() {
+		return (EAttribute)tensorEClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getTensor_Shape() {
+		return (EAttribute)tensorEClass.getEStructuralFeatures().get(5);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getTensor_Name() {
+		return (EAttribute)tensorEClass.getEStructuralFeatures().get(6);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getTensor_Base_Class() {
+		return (EReference)tensorEClass.getEStructuralFeatures().get(7);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EEnum getEDType() {
+		return edTypeEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EEnum getETensorTypes() {
+		return eTensorTypesEEnum;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public TensorFactory getTensorFactory() {
+		return (TensorFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		tensorEClass = createEClass(TENSOR);
+		createEAttribute(tensorEClass, TENSOR__DATA);
+		createEAttribute(tensorEClass, TENSOR__DTYPE);
+		createEReference(tensorEClass, TENSOR__DEVICE);
+		createEAttribute(tensorEClass, TENSOR__REQUIRES_GRAD);
+		createEAttribute(tensorEClass, TENSOR__PIN_MEMORY);
+		createEAttribute(tensorEClass, TENSOR__SHAPE);
+		createEAttribute(tensorEClass, TENSOR__NAME);
+		createEReference(tensorEClass, TENSOR__BASE_CLASS);
+
+		// Create enums
+		edTypeEEnum = createEEnum(ED_TYPE);
+		eTensorTypesEEnum = createEEnum(ETENSOR_TYPES);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+		DatatypesPackage theDatatypesPackage = (DatatypesPackage)EPackage.Registry.INSTANCE.getEPackage(DatatypesPackage.eNS_URI);
+		UMLPackage theUMLPackage = (UMLPackage)EPackage.Registry.INSTANCE.getEPackage(UMLPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(tensorEClass, Tensor.class, "Tensor", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getTensor_Data(), theTypesPackage.getReal(), "data", null, 0, -1, Tensor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getTensor_Dtype(), this.getEDType(), "dtype", null, 0, 1, Tensor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEReference(getTensor_Device(), theDatatypesPackage.getDevice(), null, "device", null, 0, 1, Tensor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getTensor_Requires_grad(), theTypesPackage.getBoolean(), "requires_grad", null, 0, 1, Tensor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getTensor_Pin_memory(), theTypesPackage.getBoolean(), "pin_memory", null, 0, 1, Tensor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getTensor_Shape(), theTypesPackage.getInteger(), "shape", null, 0, -1, Tensor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getTensor_Name(), theTypesPackage.getString(), "name", null, 0, 1, Tensor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEReference(getTensor_Base_Class(), theUMLPackage.getClass_(), null, "base_Class", null, 0, 1, Tensor.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		// Initialize enums and add enum literals
+		initEEnum(edTypeEEnum, EDType.class, "EDType"); //$NON-NLS-1$
+		addEEnumLiteral(edTypeEEnum, EDType.FLOAT32);
+		addEEnumLiteral(edTypeEEnum, EDType.FLOAT64);
+		addEEnumLiteral(edTypeEEnum, EDType.FLOAT16);
+		addEEnumLiteral(edTypeEEnum, EDType.UINT8);
+		addEEnumLiteral(edTypeEEnum, EDType.INT8);
+		addEEnumLiteral(edTypeEEnum, EDType.INT16);
+		addEEnumLiteral(edTypeEEnum, EDType.INT32);
+		addEEnumLiteral(edTypeEEnum, EDType.INT64);
+		addEEnumLiteral(edTypeEEnum, EDType.BOOL);
+
+		initEEnum(eTensorTypesEEnum, ETensorTypes.class, "ETensorTypes"); //$NON-NLS-1$
+		addEEnumLiteral(eTensorTypesEEnum, ETensorTypes.FLOAT_TENSOR);
+		addEEnumLiteral(eTensorTypesEEnum, ETensorTypes.DOUBLE_TENSOR);
+		addEEnumLiteral(eTensorTypesEEnum, ETensorTypes.HALF_TENSOR);
+		addEEnumLiteral(eTensorTypesEEnum, ETensorTypes.BYTE_TENSOR);
+		addEEnumLiteral(eTensorTypesEEnum, ETensorTypes.CHAR_TENSOR);
+		addEEnumLiteral(eTensorTypesEEnum, ETensorTypes.SHORT_TENSOR);
+		addEEnumLiteral(eTensorTypesEEnum, ETensorTypes.INT_TENSOR);
+		addEEnumLiteral(eTensorTypesEEnum, ETensorTypes.LONG_TENSOR);
+		addEEnumLiteral(eTensorTypesEEnum, ETensorTypes.BOOL_TENSOR);
+	}
+
+} //TensorPackageImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Tensor/util/TensorAdapterFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Tensor/util/TensorAdapterFactory.java
new file mode 100644
index 0000000..f704ab2
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Tensor/util/TensorAdapterFactory.java
@@ -0,0 +1,129 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Tensor.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage
+ * @generated
+ */
+public class TensorAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static TensorPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TensorAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = TensorPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TensorSwitch<Adapter> modelSwitch =
+		new TensorSwitch<Adapter>() {
+			@Override
+			public Adapter caseTensor(Tensor object) {
+				return createTensorAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor <em>Tensor</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.Tensor
+	 * @generated
+	 */
+	public Adapter createTensorAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //TensorAdapterFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Tensor/util/TensorSwitch.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Tensor/util/TensorSwitch.java
new file mode 100644
index 0000000..9430c0b
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Tensor/util/TensorSwitch.java
@@ -0,0 +1,119 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Tensor.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage
+ * @generated
+ */
+public class TensorSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static TensorPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TensorSwitch() {
+		if (modelPackage == null) {
+			modelPackage = TensorPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case TensorPackage.TENSOR: {
+				Tensor tensor = (Tensor)theEObject;
+				T result = caseTensor(tensor);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Tensor</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Tensor</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTensor(Tensor object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //TensorSwitch
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/Transformer.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/Transformer.java
new file mode 100644
index 0000000..c24f1c3
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/Transformer.java
@@ -0,0 +1,141 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Transformer</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer#getNum_encoder_layers <em>Num encoder layers</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer#getNum_decoder_layers <em>Num decoder layers</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer#getCustom_encoder <em>Custom encoder</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer#getCustom_decoder <em>Custom decoder</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage#getTransformer()
+ * @model
+ * @generated
+ */
+public interface Transformer extends Transformer_layers_1 {
+	/**
+	 * Returns the value of the '<em><b>Num encoder layers</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Num encoder layers</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Num encoder layers</em>' attribute.
+	 * @see #setNum_encoder_layers(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage#getTransformer_Num_encoder_layers()
+	 * @model dataType="org.eclipse.uml2.types.Integer" required="true" ordered="false"
+	 *        annotation="http://www.eclipse.org/uml2/2.0.0/UML originalName='num_encoder_layers '"
+	 * @generated
+	 */
+	int getNum_encoder_layers();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer#getNum_encoder_layers <em>Num encoder layers</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Num encoder layers</em>' attribute.
+	 * @see #getNum_encoder_layers()
+	 * @generated
+	 */
+	void setNum_encoder_layers(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Num decoder layers</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Num decoder layers</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Num decoder layers</em>' attribute.
+	 * @see #setNum_decoder_layers(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage#getTransformer_Num_decoder_layers()
+	 * @model dataType="org.eclipse.uml2.types.Integer" required="true" ordered="false"
+	 *        annotation="http://www.eclipse.org/uml2/2.0.0/UML originalName='num_decoder_layers '"
+	 * @generated
+	 */
+	int getNum_decoder_layers();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer#getNum_decoder_layers <em>Num decoder layers</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Num decoder layers</em>' attribute.
+	 * @see #getNum_decoder_layers()
+	 * @generated
+	 */
+	void setNum_decoder_layers(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Custom encoder</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Custom encoder</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Custom encoder</em>' reference.
+	 * @see #setCustom_encoder(TransformerEncoder)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage#getTransformer_Custom_encoder()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	TransformerEncoder getCustom_encoder();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer#getCustom_encoder <em>Custom encoder</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Custom encoder</em>' reference.
+	 * @see #getCustom_encoder()
+	 * @generated
+	 */
+	void setCustom_encoder(TransformerEncoder value);
+
+	/**
+	 * Returns the value of the '<em><b>Custom decoder</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Custom decoder</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Custom decoder</em>' reference.
+	 * @see #setCustom_decoder(TransformerDecoder)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage#getTransformer_Custom_decoder()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	TransformerDecoder getCustom_decoder();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer#getCustom_decoder <em>Custom decoder</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Custom decoder</em>' reference.
+	 * @see #getCustom_decoder()
+	 * @generated
+	 */
+	void setCustom_decoder(TransformerDecoder value);
+
+} // Transformer
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/TransformerDecoder.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/TransformerDecoder.java
new file mode 100644
index 0000000..d0fac1f
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/TransformerDecoder.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Transformer Decoder</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerDecoder#getDecoder_layer <em>Decoder layer</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage#getTransformerDecoder()
+ * @model
+ * @generated
+ */
+public interface TransformerDecoder extends Transformer_layers_2 {
+	/**
+	 * Returns the value of the '<em><b>Decoder layer</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Decoder layer</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Decoder layer</em>' reference.
+	 * @see #setDecoder_layer(TransformerDecoderLayer)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage#getTransformerDecoder_Decoder_layer()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	TransformerDecoderLayer getDecoder_layer();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerDecoder#getDecoder_layer <em>Decoder layer</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Decoder layer</em>' reference.
+	 * @see #getDecoder_layer()
+	 * @generated
+	 */
+	void setDecoder_layer(TransformerDecoderLayer value);
+
+} // TransformerDecoder
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/TransformerDecoderLayer.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/TransformerDecoderLayer.java
new file mode 100644
index 0000000..08b9f76
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/TransformerDecoderLayer.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Transformer Decoder Layer</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage#getTransformerDecoderLayer()
+ * @model
+ * @generated
+ */
+public interface TransformerDecoderLayer extends Transformer_layers_1 {
+} // TransformerDecoderLayer
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/TransformerEncoder.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/TransformerEncoder.java
new file mode 100644
index 0000000..044722b
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/TransformerEncoder.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Transformer Encoder</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerEncoder#getEncoder_layer <em>Encoder layer</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage#getTransformerEncoder()
+ * @model
+ * @generated
+ */
+public interface TransformerEncoder extends Transformer_layers_2 {
+	/**
+	 * Returns the value of the '<em><b>Encoder layer</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Encoder layer</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Encoder layer</em>' reference.
+	 * @see #setEncoder_layer(TransformerEncoderLayer)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage#getTransformerEncoder_Encoder_layer()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	TransformerEncoderLayer getEncoder_layer();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerEncoder#getEncoder_layer <em>Encoder layer</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Encoder layer</em>' reference.
+	 * @see #getEncoder_layer()
+	 * @generated
+	 */
+	void setEncoder_layer(TransformerEncoderLayer value);
+
+} // TransformerEncoder
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/TransformerEncoderLayer.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/TransformerEncoderLayer.java
new file mode 100644
index 0000000..849598a
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/TransformerEncoderLayer.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Transformer Encoder Layer</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage#getTransformerEncoderLayer()
+ * @model
+ * @generated
+ */
+public interface TransformerEncoderLayer extends Transformer_layers_1 {
+} // TransformerEncoderLayer
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/Transformer_layers.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/Transformer_layers.java
new file mode 100644
index 0000000..0debc7c
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/Transformer_layers.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Transformer layers</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage#getTransformer_layers()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Transformer_layers extends Model {
+} // Transformer_layers
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/Transformer_layersFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/Transformer_layersFactory.java
new file mode 100644
index 0000000..b73213f
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/Transformer_layersFactory.java
@@ -0,0 +1,87 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage
+ * @generated
+ */
+public interface Transformer_layersFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	Transformer_layersFactory eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Transformer</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Transformer</em>'.
+	 * @generated
+	 */
+	Transformer createTransformer();
+
+	/**
+	 * Returns a new object of class '<em>Transformer Encoder</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Transformer Encoder</em>'.
+	 * @generated
+	 */
+	TransformerEncoder createTransformerEncoder();
+
+	/**
+	 * Returns a new object of class '<em>Transformer Encoder Layer</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Transformer Encoder Layer</em>'.
+	 * @generated
+	 */
+	TransformerEncoderLayer createTransformerEncoderLayer();
+
+	/**
+	 * Returns a new object of class '<em>Transformer Decoder</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Transformer Decoder</em>'.
+	 * @generated
+	 */
+	TransformerDecoder createTransformerDecoder();
+
+	/**
+	 * Returns a new object of class '<em>Transformer Decoder Layer</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Transformer Decoder Layer</em>'.
+	 * @generated
+	 */
+	TransformerDecoderLayer createTransformerDecoderLayer();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	Transformer_layersPackage getTransformer_layersPackage();
+
+} //Transformer_layersFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/Transformer_layersPackage.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/Transformer_layersPackage.java
new file mode 100644
index 0000000..db4c904
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/Transformer_layersPackage.java
@@ -0,0 +1,1519 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface Transformer_layersPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "Transformer_layers"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://www.eclipse.org/papyrus/AIML/transformer/1"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "AIML.Transformer_layers"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	Transformer_layersPackage eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersImpl <em>Transformer layers</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl#getTransformer_layers()
+	 * @generated
+	 */
+	int TRANSFORMER_LAYERS = 0;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS__BASE_CLASS = ModulePackage.MODEL__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS__NAME = ModulePackage.MODEL__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS__DATA = ModulePackage.MODEL__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS__REQUIRES_GRAD = ModulePackage.MODEL__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS__SUB_MODULE = ModulePackage.MODEL__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS__OPTIMIZER = ModulePackage.MODEL__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS__LOSS = ModulePackage.MODEL__LOSS;
+
+	/**
+	 * The number of structural features of the '<em>Transformer layers</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS_FEATURE_COUNT = ModulePackage.MODEL_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Transformer layers</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS_OPERATION_COUNT = ModulePackage.MODEL_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layers_1Impl <em>Transformer layers 1</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layers_1Impl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl#getTransformer_layers_1()
+	 * @generated
+	 */
+	int TRANSFORMER_LAYERS_1 = 1;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS_1__BASE_CLASS = TRANSFORMER_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS_1__NAME = TRANSFORMER_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS_1__DATA = TRANSFORMER_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS_1__REQUIRES_GRAD = TRANSFORMER_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS_1__SUB_MODULE = TRANSFORMER_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS_1__OPTIMIZER = TRANSFORMER_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS_1__LOSS = TRANSFORMER_LAYERS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Dmodel</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS_1__DMODEL = TRANSFORMER_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Nhead</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS_1__NHEAD = TRANSFORMER_LAYERS_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Dim feedforward</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS_1__DIM_FEEDFORWARD = TRANSFORMER_LAYERS_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Dropout</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS_1__DROPOUT = TRANSFORMER_LAYERS_FEATURE_COUNT + 3;
+
+	/**
+	 * The feature id for the '<em><b>Activation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS_1__ACTIVATION = TRANSFORMER_LAYERS_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of structural features of the '<em>Transformer layers 1</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS_1_FEATURE_COUNT = TRANSFORMER_LAYERS_FEATURE_COUNT + 5;
+
+	/**
+	 * The number of operations of the '<em>Transformer layers 1</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS_1_OPERATION_COUNT = TRANSFORMER_LAYERS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layers_2Impl <em>Transformer layers 2</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layers_2Impl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl#getTransformer_layers_2()
+	 * @generated
+	 */
+	int TRANSFORMER_LAYERS_2 = 2;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS_2__BASE_CLASS = TRANSFORMER_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS_2__NAME = TRANSFORMER_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS_2__DATA = TRANSFORMER_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS_2__REQUIRES_GRAD = TRANSFORMER_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS_2__SUB_MODULE = TRANSFORMER_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS_2__OPTIMIZER = TRANSFORMER_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS_2__LOSS = TRANSFORMER_LAYERS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Num layers</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS_2__NUM_LAYERS = TRANSFORMER_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Norm</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS_2__NORM = TRANSFORMER_LAYERS_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Transformer layers 2</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS_2_FEATURE_COUNT = TRANSFORMER_LAYERS_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Transformer layers 2</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_LAYERS_2_OPERATION_COUNT = TRANSFORMER_LAYERS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.TransformerImpl <em>Transformer</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.TransformerImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl#getTransformer()
+	 * @generated
+	 */
+	int TRANSFORMER = 3;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER__BASE_CLASS = TRANSFORMER_LAYERS_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER__NAME = TRANSFORMER_LAYERS_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER__DATA = TRANSFORMER_LAYERS_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER__REQUIRES_GRAD = TRANSFORMER_LAYERS_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER__SUB_MODULE = TRANSFORMER_LAYERS_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER__OPTIMIZER = TRANSFORMER_LAYERS_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER__LOSS = TRANSFORMER_LAYERS_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Dmodel</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER__DMODEL = TRANSFORMER_LAYERS_1__DMODEL;
+
+	/**
+	 * The feature id for the '<em><b>Nhead</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER__NHEAD = TRANSFORMER_LAYERS_1__NHEAD;
+
+	/**
+	 * The feature id for the '<em><b>Dim feedforward</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER__DIM_FEEDFORWARD = TRANSFORMER_LAYERS_1__DIM_FEEDFORWARD;
+
+	/**
+	 * The feature id for the '<em><b>Dropout</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER__DROPOUT = TRANSFORMER_LAYERS_1__DROPOUT;
+
+	/**
+	 * The feature id for the '<em><b>Activation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER__ACTIVATION = TRANSFORMER_LAYERS_1__ACTIVATION;
+
+	/**
+	 * The feature id for the '<em><b>Num encoder layers</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER__NUM_ENCODER_LAYERS = TRANSFORMER_LAYERS_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Num decoder layers</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER__NUM_DECODER_LAYERS = TRANSFORMER_LAYERS_1_FEATURE_COUNT + 1;
+
+	/**
+	 * The feature id for the '<em><b>Custom encoder</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER__CUSTOM_ENCODER = TRANSFORMER_LAYERS_1_FEATURE_COUNT + 2;
+
+	/**
+	 * The feature id for the '<em><b>Custom decoder</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER__CUSTOM_DECODER = TRANSFORMER_LAYERS_1_FEATURE_COUNT + 3;
+
+	/**
+	 * The number of structural features of the '<em>Transformer</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_FEATURE_COUNT = TRANSFORMER_LAYERS_1_FEATURE_COUNT + 4;
+
+	/**
+	 * The number of operations of the '<em>Transformer</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_OPERATION_COUNT = TRANSFORMER_LAYERS_1_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.TransformerEncoderImpl <em>Transformer Encoder</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.TransformerEncoderImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl#getTransformerEncoder()
+	 * @generated
+	 */
+	int TRANSFORMER_ENCODER = 4;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_ENCODER__BASE_CLASS = TRANSFORMER_LAYERS_2__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_ENCODER__NAME = TRANSFORMER_LAYERS_2__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_ENCODER__DATA = TRANSFORMER_LAYERS_2__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_ENCODER__REQUIRES_GRAD = TRANSFORMER_LAYERS_2__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_ENCODER__SUB_MODULE = TRANSFORMER_LAYERS_2__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_ENCODER__OPTIMIZER = TRANSFORMER_LAYERS_2__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_ENCODER__LOSS = TRANSFORMER_LAYERS_2__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Num layers</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_ENCODER__NUM_LAYERS = TRANSFORMER_LAYERS_2__NUM_LAYERS;
+
+	/**
+	 * The feature id for the '<em><b>Norm</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_ENCODER__NORM = TRANSFORMER_LAYERS_2__NORM;
+
+	/**
+	 * The feature id for the '<em><b>Encoder layer</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_ENCODER__ENCODER_LAYER = TRANSFORMER_LAYERS_2_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Transformer Encoder</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_ENCODER_FEATURE_COUNT = TRANSFORMER_LAYERS_2_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Transformer Encoder</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_ENCODER_OPERATION_COUNT = TRANSFORMER_LAYERS_2_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.TransformerEncoderLayerImpl <em>Transformer Encoder Layer</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.TransformerEncoderLayerImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl#getTransformerEncoderLayer()
+	 * @generated
+	 */
+	int TRANSFORMER_ENCODER_LAYER = 5;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_ENCODER_LAYER__BASE_CLASS = TRANSFORMER_LAYERS_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_ENCODER_LAYER__NAME = TRANSFORMER_LAYERS_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_ENCODER_LAYER__DATA = TRANSFORMER_LAYERS_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_ENCODER_LAYER__REQUIRES_GRAD = TRANSFORMER_LAYERS_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_ENCODER_LAYER__SUB_MODULE = TRANSFORMER_LAYERS_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_ENCODER_LAYER__OPTIMIZER = TRANSFORMER_LAYERS_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_ENCODER_LAYER__LOSS = TRANSFORMER_LAYERS_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Dmodel</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_ENCODER_LAYER__DMODEL = TRANSFORMER_LAYERS_1__DMODEL;
+
+	/**
+	 * The feature id for the '<em><b>Nhead</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_ENCODER_LAYER__NHEAD = TRANSFORMER_LAYERS_1__NHEAD;
+
+	/**
+	 * The feature id for the '<em><b>Dim feedforward</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_ENCODER_LAYER__DIM_FEEDFORWARD = TRANSFORMER_LAYERS_1__DIM_FEEDFORWARD;
+
+	/**
+	 * The feature id for the '<em><b>Dropout</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_ENCODER_LAYER__DROPOUT = TRANSFORMER_LAYERS_1__DROPOUT;
+
+	/**
+	 * The feature id for the '<em><b>Activation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_ENCODER_LAYER__ACTIVATION = TRANSFORMER_LAYERS_1__ACTIVATION;
+
+	/**
+	 * The number of structural features of the '<em>Transformer Encoder Layer</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_ENCODER_LAYER_FEATURE_COUNT = TRANSFORMER_LAYERS_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Transformer Encoder Layer</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_ENCODER_LAYER_OPERATION_COUNT = TRANSFORMER_LAYERS_1_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.TransformerDecoderImpl <em>Transformer Decoder</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.TransformerDecoderImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl#getTransformerDecoder()
+	 * @generated
+	 */
+	int TRANSFORMER_DECODER = 6;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_DECODER__BASE_CLASS = TRANSFORMER_LAYERS_2__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_DECODER__NAME = TRANSFORMER_LAYERS_2__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_DECODER__DATA = TRANSFORMER_LAYERS_2__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_DECODER__REQUIRES_GRAD = TRANSFORMER_LAYERS_2__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_DECODER__SUB_MODULE = TRANSFORMER_LAYERS_2__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_DECODER__OPTIMIZER = TRANSFORMER_LAYERS_2__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_DECODER__LOSS = TRANSFORMER_LAYERS_2__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Num layers</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_DECODER__NUM_LAYERS = TRANSFORMER_LAYERS_2__NUM_LAYERS;
+
+	/**
+	 * The feature id for the '<em><b>Norm</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_DECODER__NORM = TRANSFORMER_LAYERS_2__NORM;
+
+	/**
+	 * The feature id for the '<em><b>Decoder layer</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_DECODER__DECODER_LAYER = TRANSFORMER_LAYERS_2_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Transformer Decoder</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_DECODER_FEATURE_COUNT = TRANSFORMER_LAYERS_2_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Transformer Decoder</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_DECODER_OPERATION_COUNT = TRANSFORMER_LAYERS_2_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.TransformerDecoderLayerImpl <em>Transformer Decoder Layer</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.TransformerDecoderLayerImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl#getTransformerDecoderLayer()
+	 * @generated
+	 */
+	int TRANSFORMER_DECODER_LAYER = 7;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_DECODER_LAYER__BASE_CLASS = TRANSFORMER_LAYERS_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_DECODER_LAYER__NAME = TRANSFORMER_LAYERS_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_DECODER_LAYER__DATA = TRANSFORMER_LAYERS_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_DECODER_LAYER__REQUIRES_GRAD = TRANSFORMER_LAYERS_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_DECODER_LAYER__SUB_MODULE = TRANSFORMER_LAYERS_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_DECODER_LAYER__OPTIMIZER = TRANSFORMER_LAYERS_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_DECODER_LAYER__LOSS = TRANSFORMER_LAYERS_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Dmodel</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_DECODER_LAYER__DMODEL = TRANSFORMER_LAYERS_1__DMODEL;
+
+	/**
+	 * The feature id for the '<em><b>Nhead</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_DECODER_LAYER__NHEAD = TRANSFORMER_LAYERS_1__NHEAD;
+
+	/**
+	 * The feature id for the '<em><b>Dim feedforward</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_DECODER_LAYER__DIM_FEEDFORWARD = TRANSFORMER_LAYERS_1__DIM_FEEDFORWARD;
+
+	/**
+	 * The feature id for the '<em><b>Dropout</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_DECODER_LAYER__DROPOUT = TRANSFORMER_LAYERS_1__DROPOUT;
+
+	/**
+	 * The feature id for the '<em><b>Activation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_DECODER_LAYER__ACTIVATION = TRANSFORMER_LAYERS_1__ACTIVATION;
+
+	/**
+	 * The number of structural features of the '<em>Transformer Decoder Layer</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_DECODER_LAYER_FEATURE_COUNT = TRANSFORMER_LAYERS_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Transformer Decoder Layer</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int TRANSFORMER_DECODER_LAYER_OPERATION_COUNT = TRANSFORMER_LAYERS_1_OPERATION_COUNT + 0;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers <em>Transformer layers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Transformer layers</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers
+	 * @generated
+	 */
+	EClass getTransformer_layers();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_1 <em>Transformer layers 1</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Transformer layers 1</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_1
+	 * @generated
+	 */
+	EClass getTransformer_layers_1();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_1#getD_model <em>Dmodel</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Dmodel</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_1#getD_model()
+	 * @see #getTransformer_layers_1()
+	 * @generated
+	 */
+	EAttribute getTransformer_layers_1_D_model();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_1#getNhead <em>Nhead</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Nhead</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_1#getNhead()
+	 * @see #getTransformer_layers_1()
+	 * @generated
+	 */
+	EAttribute getTransformer_layers_1_Nhead();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_1#getDim_feedforward <em>Dim feedforward</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Dim feedforward</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_1#getDim_feedforward()
+	 * @see #getTransformer_layers_1()
+	 * @generated
+	 */
+	EAttribute getTransformer_layers_1_Dim_feedforward();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_1#getDropout <em>Dropout</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Dropout</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_1#getDropout()
+	 * @see #getTransformer_layers_1()
+	 * @generated
+	 */
+	EAttribute getTransformer_layers_1_Dropout();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_1#getActivation <em>Activation</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Activation</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_1#getActivation()
+	 * @see #getTransformer_layers_1()
+	 * @generated
+	 */
+	EAttribute getTransformer_layers_1_Activation();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_2 <em>Transformer layers 2</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Transformer layers 2</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_2
+	 * @generated
+	 */
+	EClass getTransformer_layers_2();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_2#getNum_layers <em>Num layers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Num layers</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_2#getNum_layers()
+	 * @see #getTransformer_layers_2()
+	 * @generated
+	 */
+	EAttribute getTransformer_layers_2_Num_layers();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_2#getNorm <em>Norm</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Norm</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_2#getNorm()
+	 * @see #getTransformer_layers_2()
+	 * @generated
+	 */
+	EReference getTransformer_layers_2_Norm();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer <em>Transformer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Transformer</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer
+	 * @generated
+	 */
+	EClass getTransformer();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer#getNum_encoder_layers <em>Num encoder layers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Num encoder layers</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer#getNum_encoder_layers()
+	 * @see #getTransformer()
+	 * @generated
+	 */
+	EAttribute getTransformer_Num_encoder_layers();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer#getNum_decoder_layers <em>Num decoder layers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Num decoder layers</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer#getNum_decoder_layers()
+	 * @see #getTransformer()
+	 * @generated
+	 */
+	EAttribute getTransformer_Num_decoder_layers();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer#getCustom_encoder <em>Custom encoder</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Custom encoder</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer#getCustom_encoder()
+	 * @see #getTransformer()
+	 * @generated
+	 */
+	EReference getTransformer_Custom_encoder();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer#getCustom_decoder <em>Custom decoder</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Custom decoder</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer#getCustom_decoder()
+	 * @see #getTransformer()
+	 * @generated
+	 */
+	EReference getTransformer_Custom_decoder();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerEncoder <em>Transformer Encoder</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Transformer Encoder</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerEncoder
+	 * @generated
+	 */
+	EClass getTransformerEncoder();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerEncoder#getEncoder_layer <em>Encoder layer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Encoder layer</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerEncoder#getEncoder_layer()
+	 * @see #getTransformerEncoder()
+	 * @generated
+	 */
+	EReference getTransformerEncoder_Encoder_layer();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerEncoderLayer <em>Transformer Encoder Layer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Transformer Encoder Layer</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerEncoderLayer
+	 * @generated
+	 */
+	EClass getTransformerEncoderLayer();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerDecoder <em>Transformer Decoder</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Transformer Decoder</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerDecoder
+	 * @generated
+	 */
+	EClass getTransformerDecoder();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerDecoder#getDecoder_layer <em>Decoder layer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Decoder layer</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerDecoder#getDecoder_layer()
+	 * @see #getTransformerDecoder()
+	 * @generated
+	 */
+	EReference getTransformerDecoder_Decoder_layer();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerDecoderLayer <em>Transformer Decoder Layer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Transformer Decoder Layer</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerDecoderLayer
+	 * @generated
+	 */
+	EClass getTransformerDecoderLayer();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	Transformer_layersFactory getTransformer_layersFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersImpl <em>Transformer layers</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl#getTransformer_layers()
+		 * @generated
+		 */
+		EClass TRANSFORMER_LAYERS = eINSTANCE.getTransformer_layers();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layers_1Impl <em>Transformer layers 1</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layers_1Impl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl#getTransformer_layers_1()
+		 * @generated
+		 */
+		EClass TRANSFORMER_LAYERS_1 = eINSTANCE.getTransformer_layers_1();
+
+		/**
+		 * The meta object literal for the '<em><b>Dmodel</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute TRANSFORMER_LAYERS_1__DMODEL = eINSTANCE.getTransformer_layers_1_D_model();
+
+		/**
+		 * The meta object literal for the '<em><b>Nhead</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute TRANSFORMER_LAYERS_1__NHEAD = eINSTANCE.getTransformer_layers_1_Nhead();
+
+		/**
+		 * The meta object literal for the '<em><b>Dim feedforward</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute TRANSFORMER_LAYERS_1__DIM_FEEDFORWARD = eINSTANCE.getTransformer_layers_1_Dim_feedforward();
+
+		/**
+		 * The meta object literal for the '<em><b>Dropout</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute TRANSFORMER_LAYERS_1__DROPOUT = eINSTANCE.getTransformer_layers_1_Dropout();
+
+		/**
+		 * The meta object literal for the '<em><b>Activation</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute TRANSFORMER_LAYERS_1__ACTIVATION = eINSTANCE.getTransformer_layers_1_Activation();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layers_2Impl <em>Transformer layers 2</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layers_2Impl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl#getTransformer_layers_2()
+		 * @generated
+		 */
+		EClass TRANSFORMER_LAYERS_2 = eINSTANCE.getTransformer_layers_2();
+
+		/**
+		 * The meta object literal for the '<em><b>Num layers</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute TRANSFORMER_LAYERS_2__NUM_LAYERS = eINSTANCE.getTransformer_layers_2_Num_layers();
+
+		/**
+		 * The meta object literal for the '<em><b>Norm</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference TRANSFORMER_LAYERS_2__NORM = eINSTANCE.getTransformer_layers_2_Norm();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.TransformerImpl <em>Transformer</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.TransformerImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl#getTransformer()
+		 * @generated
+		 */
+		EClass TRANSFORMER = eINSTANCE.getTransformer();
+
+		/**
+		 * The meta object literal for the '<em><b>Num encoder layers</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute TRANSFORMER__NUM_ENCODER_LAYERS = eINSTANCE.getTransformer_Num_encoder_layers();
+
+		/**
+		 * The meta object literal for the '<em><b>Num decoder layers</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute TRANSFORMER__NUM_DECODER_LAYERS = eINSTANCE.getTransformer_Num_decoder_layers();
+
+		/**
+		 * The meta object literal for the '<em><b>Custom encoder</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference TRANSFORMER__CUSTOM_ENCODER = eINSTANCE.getTransformer_Custom_encoder();
+
+		/**
+		 * The meta object literal for the '<em><b>Custom decoder</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference TRANSFORMER__CUSTOM_DECODER = eINSTANCE.getTransformer_Custom_decoder();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.TransformerEncoderImpl <em>Transformer Encoder</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.TransformerEncoderImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl#getTransformerEncoder()
+		 * @generated
+		 */
+		EClass TRANSFORMER_ENCODER = eINSTANCE.getTransformerEncoder();
+
+		/**
+		 * The meta object literal for the '<em><b>Encoder layer</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference TRANSFORMER_ENCODER__ENCODER_LAYER = eINSTANCE.getTransformerEncoder_Encoder_layer();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.TransformerEncoderLayerImpl <em>Transformer Encoder Layer</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.TransformerEncoderLayerImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl#getTransformerEncoderLayer()
+		 * @generated
+		 */
+		EClass TRANSFORMER_ENCODER_LAYER = eINSTANCE.getTransformerEncoderLayer();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.TransformerDecoderImpl <em>Transformer Decoder</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.TransformerDecoderImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl#getTransformerDecoder()
+		 * @generated
+		 */
+		EClass TRANSFORMER_DECODER = eINSTANCE.getTransformerDecoder();
+
+		/**
+		 * The meta object literal for the '<em><b>Decoder layer</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference TRANSFORMER_DECODER__DECODER_LAYER = eINSTANCE.getTransformerDecoder_Decoder_layer();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.TransformerDecoderLayerImpl <em>Transformer Decoder Layer</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.TransformerDecoderLayerImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl#getTransformerDecoderLayer()
+		 * @generated
+		 */
+		EClass TRANSFORMER_DECODER_LAYER = eINSTANCE.getTransformerDecoderLayer();
+
+	}
+
+} //Transformer_layersPackage
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/Transformer_layers_1.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/Transformer_layers_1.java
new file mode 100644
index 0000000..8ce8aa3
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/Transformer_layers_1.java
@@ -0,0 +1,166 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Transformer layers 1</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_1#getD_model <em>Dmodel</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_1#getNhead <em>Nhead</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_1#getDim_feedforward <em>Dim feedforward</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_1#getDropout <em>Dropout</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_1#getActivation <em>Activation</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage#getTransformer_layers_1()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Transformer_layers_1 extends Transformer_layers {
+	/**
+	 * Returns the value of the '<em><b>Dmodel</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Dmodel</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Dmodel</em>' attribute.
+	 * @see #setD_model(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage#getTransformer_layers_1_D_model()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	int getD_model();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_1#getD_model <em>Dmodel</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Dmodel</em>' attribute.
+	 * @see #getD_model()
+	 * @generated
+	 */
+	void setD_model(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Nhead</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Nhead</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Nhead</em>' attribute.
+	 * @see #setNhead(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage#getTransformer_layers_1_Nhead()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	int getNhead();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_1#getNhead <em>Nhead</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Nhead</em>' attribute.
+	 * @see #getNhead()
+	 * @generated
+	 */
+	void setNhead(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Dim feedforward</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Dim feedforward</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Dim feedforward</em>' attribute.
+	 * @see #setDim_feedforward(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage#getTransformer_layers_1_Dim_feedforward()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	int getDim_feedforward();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_1#getDim_feedforward <em>Dim feedforward</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Dim feedforward</em>' attribute.
+	 * @see #getDim_feedforward()
+	 * @generated
+	 */
+	void setDim_feedforward(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Dropout</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Dropout</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Dropout</em>' attribute.
+	 * @see #setDropout(double)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage#getTransformer_layers_1_Dropout()
+	 * @model dataType="org.eclipse.uml2.types.Real" ordered="false"
+	 * @generated
+	 */
+	double getDropout();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_1#getDropout <em>Dropout</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Dropout</em>' attribute.
+	 * @see #getDropout()
+	 * @generated
+	 */
+	void setDropout(double value);
+
+	/**
+	 * Returns the value of the '<em><b>Activation</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Activation</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Activation</em>' attribute.
+	 * @see #setActivation(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage#getTransformer_layers_1_Activation()
+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+	 * @generated
+	 */
+	String getActivation();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_1#getActivation <em>Activation</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Activation</em>' attribute.
+	 * @see #getActivation()
+	 * @generated
+	 */
+	void setActivation(String value);
+
+} // Transformer_layers_1
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/Transformer_layers_2.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/Transformer_layers_2.java
new file mode 100644
index 0000000..482e346
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/Transformer_layers_2.java
@@ -0,0 +1,86 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LayerNorm;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Transformer layers 2</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_2#getNum_layers <em>Num layers</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_2#getNorm <em>Norm</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage#getTransformer_layers_2()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Transformer_layers_2 extends Transformer_layers {
+	/**
+	 * Returns the value of the '<em><b>Num layers</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Num layers</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Num layers</em>' attribute.
+	 * @see #setNum_layers(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage#getTransformer_layers_2_Num_layers()
+	 * @model dataType="org.eclipse.uml2.types.Integer" required="true" ordered="false"
+	 * @generated
+	 */
+	int getNum_layers();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_2#getNum_layers <em>Num layers</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Num layers</em>' attribute.
+	 * @see #getNum_layers()
+	 * @generated
+	 */
+	void setNum_layers(int value);
+
+	/**
+	 * Returns the value of the '<em><b>Norm</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Norm</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Norm</em>' reference.
+	 * @see #setNorm(LayerNorm)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage#getTransformer_layers_2_Norm()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	LayerNorm getNorm();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_2#getNorm <em>Norm</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Norm</em>' reference.
+	 * @see #getNorm()
+	 * @generated
+	 */
+	void setNorm(LayerNorm value);
+
+} // Transformer_layers_2
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/impl/TransformerDecoderImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/impl/TransformerDecoderImpl.java
new file mode 100644
index 0000000..56daaed
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/impl/TransformerDecoderImpl.java
@@ -0,0 +1,167 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerDecoder;
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerDecoderLayer;
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Transformer Decoder</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.TransformerDecoderImpl#getDecoder_layer <em>Decoder layer</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TransformerDecoderImpl extends Transformer_layers_2Impl implements TransformerDecoder {
+	/**
+	 * The cached value of the '{@link #getDecoder_layer() <em>Decoder layer</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDecoder_layer()
+	 * @generated
+	 * @ordered
+	 */
+	protected TransformerDecoderLayer decoder_layer;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TransformerDecoderImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Transformer_layersPackage.Literals.TRANSFORMER_DECODER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public TransformerDecoderLayer getDecoder_layer() {
+		if (decoder_layer != null && decoder_layer.eIsProxy()) {
+			InternalEObject oldDecoder_layer = (InternalEObject)decoder_layer;
+			decoder_layer = (TransformerDecoderLayer)eResolveProxy(oldDecoder_layer);
+			if (decoder_layer != oldDecoder_layer) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, Transformer_layersPackage.TRANSFORMER_DECODER__DECODER_LAYER, oldDecoder_layer, decoder_layer));
+			}
+		}
+		return decoder_layer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TransformerDecoderLayer basicGetDecoder_layer() {
+		return decoder_layer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDecoder_layer(TransformerDecoderLayer newDecoder_layer) {
+		TransformerDecoderLayer oldDecoder_layer = decoder_layer;
+		decoder_layer = newDecoder_layer;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Transformer_layersPackage.TRANSFORMER_DECODER__DECODER_LAYER, oldDecoder_layer, decoder_layer));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Transformer_layersPackage.TRANSFORMER_DECODER__DECODER_LAYER:
+				if (resolve) return getDecoder_layer();
+				return basicGetDecoder_layer();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Transformer_layersPackage.TRANSFORMER_DECODER__DECODER_LAYER:
+				setDecoder_layer((TransformerDecoderLayer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Transformer_layersPackage.TRANSFORMER_DECODER__DECODER_LAYER:
+				setDecoder_layer((TransformerDecoderLayer)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Transformer_layersPackage.TRANSFORMER_DECODER__DECODER_LAYER:
+				return decoder_layer != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //TransformerDecoderImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/impl/TransformerDecoderLayerImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/impl/TransformerDecoderLayerImpl.java
new file mode 100644
index 0000000..c91e046
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/impl/TransformerDecoderLayerImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerDecoderLayer;
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Transformer Decoder Layer</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class TransformerDecoderLayerImpl extends Transformer_layers_1Impl implements TransformerDecoderLayer {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TransformerDecoderLayerImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Transformer_layersPackage.Literals.TRANSFORMER_DECODER_LAYER;
+	}
+
+} //TransformerDecoderLayerImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/impl/TransformerEncoderImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/impl/TransformerEncoderImpl.java
new file mode 100644
index 0000000..3cad4b3
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/impl/TransformerEncoderImpl.java
@@ -0,0 +1,167 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerEncoder;
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerEncoderLayer;
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Transformer Encoder</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.TransformerEncoderImpl#getEncoder_layer <em>Encoder layer</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TransformerEncoderImpl extends Transformer_layers_2Impl implements TransformerEncoder {
+	/**
+	 * The cached value of the '{@link #getEncoder_layer() <em>Encoder layer</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getEncoder_layer()
+	 * @generated
+	 * @ordered
+	 */
+	protected TransformerEncoderLayer encoder_layer;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TransformerEncoderImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Transformer_layersPackage.Literals.TRANSFORMER_ENCODER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public TransformerEncoderLayer getEncoder_layer() {
+		if (encoder_layer != null && encoder_layer.eIsProxy()) {
+			InternalEObject oldEncoder_layer = (InternalEObject)encoder_layer;
+			encoder_layer = (TransformerEncoderLayer)eResolveProxy(oldEncoder_layer);
+			if (encoder_layer != oldEncoder_layer) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, Transformer_layersPackage.TRANSFORMER_ENCODER__ENCODER_LAYER, oldEncoder_layer, encoder_layer));
+			}
+		}
+		return encoder_layer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TransformerEncoderLayer basicGetEncoder_layer() {
+		return encoder_layer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setEncoder_layer(TransformerEncoderLayer newEncoder_layer) {
+		TransformerEncoderLayer oldEncoder_layer = encoder_layer;
+		encoder_layer = newEncoder_layer;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Transformer_layersPackage.TRANSFORMER_ENCODER__ENCODER_LAYER, oldEncoder_layer, encoder_layer));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Transformer_layersPackage.TRANSFORMER_ENCODER__ENCODER_LAYER:
+				if (resolve) return getEncoder_layer();
+				return basicGetEncoder_layer();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Transformer_layersPackage.TRANSFORMER_ENCODER__ENCODER_LAYER:
+				setEncoder_layer((TransformerEncoderLayer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Transformer_layersPackage.TRANSFORMER_ENCODER__ENCODER_LAYER:
+				setEncoder_layer((TransformerEncoderLayer)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Transformer_layersPackage.TRANSFORMER_ENCODER__ENCODER_LAYER:
+				return encoder_layer != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //TransformerEncoderImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/impl/TransformerEncoderLayerImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/impl/TransformerEncoderLayerImpl.java
new file mode 100644
index 0000000..d086d2e
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/impl/TransformerEncoderLayerImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerEncoderLayer;
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Transformer Encoder Layer</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class TransformerEncoderLayerImpl extends Transformer_layers_1Impl implements TransformerEncoderLayer {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TransformerEncoderLayerImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Transformer_layersPackage.Literals.TRANSFORMER_ENCODER_LAYER;
+	}
+
+} //TransformerEncoderLayerImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/impl/TransformerImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/impl/TransformerImpl.java
new file mode 100644
index 0000000..78c218c
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/impl/TransformerImpl.java
@@ -0,0 +1,356 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer;
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerDecoder;
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerEncoder;
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Transformer</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.TransformerImpl#getNum_encoder_layers <em>Num encoder layers</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.TransformerImpl#getNum_decoder_layers <em>Num decoder layers</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.TransformerImpl#getCustom_encoder <em>Custom encoder</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.TransformerImpl#getCustom_decoder <em>Custom decoder</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class TransformerImpl extends Transformer_layers_1Impl implements Transformer {
+	/**
+	 * The default value of the '{@link #getNum_encoder_layers() <em>Num encoder layers</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNum_encoder_layers()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int NUM_ENCODER_LAYERS_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getNum_encoder_layers() <em>Num encoder layers</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNum_encoder_layers()
+	 * @generated
+	 * @ordered
+	 */
+	protected int num_encoder_layers = NUM_ENCODER_LAYERS_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getNum_decoder_layers() <em>Num decoder layers</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNum_decoder_layers()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int NUM_DECODER_LAYERS_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getNum_decoder_layers() <em>Num decoder layers</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNum_decoder_layers()
+	 * @generated
+	 * @ordered
+	 */
+	protected int num_decoder_layers = NUM_DECODER_LAYERS_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getCustom_encoder() <em>Custom encoder</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCustom_encoder()
+	 * @generated
+	 * @ordered
+	 */
+	protected TransformerEncoder custom_encoder;
+
+	/**
+	 * The cached value of the '{@link #getCustom_decoder() <em>Custom decoder</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getCustom_decoder()
+	 * @generated
+	 * @ordered
+	 */
+	protected TransformerDecoder custom_decoder;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected TransformerImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Transformer_layersPackage.Literals.TRANSFORMER;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getNum_encoder_layers() {
+		return num_encoder_layers;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setNum_encoder_layers(int newNum_encoder_layers) {
+		int oldNum_encoder_layers = num_encoder_layers;
+		num_encoder_layers = newNum_encoder_layers;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Transformer_layersPackage.TRANSFORMER__NUM_ENCODER_LAYERS, oldNum_encoder_layers, num_encoder_layers));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getNum_decoder_layers() {
+		return num_decoder_layers;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setNum_decoder_layers(int newNum_decoder_layers) {
+		int oldNum_decoder_layers = num_decoder_layers;
+		num_decoder_layers = newNum_decoder_layers;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Transformer_layersPackage.TRANSFORMER__NUM_DECODER_LAYERS, oldNum_decoder_layers, num_decoder_layers));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public TransformerEncoder getCustom_encoder() {
+		if (custom_encoder != null && custom_encoder.eIsProxy()) {
+			InternalEObject oldCustom_encoder = (InternalEObject)custom_encoder;
+			custom_encoder = (TransformerEncoder)eResolveProxy(oldCustom_encoder);
+			if (custom_encoder != oldCustom_encoder) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, Transformer_layersPackage.TRANSFORMER__CUSTOM_ENCODER, oldCustom_encoder, custom_encoder));
+			}
+		}
+		return custom_encoder;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TransformerEncoder basicGetCustom_encoder() {
+		return custom_encoder;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setCustom_encoder(TransformerEncoder newCustom_encoder) {
+		TransformerEncoder oldCustom_encoder = custom_encoder;
+		custom_encoder = newCustom_encoder;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Transformer_layersPackage.TRANSFORMER__CUSTOM_ENCODER, oldCustom_encoder, custom_encoder));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public TransformerDecoder getCustom_decoder() {
+		if (custom_decoder != null && custom_decoder.eIsProxy()) {
+			InternalEObject oldCustom_decoder = (InternalEObject)custom_decoder;
+			custom_decoder = (TransformerDecoder)eResolveProxy(oldCustom_decoder);
+			if (custom_decoder != oldCustom_decoder) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, Transformer_layersPackage.TRANSFORMER__CUSTOM_DECODER, oldCustom_decoder, custom_decoder));
+			}
+		}
+		return custom_decoder;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public TransformerDecoder basicGetCustom_decoder() {
+		return custom_decoder;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setCustom_decoder(TransformerDecoder newCustom_decoder) {
+		TransformerDecoder oldCustom_decoder = custom_decoder;
+		custom_decoder = newCustom_decoder;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Transformer_layersPackage.TRANSFORMER__CUSTOM_DECODER, oldCustom_decoder, custom_decoder));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Transformer_layersPackage.TRANSFORMER__NUM_ENCODER_LAYERS:
+				return getNum_encoder_layers();
+			case Transformer_layersPackage.TRANSFORMER__NUM_DECODER_LAYERS:
+				return getNum_decoder_layers();
+			case Transformer_layersPackage.TRANSFORMER__CUSTOM_ENCODER:
+				if (resolve) return getCustom_encoder();
+				return basicGetCustom_encoder();
+			case Transformer_layersPackage.TRANSFORMER__CUSTOM_DECODER:
+				if (resolve) return getCustom_decoder();
+				return basicGetCustom_decoder();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Transformer_layersPackage.TRANSFORMER__NUM_ENCODER_LAYERS:
+				setNum_encoder_layers((Integer)newValue);
+				return;
+			case Transformer_layersPackage.TRANSFORMER__NUM_DECODER_LAYERS:
+				setNum_decoder_layers((Integer)newValue);
+				return;
+			case Transformer_layersPackage.TRANSFORMER__CUSTOM_ENCODER:
+				setCustom_encoder((TransformerEncoder)newValue);
+				return;
+			case Transformer_layersPackage.TRANSFORMER__CUSTOM_DECODER:
+				setCustom_decoder((TransformerDecoder)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Transformer_layersPackage.TRANSFORMER__NUM_ENCODER_LAYERS:
+				setNum_encoder_layers(NUM_ENCODER_LAYERS_EDEFAULT);
+				return;
+			case Transformer_layersPackage.TRANSFORMER__NUM_DECODER_LAYERS:
+				setNum_decoder_layers(NUM_DECODER_LAYERS_EDEFAULT);
+				return;
+			case Transformer_layersPackage.TRANSFORMER__CUSTOM_ENCODER:
+				setCustom_encoder((TransformerEncoder)null);
+				return;
+			case Transformer_layersPackage.TRANSFORMER__CUSTOM_DECODER:
+				setCustom_decoder((TransformerDecoder)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Transformer_layersPackage.TRANSFORMER__NUM_ENCODER_LAYERS:
+				return num_encoder_layers != NUM_ENCODER_LAYERS_EDEFAULT;
+			case Transformer_layersPackage.TRANSFORMER__NUM_DECODER_LAYERS:
+				return num_decoder_layers != NUM_DECODER_LAYERS_EDEFAULT;
+			case Transformer_layersPackage.TRANSFORMER__CUSTOM_ENCODER:
+				return custom_encoder != null;
+			case Transformer_layersPackage.TRANSFORMER__CUSTOM_DECODER:
+				return custom_decoder != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (num_encoder_layers: "); //$NON-NLS-1$
+		result.append(num_encoder_layers);
+		result.append(", num_decoder_layers: "); //$NON-NLS-1$
+		result.append(num_decoder_layers);
+		result.append(')');
+		return result.toString();
+	}
+
+} //TransformerImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/impl/Transformer_layersFactoryImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/impl/Transformer_layersFactoryImpl.java
new file mode 100644
index 0000000..ea54227
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/impl/Transformer_layersFactoryImpl.java
@@ -0,0 +1,154 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class Transformer_layersFactoryImpl extends EFactoryImpl implements Transformer_layersFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static Transformer_layersFactory init() {
+		try {
+			Transformer_layersFactory theTransformer_layersFactory = (Transformer_layersFactory)EPackage.Registry.INSTANCE.getEFactory(Transformer_layersPackage.eNS_URI);
+			if (theTransformer_layersFactory != null) {
+				return theTransformer_layersFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new Transformer_layersFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Transformer_layersFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case Transformer_layersPackage.TRANSFORMER: return createTransformer();
+			case Transformer_layersPackage.TRANSFORMER_ENCODER: return createTransformerEncoder();
+			case Transformer_layersPackage.TRANSFORMER_ENCODER_LAYER: return createTransformerEncoderLayer();
+			case Transformer_layersPackage.TRANSFORMER_DECODER: return createTransformerDecoder();
+			case Transformer_layersPackage.TRANSFORMER_DECODER_LAYER: return createTransformerDecoderLayer();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Transformer createTransformer() {
+		TransformerImpl transformer = new TransformerImpl();
+		return transformer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public TransformerEncoder createTransformerEncoder() {
+		TransformerEncoderImpl transformerEncoder = new TransformerEncoderImpl();
+		return transformerEncoder;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public TransformerEncoderLayer createTransformerEncoderLayer() {
+		TransformerEncoderLayerImpl transformerEncoderLayer = new TransformerEncoderLayerImpl();
+		return transformerEncoderLayer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public TransformerDecoder createTransformerDecoder() {
+		TransformerDecoderImpl transformerDecoder = new TransformerDecoderImpl();
+		return transformerDecoder;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public TransformerDecoderLayer createTransformerDecoderLayer() {
+		TransformerDecoderLayerImpl transformerDecoderLayer = new TransformerDecoderLayerImpl();
+		return transformerDecoderLayer;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Transformer_layersPackage getTransformer_layersPackage() {
+		return (Transformer_layersPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static Transformer_layersPackage getPackage() {
+		return Transformer_layersPackage.eINSTANCE;
+	}
+
+} //Transformer_layersFactoryImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/impl/Transformer_layersImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/impl/Transformer_layersImpl.java
new file mode 100644
index 0000000..0d5afda
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/impl/Transformer_layersImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModelImpl;
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers;
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Transformer layers</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public abstract class Transformer_layersImpl extends ModelImpl implements Transformer_layers {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Transformer_layersImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Transformer_layersPackage.Literals.TRANSFORMER_LAYERS;
+	}
+
+} //Transformer_layersImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/impl/Transformer_layersPackageImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/impl/Transformer_layersPackageImpl.java
new file mode 100644
index 0000000..14d8979
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/impl/Transformer_layersPackageImpl.java
@@ -0,0 +1,704 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.AIMLPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.Layer_weight_regularizersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModulePackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer;
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerDecoder;
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerDecoderLayer;
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerEncoder;
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerEncoderLayer;
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers;
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersFactory;
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_1;
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_2;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.DatatypesPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl.DatatypesPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.impl.AIMLPackageImpl;
+
+import org.eclipse.uml2.types.TypesPackage;
+
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class Transformer_layersPackageImpl extends EPackageImpl implements Transformer_layersPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass transformer_layersEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass transformer_layers_1EClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass transformer_layers_2EClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass transformerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass transformerEncoderEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass transformerEncoderLayerEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass transformerDecoderEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass transformerDecoderLayerEClass = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private Transformer_layersPackageImpl() {
+		super(eNS_URI, Transformer_layersFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>This method is used to initialize {@link Transformer_layersPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static Transformer_layersPackage init() {
+		if (isInited) return (Transformer_layersPackage)EPackage.Registry.INSTANCE.getEPackage(Transformer_layersPackage.eNS_URI);
+
+		// Obtain or create and register package
+		Object registeredTransformer_layersPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		Transformer_layersPackageImpl theTransformer_layersPackage = registeredTransformer_layersPackage instanceof Transformer_layersPackageImpl ? (Transformer_layersPackageImpl)registeredTransformer_layersPackage : new Transformer_layersPackageImpl();
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		EcorePackage.eINSTANCE.eClass();
+		TypesPackage.eINSTANCE.eClass();
+		UMLPackage.eINSTANCE.eClass();
+
+		// Obtain or create and register interdependencies
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AIMLPackage.eNS_URI);
+		AIMLPackageImpl theAIMLPackage = (AIMLPackageImpl)(registeredPackage instanceof AIMLPackageImpl ? registeredPackage : AIMLPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		ModulePackageImpl theModulePackage = (ModulePackageImpl)(registeredPackage instanceof ModulePackageImpl ? registeredPackage : ModulePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(TensorPackage.eNS_URI);
+		TensorPackageImpl theTensorPackage = (TensorPackageImpl)(registeredPackage instanceof TensorPackageImpl ? registeredPackage : TensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DatatypesPackage.eNS_URI);
+		DatatypesPackageImpl theDatatypesPackage = (DatatypesPackageImpl)(registeredPackage instanceof DatatypesPackageImpl ? registeredPackage : DatatypesPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Pooling_layersPackage.eNS_URI);
+		Pooling_layersPackageImpl thePooling_layersPackage = (Pooling_layersPackageImpl)(registeredPackage instanceof Pooling_layersPackageImpl ? registeredPackage : Pooling_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Convolution_layersPackage.eNS_URI);
+		Convolution_layersPackageImpl theConvolution_layersPackage = (Convolution_layersPackageImpl)(registeredPackage instanceof Convolution_layersPackageImpl ? registeredPackage : Convolution_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_constraintsPackage.eNS_URI);
+		Layer_weight_constraintsPackageImpl theLayer_weight_constraintsPackage = (Layer_weight_constraintsPackageImpl)(registeredPackage instanceof Layer_weight_constraintsPackageImpl ? registeredPackage : Layer_weight_constraintsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Padding_layersPackage.eNS_URI);
+		Padding_layersPackageImpl thePadding_layersPackage = (Padding_layersPackageImpl)(registeredPackage instanceof Padding_layersPackageImpl ? registeredPackage : Padding_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NonLinearActivationsPackage.eNS_URI);
+		NonLinearActivationsPackageImpl theNonLinearActivationsPackage = (NonLinearActivationsPackageImpl)(registeredPackage instanceof NonLinearActivationsPackageImpl ? registeredPackage : NonLinearActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftMinMaxActivationsPackage.eNS_URI);
+		SoftMinMaxActivationsPackageImpl theSoftMinMaxActivationsPackage = (SoftMinMaxActivationsPackageImpl)(registeredPackage instanceof SoftMinMaxActivationsPackageImpl ? registeredPackage : SoftMinMaxActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Normalization_layersPackage.eNS_URI);
+		Normalization_layersPackageImpl theNormalization_layersPackage = (Normalization_layersPackageImpl)(registeredPackage instanceof Normalization_layersPackageImpl ? registeredPackage : Normalization_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Recurrent_layersPackage.eNS_URI);
+		Recurrent_layersPackageImpl theRecurrent_layersPackage = (Recurrent_layersPackageImpl)(registeredPackage instanceof Recurrent_layersPackageImpl ? registeredPackage : Recurrent_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Linear_layersPackage.eNS_URI);
+		Linear_layersPackageImpl theLinear_layersPackage = (Linear_layersPackageImpl)(registeredPackage instanceof Linear_layersPackageImpl ? registeredPackage : Linear_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Dropout_layersPackage.eNS_URI);
+		Dropout_layersPackageImpl theDropout_layersPackage = (Dropout_layersPackageImpl)(registeredPackage instanceof Dropout_layersPackageImpl ? registeredPackage : Dropout_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Sparse_layersPackage.eNS_URI);
+		Sparse_layersPackageImpl theSparse_layersPackage = (Sparse_layersPackageImpl)(registeredPackage instanceof Sparse_layersPackageImpl ? registeredPackage : Sparse_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Distance_functionsPackage.eNS_URI);
+		Distance_functionsPackageImpl theDistance_functionsPackage = (Distance_functionsPackageImpl)(registeredPackage instanceof Distance_functionsPackageImpl ? registeredPackage : Distance_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Loss_functionsPackage.eNS_URI);
+		Loss_functionsPackageImpl theLoss_functionsPackage = (Loss_functionsPackageImpl)(registeredPackage instanceof Loss_functionsPackageImpl ? registeredPackage : Loss_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Vision_layersPackage.eNS_URI);
+		Vision_layersPackageImpl theVision_layersPackage = (Vision_layersPackageImpl)(registeredPackage instanceof Vision_layersPackageImpl ? registeredPackage : Vision_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DataParallel_layersPackage.eNS_URI);
+		DataParallel_layersPackageImpl theDataParallel_layersPackage = (DataParallel_layersPackageImpl)(registeredPackage instanceof DataParallel_layersPackageImpl ? registeredPackage : DataParallel_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_regularizersPackage.eNS_URI);
+		Layer_weight_regularizersPackageImpl theLayer_weight_regularizersPackage = (Layer_weight_regularizersPackageImpl)(registeredPackage instanceof Layer_weight_regularizersPackageImpl ? registeredPackage : Layer_weight_regularizersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_initializersPackage.eNS_URI);
+		Layer_weight_initializersPackageImpl theLayer_weight_initializersPackage = (Layer_weight_initializersPackageImpl)(registeredPackage instanceof Layer_weight_initializersPackageImpl ? registeredPackage : Layer_weight_initializersPackage.eINSTANCE);
+
+		// Create package meta-data objects
+		theTransformer_layersPackage.createPackageContents();
+		theAIMLPackage.createPackageContents();
+		theModulePackage.createPackageContents();
+		theTensorPackage.createPackageContents();
+		theDatatypesPackage.createPackageContents();
+		thePooling_layersPackage.createPackageContents();
+		theConvolution_layersPackage.createPackageContents();
+		theLayer_weight_constraintsPackage.createPackageContents();
+		thePadding_layersPackage.createPackageContents();
+		theNonLinearActivationsPackage.createPackageContents();
+		theSoftMinMaxActivationsPackage.createPackageContents();
+		theNormalization_layersPackage.createPackageContents();
+		theRecurrent_layersPackage.createPackageContents();
+		theLinear_layersPackage.createPackageContents();
+		theDropout_layersPackage.createPackageContents();
+		theSparse_layersPackage.createPackageContents();
+		theDistance_functionsPackage.createPackageContents();
+		theLoss_functionsPackage.createPackageContents();
+		theVision_layersPackage.createPackageContents();
+		theDataParallel_layersPackage.createPackageContents();
+		theLayer_weight_regularizersPackage.createPackageContents();
+		theLayer_weight_initializersPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theTransformer_layersPackage.initializePackageContents();
+		theAIMLPackage.initializePackageContents();
+		theModulePackage.initializePackageContents();
+		theTensorPackage.initializePackageContents();
+		theDatatypesPackage.initializePackageContents();
+		thePooling_layersPackage.initializePackageContents();
+		theConvolution_layersPackage.initializePackageContents();
+		theLayer_weight_constraintsPackage.initializePackageContents();
+		thePadding_layersPackage.initializePackageContents();
+		theNonLinearActivationsPackage.initializePackageContents();
+		theSoftMinMaxActivationsPackage.initializePackageContents();
+		theNormalization_layersPackage.initializePackageContents();
+		theRecurrent_layersPackage.initializePackageContents();
+		theLinear_layersPackage.initializePackageContents();
+		theDropout_layersPackage.initializePackageContents();
+		theSparse_layersPackage.initializePackageContents();
+		theDistance_functionsPackage.initializePackageContents();
+		theLoss_functionsPackage.initializePackageContents();
+		theVision_layersPackage.initializePackageContents();
+		theDataParallel_layersPackage.initializePackageContents();
+		theLayer_weight_regularizersPackage.initializePackageContents();
+		theLayer_weight_initializersPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theTransformer_layersPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(Transformer_layersPackage.eNS_URI, theTransformer_layersPackage);
+		return theTransformer_layersPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getTransformer_layers() {
+		return transformer_layersEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getTransformer_layers_1() {
+		return transformer_layers_1EClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getTransformer_layers_1_D_model() {
+		return (EAttribute)transformer_layers_1EClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getTransformer_layers_1_Nhead() {
+		return (EAttribute)transformer_layers_1EClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getTransformer_layers_1_Dim_feedforward() {
+		return (EAttribute)transformer_layers_1EClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getTransformer_layers_1_Dropout() {
+		return (EAttribute)transformer_layers_1EClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getTransformer_layers_1_Activation() {
+		return (EAttribute)transformer_layers_1EClass.getEStructuralFeatures().get(4);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getTransformer_layers_2() {
+		return transformer_layers_2EClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getTransformer_layers_2_Num_layers() {
+		return (EAttribute)transformer_layers_2EClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getTransformer_layers_2_Norm() {
+		return (EReference)transformer_layers_2EClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getTransformer() {
+		return transformerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getTransformer_Num_encoder_layers() {
+		return (EAttribute)transformerEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getTransformer_Num_decoder_layers() {
+		return (EAttribute)transformerEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getTransformer_Custom_encoder() {
+		return (EReference)transformerEClass.getEStructuralFeatures().get(2);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getTransformer_Custom_decoder() {
+		return (EReference)transformerEClass.getEStructuralFeatures().get(3);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getTransformerEncoder() {
+		return transformerEncoderEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getTransformerEncoder_Encoder_layer() {
+		return (EReference)transformerEncoderEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getTransformerEncoderLayer() {
+		return transformerEncoderLayerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getTransformerDecoder() {
+		return transformerDecoderEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EReference getTransformerDecoder_Decoder_layer() {
+		return (EReference)transformerDecoderEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getTransformerDecoderLayer() {
+		return transformerDecoderLayerEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Transformer_layersFactory getTransformer_layersFactory() {
+		return (Transformer_layersFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		transformer_layersEClass = createEClass(TRANSFORMER_LAYERS);
+
+		transformer_layers_1EClass = createEClass(TRANSFORMER_LAYERS_1);
+		createEAttribute(transformer_layers_1EClass, TRANSFORMER_LAYERS_1__DMODEL);
+		createEAttribute(transformer_layers_1EClass, TRANSFORMER_LAYERS_1__NHEAD);
+		createEAttribute(transformer_layers_1EClass, TRANSFORMER_LAYERS_1__DIM_FEEDFORWARD);
+		createEAttribute(transformer_layers_1EClass, TRANSFORMER_LAYERS_1__DROPOUT);
+		createEAttribute(transformer_layers_1EClass, TRANSFORMER_LAYERS_1__ACTIVATION);
+
+		transformer_layers_2EClass = createEClass(TRANSFORMER_LAYERS_2);
+		createEAttribute(transformer_layers_2EClass, TRANSFORMER_LAYERS_2__NUM_LAYERS);
+		createEReference(transformer_layers_2EClass, TRANSFORMER_LAYERS_2__NORM);
+
+		transformerEClass = createEClass(TRANSFORMER);
+		createEAttribute(transformerEClass, TRANSFORMER__NUM_ENCODER_LAYERS);
+		createEAttribute(transformerEClass, TRANSFORMER__NUM_DECODER_LAYERS);
+		createEReference(transformerEClass, TRANSFORMER__CUSTOM_ENCODER);
+		createEReference(transformerEClass, TRANSFORMER__CUSTOM_DECODER);
+
+		transformerEncoderEClass = createEClass(TRANSFORMER_ENCODER);
+		createEReference(transformerEncoderEClass, TRANSFORMER_ENCODER__ENCODER_LAYER);
+
+		transformerEncoderLayerEClass = createEClass(TRANSFORMER_ENCODER_LAYER);
+
+		transformerDecoderEClass = createEClass(TRANSFORMER_DECODER);
+		createEReference(transformerDecoderEClass, TRANSFORMER_DECODER__DECODER_LAYER);
+
+		transformerDecoderLayerEClass = createEClass(TRANSFORMER_DECODER_LAYER);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		ModulePackage theModulePackage = (ModulePackage)EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+		Normalization_layersPackage theNormalization_layersPackage = (Normalization_layersPackage)EPackage.Registry.INSTANCE.getEPackage(Normalization_layersPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		transformer_layersEClass.getESuperTypes().add(theModulePackage.getModel());
+		transformer_layers_1EClass.getESuperTypes().add(this.getTransformer_layers());
+		transformer_layers_2EClass.getESuperTypes().add(this.getTransformer_layers());
+		transformerEClass.getESuperTypes().add(this.getTransformer_layers_1());
+		transformerEncoderEClass.getESuperTypes().add(this.getTransformer_layers_2());
+		transformerEncoderLayerEClass.getESuperTypes().add(this.getTransformer_layers_1());
+		transformerDecoderEClass.getESuperTypes().add(this.getTransformer_layers_2());
+		transformerDecoderLayerEClass.getESuperTypes().add(this.getTransformer_layers_1());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(transformer_layersEClass, Transformer_layers.class, "Transformer_layers", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(transformer_layers_1EClass, Transformer_layers_1.class, "Transformer_layers_1", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getTransformer_layers_1_D_model(), theTypesPackage.getInteger(), "d_model", null, 0, 1, Transformer_layers_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getTransformer_layers_1_Nhead(), theTypesPackage.getInteger(), "nhead", null, 0, 1, Transformer_layers_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getTransformer_layers_1_Dim_feedforward(), theTypesPackage.getInteger(), "dim_feedforward", null, 0, 1, Transformer_layers_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getTransformer_layers_1_Dropout(), theTypesPackage.getReal(), "dropout", null, 0, 1, Transformer_layers_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getTransformer_layers_1_Activation(), theTypesPackage.getString(), "activation", null, 0, 1, Transformer_layers_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(transformer_layers_2EClass, Transformer_layers_2.class, "Transformer_layers_2", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getTransformer_layers_2_Num_layers(), theTypesPackage.getInteger(), "num_layers", null, 1, 1, Transformer_layers_2.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEReference(getTransformer_layers_2_Norm(), theNormalization_layersPackage.getLayerNorm(), null, "norm", null, 0, 1, Transformer_layers_2.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(transformerEClass, Transformer.class, "Transformer", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getTransformer_Num_encoder_layers(), theTypesPackage.getInteger(), "num_encoder_layers", null, 1, 1, Transformer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getTransformer_Num_decoder_layers(), theTypesPackage.getInteger(), "num_decoder_layers", null, 1, 1, Transformer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEReference(getTransformer_Custom_encoder(), this.getTransformerEncoder(), null, "custom_encoder", null, 1, 1, Transformer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEReference(getTransformer_Custom_decoder(), this.getTransformerDecoder(), null, "custom_decoder", null, 1, 1, Transformer.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(transformerEncoderEClass, TransformerEncoder.class, "TransformerEncoder", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEReference(getTransformerEncoder_Encoder_layer(), this.getTransformerEncoderLayer(), null, "encoder_layer", null, 1, 1, TransformerEncoder.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(transformerEncoderLayerEClass, TransformerEncoderLayer.class, "TransformerEncoderLayer", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(transformerDecoderEClass, TransformerDecoder.class, "TransformerDecoder", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEReference(getTransformerDecoder_Decoder_layer(), this.getTransformerDecoderLayer(), null, "decoder_layer", null, 1, 1, TransformerDecoder.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(transformerDecoderLayerEClass, TransformerDecoderLayer.class, "TransformerDecoderLayer", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		// Create annotations
+		// http://www.eclipse.org/uml2/2.0.0/UML
+		createUMLAnnotations();
+	}
+
+	/**
+	 * Initializes the annotations for <b>http://www.eclipse.org/uml2/2.0.0/UML</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createUMLAnnotations() {
+		String source = "http://www.eclipse.org/uml2/2.0.0/UML"; //$NON-NLS-1$
+		addAnnotation
+		  (getTransformer_Num_encoder_layers(),
+		   source,
+		   new String[] {
+			   "originalName", "num_encoder_layers " //$NON-NLS-1$ //$NON-NLS-2$
+		   });
+		addAnnotation
+		  (getTransformer_Num_decoder_layers(),
+		   source,
+		   new String[] {
+			   "originalName", "num_decoder_layers " //$NON-NLS-1$ //$NON-NLS-2$
+		   });
+	}
+
+} //Transformer_layersPackageImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/impl/Transformer_layers_1Impl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/impl/Transformer_layers_1Impl.java
new file mode 100644
index 0000000..fd8a9d3
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/impl/Transformer_layers_1Impl.java
@@ -0,0 +1,397 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_1;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Transformer layers 1</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layers_1Impl#getD_model <em>Dmodel</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layers_1Impl#getNhead <em>Nhead</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layers_1Impl#getDim_feedforward <em>Dim feedforward</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layers_1Impl#getDropout <em>Dropout</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layers_1Impl#getActivation <em>Activation</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class Transformer_layers_1Impl extends Transformer_layersImpl implements Transformer_layers_1 {
+	/**
+	 * The default value of the '{@link #getD_model() <em>Dmodel</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getD_model()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int DMODEL_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getD_model() <em>Dmodel</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getD_model()
+	 * @generated
+	 * @ordered
+	 */
+	protected int d_model = DMODEL_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getNhead() <em>Nhead</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNhead()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int NHEAD_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getNhead() <em>Nhead</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNhead()
+	 * @generated
+	 * @ordered
+	 */
+	protected int nhead = NHEAD_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getDim_feedforward() <em>Dim feedforward</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDim_feedforward()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int DIM_FEEDFORWARD_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getDim_feedforward() <em>Dim feedforward</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDim_feedforward()
+	 * @generated
+	 * @ordered
+	 */
+	protected int dim_feedforward = DIM_FEEDFORWARD_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getDropout() <em>Dropout</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDropout()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final double DROPOUT_EDEFAULT = 0.0;
+
+	/**
+	 * The cached value of the '{@link #getDropout() <em>Dropout</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getDropout()
+	 * @generated
+	 * @ordered
+	 */
+	protected double dropout = DROPOUT_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #getActivation() <em>Activation</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getActivation()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String ACTIVATION_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getActivation() <em>Activation</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getActivation()
+	 * @generated
+	 * @ordered
+	 */
+	protected String activation = ACTIVATION_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Transformer_layers_1Impl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Transformer_layersPackage.Literals.TRANSFORMER_LAYERS_1;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getD_model() {
+		return d_model;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setD_model(int newD_model) {
+		int oldD_model = d_model;
+		d_model = newD_model;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Transformer_layersPackage.TRANSFORMER_LAYERS_1__DMODEL, oldD_model, d_model));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getNhead() {
+		return nhead;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setNhead(int newNhead) {
+		int oldNhead = nhead;
+		nhead = newNhead;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Transformer_layersPackage.TRANSFORMER_LAYERS_1__NHEAD, oldNhead, nhead));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getDim_feedforward() {
+		return dim_feedforward;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDim_feedforward(int newDim_feedforward) {
+		int oldDim_feedforward = dim_feedforward;
+		dim_feedforward = newDim_feedforward;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Transformer_layersPackage.TRANSFORMER_LAYERS_1__DIM_FEEDFORWARD, oldDim_feedforward, dim_feedforward));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public double getDropout() {
+		return dropout;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setDropout(double newDropout) {
+		double oldDropout = dropout;
+		dropout = newDropout;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Transformer_layersPackage.TRANSFORMER_LAYERS_1__DROPOUT, oldDropout, dropout));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getActivation() {
+		return activation;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setActivation(String newActivation) {
+		String oldActivation = activation;
+		activation = newActivation;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Transformer_layersPackage.TRANSFORMER_LAYERS_1__ACTIVATION, oldActivation, activation));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Transformer_layersPackage.TRANSFORMER_LAYERS_1__DMODEL:
+				return getD_model();
+			case Transformer_layersPackage.TRANSFORMER_LAYERS_1__NHEAD:
+				return getNhead();
+			case Transformer_layersPackage.TRANSFORMER_LAYERS_1__DIM_FEEDFORWARD:
+				return getDim_feedforward();
+			case Transformer_layersPackage.TRANSFORMER_LAYERS_1__DROPOUT:
+				return getDropout();
+			case Transformer_layersPackage.TRANSFORMER_LAYERS_1__ACTIVATION:
+				return getActivation();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Transformer_layersPackage.TRANSFORMER_LAYERS_1__DMODEL:
+				setD_model((Integer)newValue);
+				return;
+			case Transformer_layersPackage.TRANSFORMER_LAYERS_1__NHEAD:
+				setNhead((Integer)newValue);
+				return;
+			case Transformer_layersPackage.TRANSFORMER_LAYERS_1__DIM_FEEDFORWARD:
+				setDim_feedforward((Integer)newValue);
+				return;
+			case Transformer_layersPackage.TRANSFORMER_LAYERS_1__DROPOUT:
+				setDropout((Double)newValue);
+				return;
+			case Transformer_layersPackage.TRANSFORMER_LAYERS_1__ACTIVATION:
+				setActivation((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Transformer_layersPackage.TRANSFORMER_LAYERS_1__DMODEL:
+				setD_model(DMODEL_EDEFAULT);
+				return;
+			case Transformer_layersPackage.TRANSFORMER_LAYERS_1__NHEAD:
+				setNhead(NHEAD_EDEFAULT);
+				return;
+			case Transformer_layersPackage.TRANSFORMER_LAYERS_1__DIM_FEEDFORWARD:
+				setDim_feedforward(DIM_FEEDFORWARD_EDEFAULT);
+				return;
+			case Transformer_layersPackage.TRANSFORMER_LAYERS_1__DROPOUT:
+				setDropout(DROPOUT_EDEFAULT);
+				return;
+			case Transformer_layersPackage.TRANSFORMER_LAYERS_1__ACTIVATION:
+				setActivation(ACTIVATION_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Transformer_layersPackage.TRANSFORMER_LAYERS_1__DMODEL:
+				return d_model != DMODEL_EDEFAULT;
+			case Transformer_layersPackage.TRANSFORMER_LAYERS_1__NHEAD:
+				return nhead != NHEAD_EDEFAULT;
+			case Transformer_layersPackage.TRANSFORMER_LAYERS_1__DIM_FEEDFORWARD:
+				return dim_feedforward != DIM_FEEDFORWARD_EDEFAULT;
+			case Transformer_layersPackage.TRANSFORMER_LAYERS_1__DROPOUT:
+				return dropout != DROPOUT_EDEFAULT;
+			case Transformer_layersPackage.TRANSFORMER_LAYERS_1__ACTIVATION:
+				return ACTIVATION_EDEFAULT == null ? activation != null : !ACTIVATION_EDEFAULT.equals(activation);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (d_model: "); //$NON-NLS-1$
+		result.append(d_model);
+		result.append(", nhead: "); //$NON-NLS-1$
+		result.append(nhead);
+		result.append(", dim_feedforward: "); //$NON-NLS-1$
+		result.append(dim_feedforward);
+		result.append(", dropout: "); //$NON-NLS-1$
+		result.append(dropout);
+		result.append(", activation: "); //$NON-NLS-1$
+		result.append(activation);
+		result.append(')');
+		return result.toString();
+	}
+
+} //Transformer_layers_1Impl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/impl/Transformer_layers_2Impl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/impl/Transformer_layers_2Impl.java
new file mode 100644
index 0000000..d1c9243
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/impl/Transformer_layers_2Impl.java
@@ -0,0 +1,238 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.LayerNorm;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_2;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Transformer layers 2</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layers_2Impl#getNum_layers <em>Num layers</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layers_2Impl#getNorm <em>Norm</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class Transformer_layers_2Impl extends Transformer_layersImpl implements Transformer_layers_2 {
+	/**
+	 * The default value of the '{@link #getNum_layers() <em>Num layers</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNum_layers()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int NUM_LAYERS_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getNum_layers() <em>Num layers</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNum_layers()
+	 * @generated
+	 * @ordered
+	 */
+	protected int num_layers = NUM_LAYERS_EDEFAULT;
+
+	/**
+	 * The cached value of the '{@link #getNorm() <em>Norm</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getNorm()
+	 * @generated
+	 * @ordered
+	 */
+	protected LayerNorm norm;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Transformer_layers_2Impl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Transformer_layersPackage.Literals.TRANSFORMER_LAYERS_2;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getNum_layers() {
+		return num_layers;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setNum_layers(int newNum_layers) {
+		int oldNum_layers = num_layers;
+		num_layers = newNum_layers;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Transformer_layersPackage.TRANSFORMER_LAYERS_2__NUM_LAYERS, oldNum_layers, num_layers));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public LayerNorm getNorm() {
+		if (norm != null && norm.eIsProxy()) {
+			InternalEObject oldNorm = (InternalEObject)norm;
+			norm = (LayerNorm)eResolveProxy(oldNorm);
+			if (norm != oldNorm) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, Transformer_layersPackage.TRANSFORMER_LAYERS_2__NORM, oldNorm, norm));
+			}
+		}
+		return norm;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public LayerNorm basicGetNorm() {
+		return norm;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setNorm(LayerNorm newNorm) {
+		LayerNorm oldNorm = norm;
+		norm = newNorm;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Transformer_layersPackage.TRANSFORMER_LAYERS_2__NORM, oldNorm, norm));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Transformer_layersPackage.TRANSFORMER_LAYERS_2__NUM_LAYERS:
+				return getNum_layers();
+			case Transformer_layersPackage.TRANSFORMER_LAYERS_2__NORM:
+				if (resolve) return getNorm();
+				return basicGetNorm();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Transformer_layersPackage.TRANSFORMER_LAYERS_2__NUM_LAYERS:
+				setNum_layers((Integer)newValue);
+				return;
+			case Transformer_layersPackage.TRANSFORMER_LAYERS_2__NORM:
+				setNorm((LayerNorm)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Transformer_layersPackage.TRANSFORMER_LAYERS_2__NUM_LAYERS:
+				setNum_layers(NUM_LAYERS_EDEFAULT);
+				return;
+			case Transformer_layersPackage.TRANSFORMER_LAYERS_2__NORM:
+				setNorm((LayerNorm)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Transformer_layersPackage.TRANSFORMER_LAYERS_2__NUM_LAYERS:
+				return num_layers != NUM_LAYERS_EDEFAULT;
+			case Transformer_layersPackage.TRANSFORMER_LAYERS_2__NORM:
+				return norm != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (num_layers: "); //$NON-NLS-1$
+		result.append(num_layers);
+		result.append(')');
+		return result.toString();
+	}
+
+} //Transformer_layers_2Impl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/util/Transformer_layersAdapterFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/util/Transformer_layersAdapterFactory.java
new file mode 100644
index 0000000..1692615
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/util/Transformer_layersAdapterFactory.java
@@ -0,0 +1,273 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage
+ * @generated
+ */
+public class Transformer_layersAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static Transformer_layersPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Transformer_layersAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = Transformer_layersPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Transformer_layersSwitch<Adapter> modelSwitch =
+		new Transformer_layersSwitch<Adapter>() {
+			@Override
+			public Adapter caseTransformer_layers(Transformer_layers object) {
+				return createTransformer_layersAdapter();
+			}
+			@Override
+			public Adapter caseTransformer_layers_1(Transformer_layers_1 object) {
+				return createTransformer_layers_1Adapter();
+			}
+			@Override
+			public Adapter caseTransformer_layers_2(Transformer_layers_2 object) {
+				return createTransformer_layers_2Adapter();
+			}
+			@Override
+			public Adapter caseTransformer(Transformer object) {
+				return createTransformerAdapter();
+			}
+			@Override
+			public Adapter caseTransformerEncoder(TransformerEncoder object) {
+				return createTransformerEncoderAdapter();
+			}
+			@Override
+			public Adapter caseTransformerEncoderLayer(TransformerEncoderLayer object) {
+				return createTransformerEncoderLayerAdapter();
+			}
+			@Override
+			public Adapter caseTransformerDecoder(TransformerDecoder object) {
+				return createTransformerDecoderAdapter();
+			}
+			@Override
+			public Adapter caseTransformerDecoderLayer(TransformerDecoderLayer object) {
+				return createTransformerDecoderLayerAdapter();
+			}
+			@Override
+			public Adapter caseModel(Model object) {
+				return createModelAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers <em>Transformer layers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers
+	 * @generated
+	 */
+	public Adapter createTransformer_layersAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_1 <em>Transformer layers 1</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_1
+	 * @generated
+	 */
+	public Adapter createTransformer_layers_1Adapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_2 <em>Transformer layers 2</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layers_2
+	 * @generated
+	 */
+	public Adapter createTransformer_layers_2Adapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer <em>Transformer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer
+	 * @generated
+	 */
+	public Adapter createTransformerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerEncoder <em>Transformer Encoder</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerEncoder
+	 * @generated
+	 */
+	public Adapter createTransformerEncoderAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerEncoderLayer <em>Transformer Encoder Layer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerEncoderLayer
+	 * @generated
+	 */
+	public Adapter createTransformerEncoderLayerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerDecoder <em>Transformer Decoder</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerDecoder
+	 * @generated
+	 */
+	public Adapter createTransformerDecoderAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerDecoderLayer <em>Transformer Decoder Layer</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.TransformerDecoderLayer
+	 * @generated
+	 */
+	public Adapter createTransformerDecoderLayerAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model <em>Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.Model
+	 * @generated
+	 */
+	public Adapter createModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //Transformer_layersAdapterFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/util/Transformer_layersSwitch.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/util/Transformer_layersSwitch.java
new file mode 100644
index 0000000..982c1fb
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Transformer_layers/util/Transformer_layersSwitch.java
@@ -0,0 +1,301 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage
+ * @generated
+ */
+public class Transformer_layersSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static Transformer_layersPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Transformer_layersSwitch() {
+		if (modelPackage == null) {
+			modelPackage = Transformer_layersPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case Transformer_layersPackage.TRANSFORMER_LAYERS: {
+				Transformer_layers transformer_layers = (Transformer_layers)theEObject;
+				T result = caseTransformer_layers(transformer_layers);
+				if (result == null) result = caseModel(transformer_layers);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Transformer_layersPackage.TRANSFORMER_LAYERS_1: {
+				Transformer_layers_1 transformer_layers_1 = (Transformer_layers_1)theEObject;
+				T result = caseTransformer_layers_1(transformer_layers_1);
+				if (result == null) result = caseTransformer_layers(transformer_layers_1);
+				if (result == null) result = caseModel(transformer_layers_1);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Transformer_layersPackage.TRANSFORMER_LAYERS_2: {
+				Transformer_layers_2 transformer_layers_2 = (Transformer_layers_2)theEObject;
+				T result = caseTransformer_layers_2(transformer_layers_2);
+				if (result == null) result = caseTransformer_layers(transformer_layers_2);
+				if (result == null) result = caseModel(transformer_layers_2);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Transformer_layersPackage.TRANSFORMER: {
+				Transformer transformer = (Transformer)theEObject;
+				T result = caseTransformer(transformer);
+				if (result == null) result = caseTransformer_layers_1(transformer);
+				if (result == null) result = caseTransformer_layers(transformer);
+				if (result == null) result = caseModel(transformer);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Transformer_layersPackage.TRANSFORMER_ENCODER: {
+				TransformerEncoder transformerEncoder = (TransformerEncoder)theEObject;
+				T result = caseTransformerEncoder(transformerEncoder);
+				if (result == null) result = caseTransformer_layers_2(transformerEncoder);
+				if (result == null) result = caseTransformer_layers(transformerEncoder);
+				if (result == null) result = caseModel(transformerEncoder);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Transformer_layersPackage.TRANSFORMER_ENCODER_LAYER: {
+				TransformerEncoderLayer transformerEncoderLayer = (TransformerEncoderLayer)theEObject;
+				T result = caseTransformerEncoderLayer(transformerEncoderLayer);
+				if (result == null) result = caseTransformer_layers_1(transformerEncoderLayer);
+				if (result == null) result = caseTransformer_layers(transformerEncoderLayer);
+				if (result == null) result = caseModel(transformerEncoderLayer);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Transformer_layersPackage.TRANSFORMER_DECODER: {
+				TransformerDecoder transformerDecoder = (TransformerDecoder)theEObject;
+				T result = caseTransformerDecoder(transformerDecoder);
+				if (result == null) result = caseTransformer_layers_2(transformerDecoder);
+				if (result == null) result = caseTransformer_layers(transformerDecoder);
+				if (result == null) result = caseModel(transformerDecoder);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Transformer_layersPackage.TRANSFORMER_DECODER_LAYER: {
+				TransformerDecoderLayer transformerDecoderLayer = (TransformerDecoderLayer)theEObject;
+				T result = caseTransformerDecoderLayer(transformerDecoderLayer);
+				if (result == null) result = caseTransformer_layers_1(transformerDecoderLayer);
+				if (result == null) result = caseTransformer_layers(transformerDecoderLayer);
+				if (result == null) result = caseModel(transformerDecoderLayer);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Transformer layers</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Transformer layers</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTransformer_layers(Transformer_layers object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Transformer layers 1</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Transformer layers 1</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTransformer_layers_1(Transformer_layers_1 object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Transformer layers 2</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Transformer layers 2</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTransformer_layers_2(Transformer_layers_2 object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Transformer</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Transformer</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTransformer(Transformer object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Transformer Encoder</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Transformer Encoder</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTransformerEncoder(TransformerEncoder object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Transformer Encoder Layer</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Transformer Encoder Layer</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTransformerEncoderLayer(TransformerEncoderLayer object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Transformer Decoder</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Transformer Decoder</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTransformerDecoder(TransformerDecoder object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Transformer Decoder Layer</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Transformer Decoder Layer</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseTransformerDecoderLayer(TransformerDecoderLayer object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseModel(Model object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //Transformer_layersSwitch
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/PixelShuffle.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/PixelShuffle.java
new file mode 100644
index 0000000..d7a0bf9
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/PixelShuffle.java
@@ -0,0 +1,58 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Vision_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Pixel Shuffle</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.PixelShuffle#getUpscale_factor <em>Upscale factor</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage#getPixelShuffle()
+ * @model
+ * @generated
+ */
+public interface PixelShuffle extends Vision_layers {
+	/**
+	 * Returns the value of the '<em><b>Upscale factor</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Upscale factor</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Upscale factor</em>' attribute.
+	 * @see #setUpscale_factor(int)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage#getPixelShuffle_Upscale_factor()
+	 * @model dataType="org.eclipse.uml2.types.Integer" required="true" ordered="false"
+	 * @generated
+	 */
+	int getUpscale_factor();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.PixelShuffle#getUpscale_factor <em>Upscale factor</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Upscale factor</em>' attribute.
+	 * @see #getUpscale_factor()
+	 * @generated
+	 */
+	void setUpscale_factor(int value);
+
+} // PixelShuffle
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/Upsample.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/Upsample.java
new file mode 100644
index 0000000..d37071c
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/Upsample.java
@@ -0,0 +1,85 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Vision_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Upsample</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Upsample#getMode <em>Mode</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Upsample#isAlign_corners <em>Align corners</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage#getUpsample()
+ * @model
+ * @generated
+ */
+public interface Upsample extends Vision_layers_1 {
+	/**
+	 * Returns the value of the '<em><b>Mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Mode</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Mode</em>' attribute.
+	 * @see #setMode(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage#getUpsample_Mode()
+	 * @model dataType="org.eclipse.uml2.types.String" ordered="false"
+	 * @generated
+	 */
+	String getMode();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Upsample#getMode <em>Mode</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Mode</em>' attribute.
+	 * @see #getMode()
+	 * @generated
+	 */
+	void setMode(String value);
+
+	/**
+	 * Returns the value of the '<em><b>Align corners</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Align corners</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Align corners</em>' attribute.
+	 * @see #setAlign_corners(boolean)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage#getUpsample_Align_corners()
+	 * @model dataType="org.eclipse.uml2.types.Boolean" ordered="false"
+	 * @generated
+	 */
+	boolean isAlign_corners();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Upsample#isAlign_corners <em>Align corners</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Align corners</em>' attribute.
+	 * @see #isAlign_corners()
+	 * @generated
+	 */
+	void setAlign_corners(boolean value);
+
+} // Upsample
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/UpsamplingBilinear2d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/UpsamplingBilinear2d.java
new file mode 100644
index 0000000..191e5e0
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/UpsamplingBilinear2d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Vision_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Upsampling Bilinear2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage#getUpsamplingBilinear2d()
+ * @model
+ * @generated
+ */
+public interface UpsamplingBilinear2d extends Vision_layers_1 {
+} // UpsamplingBilinear2d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/UpsamplingNearest2d.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/UpsamplingNearest2d.java
new file mode 100644
index 0000000..24f21e2
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/UpsamplingNearest2d.java
@@ -0,0 +1,26 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Vision_layers;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Upsampling Nearest2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage#getUpsamplingNearest2d()
+ * @model
+ * @generated
+ */
+public interface UpsamplingNearest2d extends Vision_layers_1 {
+} // UpsamplingNearest2d
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/Vision_layers.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/Vision_layers.java
new file mode 100644
index 0000000..151ed92
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/Vision_layers.java
@@ -0,0 +1,27 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Vision_layers;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Vision layers</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage#getVision_layers()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Vision_layers extends Model {
+} // Vision_layers
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/Vision_layersFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/Vision_layersFactory.java
new file mode 100644
index 0000000..66ec22e
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/Vision_layersFactory.java
@@ -0,0 +1,78 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Vision_layers;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage
+ * @generated
+ */
+public interface Vision_layersFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	Vision_layersFactory eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Pixel Shuffle</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Pixel Shuffle</em>'.
+	 * @generated
+	 */
+	PixelShuffle createPixelShuffle();
+
+	/**
+	 * Returns a new object of class '<em>Upsample</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Upsample</em>'.
+	 * @generated
+	 */
+	Upsample createUpsample();
+
+	/**
+	 * Returns a new object of class '<em>Upsampling Nearest2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Upsampling Nearest2d</em>'.
+	 * @generated
+	 */
+	UpsamplingNearest2d createUpsamplingNearest2d();
+
+	/**
+	 * Returns a new object of class '<em>Upsampling Bilinear2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Upsampling Bilinear2d</em>'.
+	 * @generated
+	 */
+	UpsamplingBilinear2d createUpsamplingBilinear2d();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	Vision_layersPackage getVision_layersPackage();
+
+} //Vision_layersFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/Vision_layersPackage.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/Vision_layersPackage.java
new file mode 100644
index 0000000..46b6fba
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/Vision_layersPackage.java
@@ -0,0 +1,955 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Vision_layers;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface Vision_layersPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "Vision_layers"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://www.eclipse.org/papyrus/AIML/vision/1"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "AIML.Vision_layers"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	Vision_layersPackage eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersImpl <em>Vision layers</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl#getVision_layers()
+	 * @generated
+	 */
+	int VISION_LAYERS = 0;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VISION_LAYERS__BASE_CLASS = ModulePackage.MODEL__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VISION_LAYERS__NAME = ModulePackage.MODEL__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VISION_LAYERS__DATA = ModulePackage.MODEL__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VISION_LAYERS__REQUIRES_GRAD = ModulePackage.MODEL__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VISION_LAYERS__SUB_MODULE = ModulePackage.MODEL__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VISION_LAYERS__OPTIMIZER = ModulePackage.MODEL__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VISION_LAYERS__LOSS = ModulePackage.MODEL__LOSS;
+
+	/**
+	 * The number of structural features of the '<em>Vision layers</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VISION_LAYERS_FEATURE_COUNT = ModulePackage.MODEL_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Vision layers</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VISION_LAYERS_OPERATION_COUNT = ModulePackage.MODEL_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layers_1Impl <em>Vision layers 1</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layers_1Impl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl#getVision_layers_1()
+	 * @generated
+	 */
+	int VISION_LAYERS_1 = 1;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VISION_LAYERS_1__BASE_CLASS = VISION_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VISION_LAYERS_1__NAME = VISION_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VISION_LAYERS_1__DATA = VISION_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VISION_LAYERS_1__REQUIRES_GRAD = VISION_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VISION_LAYERS_1__SUB_MODULE = VISION_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VISION_LAYERS_1__OPTIMIZER = VISION_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VISION_LAYERS_1__LOSS = VISION_LAYERS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VISION_LAYERS_1__SIZE = VISION_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Scale factor</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VISION_LAYERS_1__SCALE_FACTOR = VISION_LAYERS_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Vision layers 1</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VISION_LAYERS_1_FEATURE_COUNT = VISION_LAYERS_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Vision layers 1</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int VISION_LAYERS_1_OPERATION_COUNT = VISION_LAYERS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.PixelShuffleImpl <em>Pixel Shuffle</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.PixelShuffleImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl#getPixelShuffle()
+	 * @generated
+	 */
+	int PIXEL_SHUFFLE = 2;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PIXEL_SHUFFLE__BASE_CLASS = VISION_LAYERS__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PIXEL_SHUFFLE__NAME = VISION_LAYERS__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PIXEL_SHUFFLE__DATA = VISION_LAYERS__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PIXEL_SHUFFLE__REQUIRES_GRAD = VISION_LAYERS__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PIXEL_SHUFFLE__SUB_MODULE = VISION_LAYERS__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PIXEL_SHUFFLE__OPTIMIZER = VISION_LAYERS__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PIXEL_SHUFFLE__LOSS = VISION_LAYERS__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Upscale factor</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PIXEL_SHUFFLE__UPSCALE_FACTOR = VISION_LAYERS_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Pixel Shuffle</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PIXEL_SHUFFLE_FEATURE_COUNT = VISION_LAYERS_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Pixel Shuffle</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PIXEL_SHUFFLE_OPERATION_COUNT = VISION_LAYERS_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.UpsampleImpl <em>Upsample</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.UpsampleImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl#getUpsample()
+	 * @generated
+	 */
+	int UPSAMPLE = 3;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLE__BASE_CLASS = VISION_LAYERS_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLE__NAME = VISION_LAYERS_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLE__DATA = VISION_LAYERS_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLE__REQUIRES_GRAD = VISION_LAYERS_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLE__SUB_MODULE = VISION_LAYERS_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLE__OPTIMIZER = VISION_LAYERS_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLE__LOSS = VISION_LAYERS_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLE__SIZE = VISION_LAYERS_1__SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Scale factor</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLE__SCALE_FACTOR = VISION_LAYERS_1__SCALE_FACTOR;
+
+	/**
+	 * The feature id for the '<em><b>Mode</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLE__MODE = VISION_LAYERS_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The feature id for the '<em><b>Align corners</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLE__ALIGN_CORNERS = VISION_LAYERS_1_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of structural features of the '<em>Upsample</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLE_FEATURE_COUNT = VISION_LAYERS_1_FEATURE_COUNT + 2;
+
+	/**
+	 * The number of operations of the '<em>Upsample</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLE_OPERATION_COUNT = VISION_LAYERS_1_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.UpsamplingNearest2dImpl <em>Upsampling Nearest2d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.UpsamplingNearest2dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl#getUpsamplingNearest2d()
+	 * @generated
+	 */
+	int UPSAMPLING_NEAREST2D = 4;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLING_NEAREST2D__BASE_CLASS = VISION_LAYERS_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLING_NEAREST2D__NAME = VISION_LAYERS_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLING_NEAREST2D__DATA = VISION_LAYERS_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLING_NEAREST2D__REQUIRES_GRAD = VISION_LAYERS_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLING_NEAREST2D__SUB_MODULE = VISION_LAYERS_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLING_NEAREST2D__OPTIMIZER = VISION_LAYERS_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLING_NEAREST2D__LOSS = VISION_LAYERS_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLING_NEAREST2D__SIZE = VISION_LAYERS_1__SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Scale factor</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLING_NEAREST2D__SCALE_FACTOR = VISION_LAYERS_1__SCALE_FACTOR;
+
+	/**
+	 * The number of structural features of the '<em>Upsampling Nearest2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLING_NEAREST2D_FEATURE_COUNT = VISION_LAYERS_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Upsampling Nearest2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLING_NEAREST2D_OPERATION_COUNT = VISION_LAYERS_1_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.UpsamplingBilinear2dImpl <em>Upsampling Bilinear2d</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.UpsamplingBilinear2dImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl#getUpsamplingBilinear2d()
+	 * @generated
+	 */
+	int UPSAMPLING_BILINEAR2D = 5;
+
+	/**
+	 * The feature id for the '<em><b>Base Class</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLING_BILINEAR2D__BASE_CLASS = VISION_LAYERS_1__BASE_CLASS;
+
+	/**
+	 * The feature id for the '<em><b>Name</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLING_BILINEAR2D__NAME = VISION_LAYERS_1__NAME;
+
+	/**
+	 * The feature id for the '<em><b>Data</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLING_BILINEAR2D__DATA = VISION_LAYERS_1__DATA;
+
+	/**
+	 * The feature id for the '<em><b>Requires grad</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLING_BILINEAR2D__REQUIRES_GRAD = VISION_LAYERS_1__REQUIRES_GRAD;
+
+	/**
+	 * The feature id for the '<em><b>Sub Module</b></em>' reference list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLING_BILINEAR2D__SUB_MODULE = VISION_LAYERS_1__SUB_MODULE;
+
+	/**
+	 * The feature id for the '<em><b>Optimizer</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLING_BILINEAR2D__OPTIMIZER = VISION_LAYERS_1__OPTIMIZER;
+
+	/**
+	 * The feature id for the '<em><b>Loss</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLING_BILINEAR2D__LOSS = VISION_LAYERS_1__LOSS;
+
+	/**
+	 * The feature id for the '<em><b>Size</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLING_BILINEAR2D__SIZE = VISION_LAYERS_1__SIZE;
+
+	/**
+	 * The feature id for the '<em><b>Scale factor</b></em>' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLING_BILINEAR2D__SCALE_FACTOR = VISION_LAYERS_1__SCALE_FACTOR;
+
+	/**
+	 * The number of structural features of the '<em>Upsampling Bilinear2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLING_BILINEAR2D_FEATURE_COUNT = VISION_LAYERS_1_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of operations of the '<em>Upsampling Bilinear2d</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int UPSAMPLING_BILINEAR2D_OPERATION_COUNT = VISION_LAYERS_1_OPERATION_COUNT + 0;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layers <em>Vision layers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Vision layers</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layers
+	 * @generated
+	 */
+	EClass getVision_layers();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layers_1 <em>Vision layers 1</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Vision layers 1</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layers_1
+	 * @generated
+	 */
+	EClass getVision_layers_1();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layers_1#getSize <em>Size</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Size</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layers_1#getSize()
+	 * @see #getVision_layers_1()
+	 * @generated
+	 */
+	EAttribute getVision_layers_1_Size();
+
+	/**
+	 * Returns the meta object for the attribute list '{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layers_1#getScale_factor <em>Scale factor</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute list '<em>Scale factor</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layers_1#getScale_factor()
+	 * @see #getVision_layers_1()
+	 * @generated
+	 */
+	EAttribute getVision_layers_1_Scale_factor();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.PixelShuffle <em>Pixel Shuffle</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Pixel Shuffle</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.PixelShuffle
+	 * @generated
+	 */
+	EClass getPixelShuffle();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.PixelShuffle#getUpscale_factor <em>Upscale factor</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Upscale factor</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.PixelShuffle#getUpscale_factor()
+	 * @see #getPixelShuffle()
+	 * @generated
+	 */
+	EAttribute getPixelShuffle_Upscale_factor();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Upsample <em>Upsample</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Upsample</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Upsample
+	 * @generated
+	 */
+	EClass getUpsample();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Upsample#getMode <em>Mode</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Mode</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Upsample#getMode()
+	 * @see #getUpsample()
+	 * @generated
+	 */
+	EAttribute getUpsample_Mode();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Upsample#isAlign_corners <em>Align corners</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Align corners</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Upsample#isAlign_corners()
+	 * @see #getUpsample()
+	 * @generated
+	 */
+	EAttribute getUpsample_Align_corners();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.UpsamplingNearest2d <em>Upsampling Nearest2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Upsampling Nearest2d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.UpsamplingNearest2d
+	 * @generated
+	 */
+	EClass getUpsamplingNearest2d();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.UpsamplingBilinear2d <em>Upsampling Bilinear2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Upsampling Bilinear2d</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.UpsamplingBilinear2d
+	 * @generated
+	 */
+	EClass getUpsamplingBilinear2d();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	Vision_layersFactory getVision_layersFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersImpl <em>Vision layers</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl#getVision_layers()
+		 * @generated
+		 */
+		EClass VISION_LAYERS = eINSTANCE.getVision_layers();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layers_1Impl <em>Vision layers 1</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layers_1Impl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl#getVision_layers_1()
+		 * @generated
+		 */
+		EClass VISION_LAYERS_1 = eINSTANCE.getVision_layers_1();
+
+		/**
+		 * The meta object literal for the '<em><b>Size</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute VISION_LAYERS_1__SIZE = eINSTANCE.getVision_layers_1_Size();
+
+		/**
+		 * The meta object literal for the '<em><b>Scale factor</b></em>' attribute list feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute VISION_LAYERS_1__SCALE_FACTOR = eINSTANCE.getVision_layers_1_Scale_factor();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.PixelShuffleImpl <em>Pixel Shuffle</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.PixelShuffleImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl#getPixelShuffle()
+		 * @generated
+		 */
+		EClass PIXEL_SHUFFLE = eINSTANCE.getPixelShuffle();
+
+		/**
+		 * The meta object literal for the '<em><b>Upscale factor</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute PIXEL_SHUFFLE__UPSCALE_FACTOR = eINSTANCE.getPixelShuffle_Upscale_factor();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.UpsampleImpl <em>Upsample</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.UpsampleImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl#getUpsample()
+		 * @generated
+		 */
+		EClass UPSAMPLE = eINSTANCE.getUpsample();
+
+		/**
+		 * The meta object literal for the '<em><b>Mode</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute UPSAMPLE__MODE = eINSTANCE.getUpsample_Mode();
+
+		/**
+		 * The meta object literal for the '<em><b>Align corners</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute UPSAMPLE__ALIGN_CORNERS = eINSTANCE.getUpsample_Align_corners();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.UpsamplingNearest2dImpl <em>Upsampling Nearest2d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.UpsamplingNearest2dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl#getUpsamplingNearest2d()
+		 * @generated
+		 */
+		EClass UPSAMPLING_NEAREST2D = eINSTANCE.getUpsamplingNearest2d();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.UpsamplingBilinear2dImpl <em>Upsampling Bilinear2d</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.UpsamplingBilinear2dImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl#getUpsamplingBilinear2d()
+		 * @generated
+		 */
+		EClass UPSAMPLING_BILINEAR2D = eINSTANCE.getUpsamplingBilinear2d();
+
+	}
+
+} //Vision_layersPackage
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/Vision_layers_1.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/Vision_layers_1.java
new file mode 100644
index 0000000..5f58e4c
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/Vision_layers_1.java
@@ -0,0 +1,66 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Vision_layers;
+
+import org.eclipse.emf.common.util.EList;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Vision layers 1</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layers_1#getSize <em>Size</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layers_1#getScale_factor <em>Scale factor</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage#getVision_layers_1()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Vision_layers_1 extends Vision_layers {
+	/**
+	 * Returns the value of the '<em><b>Size</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.Integer}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Size</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Size</em>' attribute list.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage#getVision_layers_1_Size()
+	 * @model dataType="org.eclipse.uml2.types.Integer" ordered="false"
+	 * @generated
+	 */
+	EList<Integer> getSize();
+
+	/**
+	 * Returns the value of the '<em><b>Scale factor</b></em>' attribute list.
+	 * The list contents are of type {@link java.lang.Double}.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Scale factor</em>' attribute list isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Scale factor</em>' attribute list.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage#getVision_layers_1_Scale_factor()
+	 * @model dataType="org.eclipse.uml2.types.Real" ordered="false"
+	 * @generated
+	 */
+	EList<Double> getScale_factor();
+
+} // Vision_layers_1
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/impl/PixelShuffleImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/impl/PixelShuffleImpl.java
new file mode 100644
index 0000000..2743276
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/impl/PixelShuffleImpl.java
@@ -0,0 +1,173 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.PixelShuffle;
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Pixel Shuffle</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.PixelShuffleImpl#getUpscale_factor <em>Upscale factor</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class PixelShuffleImpl extends Vision_layersImpl implements PixelShuffle {
+	/**
+	 * The default value of the '{@link #getUpscale_factor() <em>Upscale factor</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUpscale_factor()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final int UPSCALE_FACTOR_EDEFAULT = 0;
+
+	/**
+	 * The cached value of the '{@link #getUpscale_factor() <em>Upscale factor</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getUpscale_factor()
+	 * @generated
+	 * @ordered
+	 */
+	protected int upscale_factor = UPSCALE_FACTOR_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected PixelShuffleImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Vision_layersPackage.Literals.PIXEL_SHUFFLE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public int getUpscale_factor() {
+		return upscale_factor;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setUpscale_factor(int newUpscale_factor) {
+		int oldUpscale_factor = upscale_factor;
+		upscale_factor = newUpscale_factor;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Vision_layersPackage.PIXEL_SHUFFLE__UPSCALE_FACTOR, oldUpscale_factor, upscale_factor));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Vision_layersPackage.PIXEL_SHUFFLE__UPSCALE_FACTOR:
+				return getUpscale_factor();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Vision_layersPackage.PIXEL_SHUFFLE__UPSCALE_FACTOR:
+				setUpscale_factor((Integer)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Vision_layersPackage.PIXEL_SHUFFLE__UPSCALE_FACTOR:
+				setUpscale_factor(UPSCALE_FACTOR_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Vision_layersPackage.PIXEL_SHUFFLE__UPSCALE_FACTOR:
+				return upscale_factor != UPSCALE_FACTOR_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (upscale_factor: "); //$NON-NLS-1$
+		result.append(upscale_factor);
+		result.append(')');
+		return result.toString();
+	}
+
+} //PixelShuffleImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/impl/UpsampleImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/impl/UpsampleImpl.java
new file mode 100644
index 0000000..70568c6
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/impl/UpsampleImpl.java
@@ -0,0 +1,229 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Upsample;
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Upsample</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.UpsampleImpl#getMode <em>Mode</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.UpsampleImpl#isAlign_corners <em>Align corners</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class UpsampleImpl extends Vision_layers_1Impl implements Upsample {
+	/**
+	 * The default value of the '{@link #getMode() <em>Mode</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMode()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String MODE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getMode() <em>Mode</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getMode()
+	 * @generated
+	 * @ordered
+	 */
+	protected String mode = MODE_EDEFAULT;
+
+	/**
+	 * The default value of the '{@link #isAlign_corners() <em>Align corners</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isAlign_corners()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final boolean ALIGN_CORNERS_EDEFAULT = false;
+
+	/**
+	 * The cached value of the '{@link #isAlign_corners() <em>Align corners</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #isAlign_corners()
+	 * @generated
+	 * @ordered
+	 */
+	protected boolean align_corners = ALIGN_CORNERS_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected UpsampleImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Vision_layersPackage.Literals.UPSAMPLE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getMode() {
+		return mode;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setMode(String newMode) {
+		String oldMode = mode;
+		mode = newMode;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Vision_layersPackage.UPSAMPLE__MODE, oldMode, mode));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean isAlign_corners() {
+		return align_corners;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setAlign_corners(boolean newAlign_corners) {
+		boolean oldAlign_corners = align_corners;
+		align_corners = newAlign_corners;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, Vision_layersPackage.UPSAMPLE__ALIGN_CORNERS, oldAlign_corners, align_corners));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Vision_layersPackage.UPSAMPLE__MODE:
+				return getMode();
+			case Vision_layersPackage.UPSAMPLE__ALIGN_CORNERS:
+				return isAlign_corners();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Vision_layersPackage.UPSAMPLE__MODE:
+				setMode((String)newValue);
+				return;
+			case Vision_layersPackage.UPSAMPLE__ALIGN_CORNERS:
+				setAlign_corners((Boolean)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Vision_layersPackage.UPSAMPLE__MODE:
+				setMode(MODE_EDEFAULT);
+				return;
+			case Vision_layersPackage.UPSAMPLE__ALIGN_CORNERS:
+				setAlign_corners(ALIGN_CORNERS_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Vision_layersPackage.UPSAMPLE__MODE:
+				return MODE_EDEFAULT == null ? mode != null : !MODE_EDEFAULT.equals(mode);
+			case Vision_layersPackage.UPSAMPLE__ALIGN_CORNERS:
+				return align_corners != ALIGN_CORNERS_EDEFAULT;
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (mode: "); //$NON-NLS-1$
+		result.append(mode);
+		result.append(", align_corners: "); //$NON-NLS-1$
+		result.append(align_corners);
+		result.append(')');
+		return result.toString();
+	}
+
+} //UpsampleImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/impl/UpsamplingBilinear2dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/impl/UpsamplingBilinear2dImpl.java
new file mode 100644
index 0000000..74596b1
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/impl/UpsamplingBilinear2dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.UpsamplingBilinear2d;
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Upsampling Bilinear2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class UpsamplingBilinear2dImpl extends Vision_layers_1Impl implements UpsamplingBilinear2d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected UpsamplingBilinear2dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Vision_layersPackage.Literals.UPSAMPLING_BILINEAR2D;
+	}
+
+} //UpsamplingBilinear2dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/impl/UpsamplingNearest2dImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/impl/UpsamplingNearest2dImpl.java
new file mode 100644
index 0000000..f17ddc6
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/impl/UpsamplingNearest2dImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.UpsamplingNearest2d;
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Upsampling Nearest2d</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class UpsamplingNearest2dImpl extends Vision_layers_1Impl implements UpsamplingNearest2d {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected UpsamplingNearest2dImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Vision_layersPackage.Literals.UPSAMPLING_NEAREST2D;
+	}
+
+} //UpsamplingNearest2dImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/impl/Vision_layersFactoryImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/impl/Vision_layersFactoryImpl.java
new file mode 100644
index 0000000..0653e74
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/impl/Vision_layersFactoryImpl.java
@@ -0,0 +1,142 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class Vision_layersFactoryImpl extends EFactoryImpl implements Vision_layersFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static Vision_layersFactory init() {
+		try {
+			Vision_layersFactory theVision_layersFactory = (Vision_layersFactory)EPackage.Registry.INSTANCE.getEFactory(Vision_layersPackage.eNS_URI);
+			if (theVision_layersFactory != null) {
+				return theVision_layersFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new Vision_layersFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Vision_layersFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case Vision_layersPackage.PIXEL_SHUFFLE: return createPixelShuffle();
+			case Vision_layersPackage.UPSAMPLE: return createUpsample();
+			case Vision_layersPackage.UPSAMPLING_NEAREST2D: return createUpsamplingNearest2d();
+			case Vision_layersPackage.UPSAMPLING_BILINEAR2D: return createUpsamplingBilinear2d();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public PixelShuffle createPixelShuffle() {
+		PixelShuffleImpl pixelShuffle = new PixelShuffleImpl();
+		return pixelShuffle;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Upsample createUpsample() {
+		UpsampleImpl upsample = new UpsampleImpl();
+		return upsample;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public UpsamplingNearest2d createUpsamplingNearest2d() {
+		UpsamplingNearest2dImpl upsamplingNearest2d = new UpsamplingNearest2dImpl();
+		return upsamplingNearest2d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public UpsamplingBilinear2d createUpsamplingBilinear2d() {
+		UpsamplingBilinear2dImpl upsamplingBilinear2d = new UpsamplingBilinear2dImpl();
+		return upsamplingBilinear2d;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Vision_layersPackage getVision_layersPackage() {
+		return (Vision_layersPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static Vision_layersPackage getPackage() {
+		return Vision_layersPackage.eINSTANCE;
+	}
+
+} //Vision_layersFactoryImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/impl/Vision_layersImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/impl/Vision_layersImpl.java
new file mode 100644
index 0000000..5286875
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/impl/Vision_layersImpl.java
@@ -0,0 +1,46 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModelImpl;
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layers;
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Vision layers</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public abstract class Vision_layersImpl extends ModelImpl implements Vision_layers {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Vision_layersImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Vision_layersPackage.Literals.VISION_LAYERS;
+	}
+
+} //Vision_layersImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/impl/Vision_layersPackageImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/impl/Vision_layersPackageImpl.java
new file mode 100644
index 0000000..fb19032
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/impl/Vision_layersPackageImpl.java
@@ -0,0 +1,534 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.AIMLPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.Layer_weight_regularizersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModulePackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.PixelShuffle;
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Upsample;
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.UpsamplingBilinear2d;
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.UpsamplingNearest2d;
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layers;
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersFactory;
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layers_1;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.DatatypesPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl.DatatypesPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.impl.AIMLPackageImpl;
+
+import org.eclipse.uml2.types.TypesPackage;
+
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class Vision_layersPackageImpl extends EPackageImpl implements Vision_layersPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass vision_layersEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass vision_layers_1EClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass pixelShuffleEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass upsampleEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass upsamplingNearest2dEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass upsamplingBilinear2dEClass = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private Vision_layersPackageImpl() {
+		super(eNS_URI, Vision_layersFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>This method is used to initialize {@link Vision_layersPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static Vision_layersPackage init() {
+		if (isInited) return (Vision_layersPackage)EPackage.Registry.INSTANCE.getEPackage(Vision_layersPackage.eNS_URI);
+
+		// Obtain or create and register package
+		Object registeredVision_layersPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		Vision_layersPackageImpl theVision_layersPackage = registeredVision_layersPackage instanceof Vision_layersPackageImpl ? (Vision_layersPackageImpl)registeredVision_layersPackage : new Vision_layersPackageImpl();
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		EcorePackage.eINSTANCE.eClass();
+		TypesPackage.eINSTANCE.eClass();
+		UMLPackage.eINSTANCE.eClass();
+
+		// Obtain or create and register interdependencies
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AIMLPackage.eNS_URI);
+		AIMLPackageImpl theAIMLPackage = (AIMLPackageImpl)(registeredPackage instanceof AIMLPackageImpl ? registeredPackage : AIMLPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		ModulePackageImpl theModulePackage = (ModulePackageImpl)(registeredPackage instanceof ModulePackageImpl ? registeredPackage : ModulePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(TensorPackage.eNS_URI);
+		TensorPackageImpl theTensorPackage = (TensorPackageImpl)(registeredPackage instanceof TensorPackageImpl ? registeredPackage : TensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DatatypesPackage.eNS_URI);
+		DatatypesPackageImpl theDatatypesPackage = (DatatypesPackageImpl)(registeredPackage instanceof DatatypesPackageImpl ? registeredPackage : DatatypesPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Pooling_layersPackage.eNS_URI);
+		Pooling_layersPackageImpl thePooling_layersPackage = (Pooling_layersPackageImpl)(registeredPackage instanceof Pooling_layersPackageImpl ? registeredPackage : Pooling_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Convolution_layersPackage.eNS_URI);
+		Convolution_layersPackageImpl theConvolution_layersPackage = (Convolution_layersPackageImpl)(registeredPackage instanceof Convolution_layersPackageImpl ? registeredPackage : Convolution_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_constraintsPackage.eNS_URI);
+		Layer_weight_constraintsPackageImpl theLayer_weight_constraintsPackage = (Layer_weight_constraintsPackageImpl)(registeredPackage instanceof Layer_weight_constraintsPackageImpl ? registeredPackage : Layer_weight_constraintsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Padding_layersPackage.eNS_URI);
+		Padding_layersPackageImpl thePadding_layersPackage = (Padding_layersPackageImpl)(registeredPackage instanceof Padding_layersPackageImpl ? registeredPackage : Padding_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NonLinearActivationsPackage.eNS_URI);
+		NonLinearActivationsPackageImpl theNonLinearActivationsPackage = (NonLinearActivationsPackageImpl)(registeredPackage instanceof NonLinearActivationsPackageImpl ? registeredPackage : NonLinearActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftMinMaxActivationsPackage.eNS_URI);
+		SoftMinMaxActivationsPackageImpl theSoftMinMaxActivationsPackage = (SoftMinMaxActivationsPackageImpl)(registeredPackage instanceof SoftMinMaxActivationsPackageImpl ? registeredPackage : SoftMinMaxActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Normalization_layersPackage.eNS_URI);
+		Normalization_layersPackageImpl theNormalization_layersPackage = (Normalization_layersPackageImpl)(registeredPackage instanceof Normalization_layersPackageImpl ? registeredPackage : Normalization_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Recurrent_layersPackage.eNS_URI);
+		Recurrent_layersPackageImpl theRecurrent_layersPackage = (Recurrent_layersPackageImpl)(registeredPackage instanceof Recurrent_layersPackageImpl ? registeredPackage : Recurrent_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Transformer_layersPackage.eNS_URI);
+		Transformer_layersPackageImpl theTransformer_layersPackage = (Transformer_layersPackageImpl)(registeredPackage instanceof Transformer_layersPackageImpl ? registeredPackage : Transformer_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Linear_layersPackage.eNS_URI);
+		Linear_layersPackageImpl theLinear_layersPackage = (Linear_layersPackageImpl)(registeredPackage instanceof Linear_layersPackageImpl ? registeredPackage : Linear_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Dropout_layersPackage.eNS_URI);
+		Dropout_layersPackageImpl theDropout_layersPackage = (Dropout_layersPackageImpl)(registeredPackage instanceof Dropout_layersPackageImpl ? registeredPackage : Dropout_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Sparse_layersPackage.eNS_URI);
+		Sparse_layersPackageImpl theSparse_layersPackage = (Sparse_layersPackageImpl)(registeredPackage instanceof Sparse_layersPackageImpl ? registeredPackage : Sparse_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Distance_functionsPackage.eNS_URI);
+		Distance_functionsPackageImpl theDistance_functionsPackage = (Distance_functionsPackageImpl)(registeredPackage instanceof Distance_functionsPackageImpl ? registeredPackage : Distance_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Loss_functionsPackage.eNS_URI);
+		Loss_functionsPackageImpl theLoss_functionsPackage = (Loss_functionsPackageImpl)(registeredPackage instanceof Loss_functionsPackageImpl ? registeredPackage : Loss_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DataParallel_layersPackage.eNS_URI);
+		DataParallel_layersPackageImpl theDataParallel_layersPackage = (DataParallel_layersPackageImpl)(registeredPackage instanceof DataParallel_layersPackageImpl ? registeredPackage : DataParallel_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_regularizersPackage.eNS_URI);
+		Layer_weight_regularizersPackageImpl theLayer_weight_regularizersPackage = (Layer_weight_regularizersPackageImpl)(registeredPackage instanceof Layer_weight_regularizersPackageImpl ? registeredPackage : Layer_weight_regularizersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_initializersPackage.eNS_URI);
+		Layer_weight_initializersPackageImpl theLayer_weight_initializersPackage = (Layer_weight_initializersPackageImpl)(registeredPackage instanceof Layer_weight_initializersPackageImpl ? registeredPackage : Layer_weight_initializersPackage.eINSTANCE);
+
+		// Create package meta-data objects
+		theVision_layersPackage.createPackageContents();
+		theAIMLPackage.createPackageContents();
+		theModulePackage.createPackageContents();
+		theTensorPackage.createPackageContents();
+		theDatatypesPackage.createPackageContents();
+		thePooling_layersPackage.createPackageContents();
+		theConvolution_layersPackage.createPackageContents();
+		theLayer_weight_constraintsPackage.createPackageContents();
+		thePadding_layersPackage.createPackageContents();
+		theNonLinearActivationsPackage.createPackageContents();
+		theSoftMinMaxActivationsPackage.createPackageContents();
+		theNormalization_layersPackage.createPackageContents();
+		theRecurrent_layersPackage.createPackageContents();
+		theTransformer_layersPackage.createPackageContents();
+		theLinear_layersPackage.createPackageContents();
+		theDropout_layersPackage.createPackageContents();
+		theSparse_layersPackage.createPackageContents();
+		theDistance_functionsPackage.createPackageContents();
+		theLoss_functionsPackage.createPackageContents();
+		theDataParallel_layersPackage.createPackageContents();
+		theLayer_weight_regularizersPackage.createPackageContents();
+		theLayer_weight_initializersPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theVision_layersPackage.initializePackageContents();
+		theAIMLPackage.initializePackageContents();
+		theModulePackage.initializePackageContents();
+		theTensorPackage.initializePackageContents();
+		theDatatypesPackage.initializePackageContents();
+		thePooling_layersPackage.initializePackageContents();
+		theConvolution_layersPackage.initializePackageContents();
+		theLayer_weight_constraintsPackage.initializePackageContents();
+		thePadding_layersPackage.initializePackageContents();
+		theNonLinearActivationsPackage.initializePackageContents();
+		theSoftMinMaxActivationsPackage.initializePackageContents();
+		theNormalization_layersPackage.initializePackageContents();
+		theRecurrent_layersPackage.initializePackageContents();
+		theTransformer_layersPackage.initializePackageContents();
+		theLinear_layersPackage.initializePackageContents();
+		theDropout_layersPackage.initializePackageContents();
+		theSparse_layersPackage.initializePackageContents();
+		theDistance_functionsPackage.initializePackageContents();
+		theLoss_functionsPackage.initializePackageContents();
+		theDataParallel_layersPackage.initializePackageContents();
+		theLayer_weight_regularizersPackage.initializePackageContents();
+		theLayer_weight_initializersPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theVision_layersPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(Vision_layersPackage.eNS_URI, theVision_layersPackage);
+		return theVision_layersPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getVision_layers() {
+		return vision_layersEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getVision_layers_1() {
+		return vision_layers_1EClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getVision_layers_1_Size() {
+		return (EAttribute)vision_layers_1EClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getVision_layers_1_Scale_factor() {
+		return (EAttribute)vision_layers_1EClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getPixelShuffle() {
+		return pixelShuffleEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getPixelShuffle_Upscale_factor() {
+		return (EAttribute)pixelShuffleEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getUpsample() {
+		return upsampleEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getUpsample_Mode() {
+		return (EAttribute)upsampleEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getUpsample_Align_corners() {
+		return (EAttribute)upsampleEClass.getEStructuralFeatures().get(1);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getUpsamplingNearest2d() {
+		return upsamplingNearest2dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getUpsamplingBilinear2d() {
+		return upsamplingBilinear2dEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Vision_layersFactory getVision_layersFactory() {
+		return (Vision_layersFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		vision_layersEClass = createEClass(VISION_LAYERS);
+
+		vision_layers_1EClass = createEClass(VISION_LAYERS_1);
+		createEAttribute(vision_layers_1EClass, VISION_LAYERS_1__SIZE);
+		createEAttribute(vision_layers_1EClass, VISION_LAYERS_1__SCALE_FACTOR);
+
+		pixelShuffleEClass = createEClass(PIXEL_SHUFFLE);
+		createEAttribute(pixelShuffleEClass, PIXEL_SHUFFLE__UPSCALE_FACTOR);
+
+		upsampleEClass = createEClass(UPSAMPLE);
+		createEAttribute(upsampleEClass, UPSAMPLE__MODE);
+		createEAttribute(upsampleEClass, UPSAMPLE__ALIGN_CORNERS);
+
+		upsamplingNearest2dEClass = createEClass(UPSAMPLING_NEAREST2D);
+
+		upsamplingBilinear2dEClass = createEClass(UPSAMPLING_BILINEAR2D);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		ModulePackage theModulePackage = (ModulePackage)EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		vision_layersEClass.getESuperTypes().add(theModulePackage.getModel());
+		vision_layers_1EClass.getESuperTypes().add(this.getVision_layers());
+		pixelShuffleEClass.getESuperTypes().add(this.getVision_layers());
+		upsampleEClass.getESuperTypes().add(this.getVision_layers_1());
+		upsamplingNearest2dEClass.getESuperTypes().add(this.getVision_layers_1());
+		upsamplingBilinear2dEClass.getESuperTypes().add(this.getVision_layers_1());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(vision_layersEClass, Vision_layers.class, "Vision_layers", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(vision_layers_1EClass, Vision_layers_1.class, "Vision_layers_1", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getVision_layers_1_Size(), theTypesPackage.getInteger(), "size", null, 0, -1, Vision_layers_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getVision_layers_1_Scale_factor(), theTypesPackage.getReal(), "scale_factor", null, 0, -1, Vision_layers_1.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(pixelShuffleEClass, PixelShuffle.class, "PixelShuffle", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getPixelShuffle_Upscale_factor(), theTypesPackage.getInteger(), "upscale_factor", null, 1, 1, PixelShuffle.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(upsampleEClass, Upsample.class, "Upsample", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getUpsample_Mode(), theTypesPackage.getString(), "mode", null, 0, 1, Upsample.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+		initEAttribute(getUpsample_Align_corners(), theTypesPackage.getBoolean(), "align_corners", null, 0, 1, Upsample.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+
+		initEClass(upsamplingNearest2dEClass, UpsamplingNearest2d.class, "UpsamplingNearest2d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(upsamplingBilinear2dEClass, UpsamplingBilinear2d.class, "UpsamplingBilinear2d", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+	}
+
+} //Vision_layersPackageImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/impl/Vision_layers_1Impl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/impl/Vision_layers_1Impl.java
new file mode 100644
index 0000000..f737c3c
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/impl/Vision_layers_1Impl.java
@@ -0,0 +1,194 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl;
+
+import java.util.Collection;
+
+import org.eclipse.emf.common.util.EList;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.util.EDataTypeUniqueEList;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layers_1;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Vision layers 1</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layers_1Impl#getSize <em>Size</em>}</li>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layers_1Impl#getScale_factor <em>Scale factor</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class Vision_layers_1Impl extends Vision_layersImpl implements Vision_layers_1 {
+	/**
+	 * The cached value of the '{@link #getSize() <em>Size</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getSize()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Integer> size;
+
+	/**
+	 * The cached value of the '{@link #getScale_factor() <em>Scale factor</em>}' attribute list.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getScale_factor()
+	 * @generated
+	 * @ordered
+	 */
+	protected EList<Double> scale_factor;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Vision_layers_1Impl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return Vision_layersPackage.Literals.VISION_LAYERS_1;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Integer> getSize() {
+		if (size == null) {
+			size = new EDataTypeUniqueEList<Integer>(Integer.class, this, Vision_layersPackage.VISION_LAYERS_1__SIZE);
+		}
+		return size;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EList<Double> getScale_factor() {
+		if (scale_factor == null) {
+			scale_factor = new EDataTypeUniqueEList<Double>(Double.class, this, Vision_layersPackage.VISION_LAYERS_1__SCALE_FACTOR);
+		}
+		return scale_factor;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case Vision_layersPackage.VISION_LAYERS_1__SIZE:
+				return getSize();
+			case Vision_layersPackage.VISION_LAYERS_1__SCALE_FACTOR:
+				return getScale_factor();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@SuppressWarnings("unchecked")
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case Vision_layersPackage.VISION_LAYERS_1__SIZE:
+				getSize().clear();
+				getSize().addAll((Collection<? extends Integer>)newValue);
+				return;
+			case Vision_layersPackage.VISION_LAYERS_1__SCALE_FACTOR:
+				getScale_factor().clear();
+				getScale_factor().addAll((Collection<? extends Double>)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case Vision_layersPackage.VISION_LAYERS_1__SIZE:
+				getSize().clear();
+				return;
+			case Vision_layersPackage.VISION_LAYERS_1__SCALE_FACTOR:
+				getScale_factor().clear();
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case Vision_layersPackage.VISION_LAYERS_1__SIZE:
+				return size != null && !size.isEmpty();
+			case Vision_layersPackage.VISION_LAYERS_1__SCALE_FACTOR:
+				return scale_factor != null && !scale_factor.isEmpty();
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (size: "); //$NON-NLS-1$
+		result.append(size);
+		result.append(", scale_factor: "); //$NON-NLS-1$
+		result.append(scale_factor);
+		result.append(')');
+		return result.toString();
+	}
+
+} //Vision_layers_1Impl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/util/Vision_layersAdapterFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/util/Vision_layersAdapterFactory.java
new file mode 100644
index 0000000..f13c0e2
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/util/Vision_layersAdapterFactory.java
@@ -0,0 +1,237 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage
+ * @generated
+ */
+public class Vision_layersAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static Vision_layersPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Vision_layersAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = Vision_layersPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected Vision_layersSwitch<Adapter> modelSwitch =
+		new Vision_layersSwitch<Adapter>() {
+			@Override
+			public Adapter caseVision_layers(Vision_layers object) {
+				return createVision_layersAdapter();
+			}
+			@Override
+			public Adapter caseVision_layers_1(Vision_layers_1 object) {
+				return createVision_layers_1Adapter();
+			}
+			@Override
+			public Adapter casePixelShuffle(PixelShuffle object) {
+				return createPixelShuffleAdapter();
+			}
+			@Override
+			public Adapter caseUpsample(Upsample object) {
+				return createUpsampleAdapter();
+			}
+			@Override
+			public Adapter caseUpsamplingNearest2d(UpsamplingNearest2d object) {
+				return createUpsamplingNearest2dAdapter();
+			}
+			@Override
+			public Adapter caseUpsamplingBilinear2d(UpsamplingBilinear2d object) {
+				return createUpsamplingBilinear2dAdapter();
+			}
+			@Override
+			public Adapter caseModel(Model object) {
+				return createModelAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layers <em>Vision layers</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layers
+	 * @generated
+	 */
+	public Adapter createVision_layersAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layers_1 <em>Vision layers 1</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layers_1
+	 * @generated
+	 */
+	public Adapter createVision_layers_1Adapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.PixelShuffle <em>Pixel Shuffle</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.PixelShuffle
+	 * @generated
+	 */
+	public Adapter createPixelShuffleAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Upsample <em>Upsample</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Upsample
+	 * @generated
+	 */
+	public Adapter createUpsampleAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.UpsamplingNearest2d <em>Upsampling Nearest2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.UpsamplingNearest2d
+	 * @generated
+	 */
+	public Adapter createUpsamplingNearest2dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.UpsamplingBilinear2d <em>Upsampling Bilinear2d</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.UpsamplingBilinear2d
+	 * @generated
+	 */
+	public Adapter createUpsamplingBilinear2dAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model <em>Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.Model
+	 * @generated
+	 */
+	public Adapter createModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //Vision_layersAdapterFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/util/Vision_layersSwitch.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/util/Vision_layersSwitch.java
new file mode 100644
index 0000000..7baa594
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/Vision_layers/util/Vision_layersSwitch.java
@@ -0,0 +1,253 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage
+ * @generated
+ */
+public class Vision_layersSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static Vision_layersPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Vision_layersSwitch() {
+		if (modelPackage == null) {
+			modelPackage = Vision_layersPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case Vision_layersPackage.VISION_LAYERS: {
+				Vision_layers vision_layers = (Vision_layers)theEObject;
+				T result = caseVision_layers(vision_layers);
+				if (result == null) result = caseModel(vision_layers);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Vision_layersPackage.VISION_LAYERS_1: {
+				Vision_layers_1 vision_layers_1 = (Vision_layers_1)theEObject;
+				T result = caseVision_layers_1(vision_layers_1);
+				if (result == null) result = caseVision_layers(vision_layers_1);
+				if (result == null) result = caseModel(vision_layers_1);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Vision_layersPackage.PIXEL_SHUFFLE: {
+				PixelShuffle pixelShuffle = (PixelShuffle)theEObject;
+				T result = casePixelShuffle(pixelShuffle);
+				if (result == null) result = caseVision_layers(pixelShuffle);
+				if (result == null) result = caseModel(pixelShuffle);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Vision_layersPackage.UPSAMPLE: {
+				Upsample upsample = (Upsample)theEObject;
+				T result = caseUpsample(upsample);
+				if (result == null) result = caseVision_layers_1(upsample);
+				if (result == null) result = caseVision_layers(upsample);
+				if (result == null) result = caseModel(upsample);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Vision_layersPackage.UPSAMPLING_NEAREST2D: {
+				UpsamplingNearest2d upsamplingNearest2d = (UpsamplingNearest2d)theEObject;
+				T result = caseUpsamplingNearest2d(upsamplingNearest2d);
+				if (result == null) result = caseVision_layers_1(upsamplingNearest2d);
+				if (result == null) result = caseVision_layers(upsamplingNearest2d);
+				if (result == null) result = caseModel(upsamplingNearest2d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case Vision_layersPackage.UPSAMPLING_BILINEAR2D: {
+				UpsamplingBilinear2d upsamplingBilinear2d = (UpsamplingBilinear2d)theEObject;
+				T result = caseUpsamplingBilinear2d(upsamplingBilinear2d);
+				if (result == null) result = caseVision_layers_1(upsamplingBilinear2d);
+				if (result == null) result = caseVision_layers(upsamplingBilinear2d);
+				if (result == null) result = caseModel(upsamplingBilinear2d);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Vision layers</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Vision layers</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseVision_layers(Vision_layers object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Vision layers 1</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Vision layers 1</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseVision_layers_1(Vision_layers_1 object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Pixel Shuffle</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Pixel Shuffle</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T casePixelShuffle(PixelShuffle object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Upsample</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Upsample</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseUpsample(Upsample object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Upsampling Nearest2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Upsampling Nearest2d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseUpsamplingNearest2d(UpsamplingNearest2d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Upsampling Bilinear2d</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Upsampling Bilinear2d</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseUpsamplingBilinear2d(UpsamplingBilinear2d object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseModel(Model object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //Vision_layersSwitch
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/datatypes/DatatypesFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/datatypes/DatatypesFactory.java
new file mode 100644
index 0000000..7dbef91
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/datatypes/DatatypesFactory.java
@@ -0,0 +1,51 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.datatypes;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.datatypes.DatatypesPackage
+ * @generated
+ */
+public interface DatatypesFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	DatatypesFactory eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl.DatatypesFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Device</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Device</em>'.
+	 * @generated
+	 */
+	Device createDevice();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	DatatypesPackage getDatatypesPackage();
+
+} //DatatypesFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/datatypes/DatatypesPackage.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/datatypes/DatatypesPackage.java
new file mode 100644
index 0000000..c4819af
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/datatypes/DatatypesPackage.java
@@ -0,0 +1,169 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.datatypes;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.datatypes.DatatypesFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface DatatypesPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "datatypes"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http:///AIML/datatypes.ecore"; //$NON-NLS-1$
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "AIML.datatypes"; //$NON-NLS-1$
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	DatatypesPackage eINSTANCE = org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl.DatatypesPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl.DeviceImpl <em>Device</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl.DeviceImpl
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl.DatatypesPackageImpl#getDevice()
+	 * @generated
+	 */
+	int DEVICE = 0;
+
+	/**
+	 * The feature id for the '<em><b>Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEVICE__TYPE = 0;
+
+	/**
+	 * The number of structural features of the '<em>Device</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEVICE_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Device</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int DEVICE_OPERATION_COUNT = 0;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.aiml.profile.AIML.datatypes.Device <em>Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Device</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.datatypes.Device
+	 * @generated
+	 */
+	EClass getDevice();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.aiml.profile.AIML.datatypes.Device#getType <em>Type</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Type</em>'.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.datatypes.Device#getType()
+	 * @see #getDevice()
+	 * @generated
+	 */
+	EAttribute getDevice_Type();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	DatatypesFactory getDatatypesFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl.DeviceImpl <em>Device</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl.DeviceImpl
+		 * @see org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl.DatatypesPackageImpl#getDevice()
+		 * @generated
+		 */
+		EClass DEVICE = eINSTANCE.getDevice();
+
+		/**
+		 * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute DEVICE__TYPE = eINSTANCE.getDevice_Type();
+
+	}
+
+} //DatatypesPackage
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/datatypes/Device.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/datatypes/Device.java
new file mode 100644
index 0000000..542ae46
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/datatypes/Device.java
@@ -0,0 +1,59 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.datatypes;
+
+import org.eclipse.emf.ecore.EObject;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Device</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.datatypes.Device#getType <em>Type</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.aiml.profile.AIML.datatypes.DatatypesPackage#getDevice()
+ * @model
+ * @generated
+ */
+public interface Device extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Type</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Type</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Type</em>' attribute.
+	 * @see #setType(String)
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.datatypes.DatatypesPackage#getDevice_Type()
+	 * @model dataType="org.eclipse.uml2.types.String" required="true" ordered="false"
+	 * @generated
+	 */
+	String getType();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.aiml.profile.AIML.datatypes.Device#getType <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Type</em>' attribute.
+	 * @see #getType()
+	 * @generated
+	 */
+	void setType(String value);
+
+} // Device
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/datatypes/impl/DatatypesFactoryImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/datatypes/impl/DatatypesFactoryImpl.java
new file mode 100644
index 0000000..22b817c
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/datatypes/impl/DatatypesFactoryImpl.java
@@ -0,0 +1,106 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DatatypesFactoryImpl extends EFactoryImpl implements DatatypesFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static DatatypesFactory init() {
+		try {
+			DatatypesFactory theDatatypesFactory = (DatatypesFactory)EPackage.Registry.INSTANCE.getEFactory(DatatypesPackage.eNS_URI);
+			if (theDatatypesFactory != null) {
+				return theDatatypesFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new DatatypesFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatatypesFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case DatatypesPackage.DEVICE: return createDevice();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Device createDevice() {
+		DeviceImpl device = new DeviceImpl();
+		return device;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public DatatypesPackage getDatatypesPackage() {
+		return (DatatypesPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static DatatypesPackage getPackage() {
+		return DatatypesPackage.eINSTANCE;
+	}
+
+} //DatatypesFactoryImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/datatypes/impl/DatatypesPackageImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/datatypes/impl/DatatypesPackageImpl.java
new file mode 100644
index 0000000..b3dad41
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/datatypes/impl/DatatypesPackageImpl.java
@@ -0,0 +1,369 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.AIMLPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.Layer_weight_regularizersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModulePackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.DatatypesFactory;
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.DatatypesPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.Device;
+
+import org.eclipse.papyrus.aiml.profile.AIML.impl.AIMLPackageImpl;
+
+import org.eclipse.uml2.types.TypesPackage;
+
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class DatatypesPackageImpl extends EPackageImpl implements DatatypesPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass deviceEClass = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.datatypes.DatatypesPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private DatatypesPackageImpl() {
+		super(eNS_URI, DatatypesFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>This method is used to initialize {@link DatatypesPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static DatatypesPackage init() {
+		if (isInited) return (DatatypesPackage)EPackage.Registry.INSTANCE.getEPackage(DatatypesPackage.eNS_URI);
+
+		// Obtain or create and register package
+		Object registeredDatatypesPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		DatatypesPackageImpl theDatatypesPackage = registeredDatatypesPackage instanceof DatatypesPackageImpl ? (DatatypesPackageImpl)registeredDatatypesPackage : new DatatypesPackageImpl();
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		EcorePackage.eINSTANCE.eClass();
+		TypesPackage.eINSTANCE.eClass();
+		UMLPackage.eINSTANCE.eClass();
+
+		// Obtain or create and register interdependencies
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(AIMLPackage.eNS_URI);
+		AIMLPackageImpl theAIMLPackage = (AIMLPackageImpl)(registeredPackage instanceof AIMLPackageImpl ? registeredPackage : AIMLPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		ModulePackageImpl theModulePackage = (ModulePackageImpl)(registeredPackage instanceof ModulePackageImpl ? registeredPackage : ModulePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(TensorPackage.eNS_URI);
+		TensorPackageImpl theTensorPackage = (TensorPackageImpl)(registeredPackage instanceof TensorPackageImpl ? registeredPackage : TensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Pooling_layersPackage.eNS_URI);
+		Pooling_layersPackageImpl thePooling_layersPackage = (Pooling_layersPackageImpl)(registeredPackage instanceof Pooling_layersPackageImpl ? registeredPackage : Pooling_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Convolution_layersPackage.eNS_URI);
+		Convolution_layersPackageImpl theConvolution_layersPackage = (Convolution_layersPackageImpl)(registeredPackage instanceof Convolution_layersPackageImpl ? registeredPackage : Convolution_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_constraintsPackage.eNS_URI);
+		Layer_weight_constraintsPackageImpl theLayer_weight_constraintsPackage = (Layer_weight_constraintsPackageImpl)(registeredPackage instanceof Layer_weight_constraintsPackageImpl ? registeredPackage : Layer_weight_constraintsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Padding_layersPackage.eNS_URI);
+		Padding_layersPackageImpl thePadding_layersPackage = (Padding_layersPackageImpl)(registeredPackage instanceof Padding_layersPackageImpl ? registeredPackage : Padding_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NonLinearActivationsPackage.eNS_URI);
+		NonLinearActivationsPackageImpl theNonLinearActivationsPackage = (NonLinearActivationsPackageImpl)(registeredPackage instanceof NonLinearActivationsPackageImpl ? registeredPackage : NonLinearActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftMinMaxActivationsPackage.eNS_URI);
+		SoftMinMaxActivationsPackageImpl theSoftMinMaxActivationsPackage = (SoftMinMaxActivationsPackageImpl)(registeredPackage instanceof SoftMinMaxActivationsPackageImpl ? registeredPackage : SoftMinMaxActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Normalization_layersPackage.eNS_URI);
+		Normalization_layersPackageImpl theNormalization_layersPackage = (Normalization_layersPackageImpl)(registeredPackage instanceof Normalization_layersPackageImpl ? registeredPackage : Normalization_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Recurrent_layersPackage.eNS_URI);
+		Recurrent_layersPackageImpl theRecurrent_layersPackage = (Recurrent_layersPackageImpl)(registeredPackage instanceof Recurrent_layersPackageImpl ? registeredPackage : Recurrent_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Transformer_layersPackage.eNS_URI);
+		Transformer_layersPackageImpl theTransformer_layersPackage = (Transformer_layersPackageImpl)(registeredPackage instanceof Transformer_layersPackageImpl ? registeredPackage : Transformer_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Linear_layersPackage.eNS_URI);
+		Linear_layersPackageImpl theLinear_layersPackage = (Linear_layersPackageImpl)(registeredPackage instanceof Linear_layersPackageImpl ? registeredPackage : Linear_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Dropout_layersPackage.eNS_URI);
+		Dropout_layersPackageImpl theDropout_layersPackage = (Dropout_layersPackageImpl)(registeredPackage instanceof Dropout_layersPackageImpl ? registeredPackage : Dropout_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Sparse_layersPackage.eNS_URI);
+		Sparse_layersPackageImpl theSparse_layersPackage = (Sparse_layersPackageImpl)(registeredPackage instanceof Sparse_layersPackageImpl ? registeredPackage : Sparse_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Distance_functionsPackage.eNS_URI);
+		Distance_functionsPackageImpl theDistance_functionsPackage = (Distance_functionsPackageImpl)(registeredPackage instanceof Distance_functionsPackageImpl ? registeredPackage : Distance_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Loss_functionsPackage.eNS_URI);
+		Loss_functionsPackageImpl theLoss_functionsPackage = (Loss_functionsPackageImpl)(registeredPackage instanceof Loss_functionsPackageImpl ? registeredPackage : Loss_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Vision_layersPackage.eNS_URI);
+		Vision_layersPackageImpl theVision_layersPackage = (Vision_layersPackageImpl)(registeredPackage instanceof Vision_layersPackageImpl ? registeredPackage : Vision_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DataParallel_layersPackage.eNS_URI);
+		DataParallel_layersPackageImpl theDataParallel_layersPackage = (DataParallel_layersPackageImpl)(registeredPackage instanceof DataParallel_layersPackageImpl ? registeredPackage : DataParallel_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_regularizersPackage.eNS_URI);
+		Layer_weight_regularizersPackageImpl theLayer_weight_regularizersPackage = (Layer_weight_regularizersPackageImpl)(registeredPackage instanceof Layer_weight_regularizersPackageImpl ? registeredPackage : Layer_weight_regularizersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_initializersPackage.eNS_URI);
+		Layer_weight_initializersPackageImpl theLayer_weight_initializersPackage = (Layer_weight_initializersPackageImpl)(registeredPackage instanceof Layer_weight_initializersPackageImpl ? registeredPackage : Layer_weight_initializersPackage.eINSTANCE);
+
+		// Create package meta-data objects
+		theDatatypesPackage.createPackageContents();
+		theAIMLPackage.createPackageContents();
+		theModulePackage.createPackageContents();
+		theTensorPackage.createPackageContents();
+		thePooling_layersPackage.createPackageContents();
+		theConvolution_layersPackage.createPackageContents();
+		theLayer_weight_constraintsPackage.createPackageContents();
+		thePadding_layersPackage.createPackageContents();
+		theNonLinearActivationsPackage.createPackageContents();
+		theSoftMinMaxActivationsPackage.createPackageContents();
+		theNormalization_layersPackage.createPackageContents();
+		theRecurrent_layersPackage.createPackageContents();
+		theTransformer_layersPackage.createPackageContents();
+		theLinear_layersPackage.createPackageContents();
+		theDropout_layersPackage.createPackageContents();
+		theSparse_layersPackage.createPackageContents();
+		theDistance_functionsPackage.createPackageContents();
+		theLoss_functionsPackage.createPackageContents();
+		theVision_layersPackage.createPackageContents();
+		theDataParallel_layersPackage.createPackageContents();
+		theLayer_weight_regularizersPackage.createPackageContents();
+		theLayer_weight_initializersPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theDatatypesPackage.initializePackageContents();
+		theAIMLPackage.initializePackageContents();
+		theModulePackage.initializePackageContents();
+		theTensorPackage.initializePackageContents();
+		thePooling_layersPackage.initializePackageContents();
+		theConvolution_layersPackage.initializePackageContents();
+		theLayer_weight_constraintsPackage.initializePackageContents();
+		thePadding_layersPackage.initializePackageContents();
+		theNonLinearActivationsPackage.initializePackageContents();
+		theSoftMinMaxActivationsPackage.initializePackageContents();
+		theNormalization_layersPackage.initializePackageContents();
+		theRecurrent_layersPackage.initializePackageContents();
+		theTransformer_layersPackage.initializePackageContents();
+		theLinear_layersPackage.initializePackageContents();
+		theDropout_layersPackage.initializePackageContents();
+		theSparse_layersPackage.initializePackageContents();
+		theDistance_functionsPackage.initializePackageContents();
+		theLoss_functionsPackage.initializePackageContents();
+		theVision_layersPackage.initializePackageContents();
+		theDataParallel_layersPackage.initializePackageContents();
+		theLayer_weight_regularizersPackage.initializePackageContents();
+		theLayer_weight_initializersPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theDatatypesPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(DatatypesPackage.eNS_URI, theDatatypesPackage);
+		return theDatatypesPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getDevice() {
+		return deviceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EAttribute getDevice_Type() {
+		return (EAttribute)deviceEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public DatatypesFactory getDatatypesFactory() {
+		return (DatatypesFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		deviceEClass = createEClass(DEVICE);
+		createEAttribute(deviceEClass, DEVICE__TYPE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(deviceEClass, Device.class, "Device", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+		initEAttribute(getDevice_Type(), theTypesPackage.getString(), "type", null, 1, 1, Device.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED); //$NON-NLS-1$
+	}
+
+} //DatatypesPackageImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/datatypes/impl/DeviceImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/datatypes/impl/DeviceImpl.java
new file mode 100644
index 0000000..3e651e8
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/datatypes/impl/DeviceImpl.java
@@ -0,0 +1,174 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.DatatypesPackage;
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.Device;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Device</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl.DeviceImpl#getType <em>Type</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class DeviceImpl extends MinimalEObjectImpl.Container implements Device {
+	/**
+	 * The default value of the '{@link #getType() <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String TYPE_EDEFAULT = null;
+
+	/**
+	 * The cached value of the '{@link #getType() <em>Type</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getType()
+	 * @generated
+	 * @ordered
+	 */
+	protected String type = TYPE_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DeviceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return DatatypesPackage.Literals.DEVICE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String getType() {
+		return type;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void setType(String newType) {
+		String oldType = type;
+		type = newType;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, DatatypesPackage.DEVICE__TYPE, oldType, type));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case DatatypesPackage.DEVICE__TYPE:
+				return getType();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case DatatypesPackage.DEVICE__TYPE:
+				setType((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case DatatypesPackage.DEVICE__TYPE:
+				setType(TYPE_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case DatatypesPackage.DEVICE__TYPE:
+				return TYPE_EDEFAULT == null ? type != null : !TYPE_EDEFAULT.equals(type);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuilder result = new StringBuilder(super.toString());
+		result.append(" (type: "); //$NON-NLS-1$
+		result.append(type);
+		result.append(')');
+		return result.toString();
+	}
+
+} //DeviceImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/datatypes/util/DatatypesAdapterFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/datatypes/util/DatatypesAdapterFactory.java
new file mode 100644
index 0000000..81e76ca
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/datatypes/util/DatatypesAdapterFactory.java
@@ -0,0 +1,129 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.datatypes.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.datatypes.DatatypesPackage
+ * @generated
+ */
+public class DatatypesAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static DatatypesPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatatypesAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = DatatypesPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected DatatypesSwitch<Adapter> modelSwitch =
+		new DatatypesSwitch<Adapter>() {
+			@Override
+			public Adapter caseDevice(Device object) {
+				return createDeviceAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.datatypes.Device <em>Device</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.datatypes.Device
+	 * @generated
+	 */
+	public Adapter createDeviceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //DatatypesAdapterFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/datatypes/util/DatatypesSwitch.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/datatypes/util/DatatypesSwitch.java
new file mode 100644
index 0000000..f57672b
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/datatypes/util/DatatypesSwitch.java
@@ -0,0 +1,119 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.datatypes.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.datatypes.DatatypesPackage
+ * @generated
+ */
+public class DatatypesSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static DatatypesPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public DatatypesSwitch() {
+		if (modelPackage == null) {
+			modelPackage = DatatypesPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case DatatypesPackage.DEVICE: {
+				Device device = (Device)theEObject;
+				T result = caseDevice(device);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Device</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Device</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseDevice(Device object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //DatatypesSwitch
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/impl/AIMLFactoryImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/impl/AIMLFactoryImpl.java
new file mode 100644
index 0000000..0356564
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/impl/AIMLFactoryImpl.java
@@ -0,0 +1,130 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+
+import org.eclipse.papyrus.aiml.profile.AIML.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AIMLFactoryImpl extends EFactoryImpl implements AIMLFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static AIMLFactory init() {
+		try {
+			AIMLFactory theAIMLFactory = (AIMLFactory)EPackage.Registry.INSTANCE.getEFactory(AIMLPackage.eNS_URI);
+			if (theAIMLFactory != null) {
+				return theAIMLFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new AIMLFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AIMLFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case AIMLPackage.SMOOTH_L1_LOSS: return createSmoothL1Loss();
+			case AIMLPackage.SOFT_MARGIN_LOSS: return createSoftMarginLoss();
+			case AIMLPackage.MULTI_LABEL_SOFT_MARGIN_LOSS: return createMultiLabelSoftMarginLoss();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); //$NON-NLS-1$ //$NON-NLS-2$
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public SmoothL1Loss createSmoothL1Loss() {
+		SmoothL1LossImpl smoothL1Loss = new SmoothL1LossImpl();
+		return smoothL1Loss;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public SoftMarginLoss createSoftMarginLoss() {
+		SoftMarginLossImpl softMarginLoss = new SoftMarginLossImpl();
+		return softMarginLoss;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public MultiLabelSoftMarginLoss createMultiLabelSoftMarginLoss() {
+		MultiLabelSoftMarginLossImpl multiLabelSoftMarginLoss = new MultiLabelSoftMarginLossImpl();
+		return multiLabelSoftMarginLoss;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public AIMLPackage getAIMLPackage() {
+		return (AIMLPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static AIMLPackage getPackage() {
+		return AIMLPackage.eINSTANCE;
+	}
+
+} //AIMLFactoryImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/impl/AIMLPackageImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/impl/AIMLPackageImpl.java
new file mode 100644
index 0000000..3bdda35
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/impl/AIMLPackageImpl.java
@@ -0,0 +1,451 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.AIMLFactory;
+import org.eclipse.papyrus.aiml.profile.AIML.AIMLPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.Convolution_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Convolution_layers.impl.Convolution_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.DataParallel_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.DataParallel_layers.impl.DataParallel_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.Distance_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Distance_functions.impl.Distance_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.Dropout_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Dropout_layers.impl.Dropout_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.Layer_weight_constraintsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_constraints.impl.Layer_weight_constraintsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.Layer_weight_initializersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_initializers.impl.Layer_weight_initializersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.Layer_weight_regularizersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Layer_weight_regularizers.impl.Layer_weight_regularizersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.Linear_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Linear_layers.impl.Linear_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functionsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functionsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.ModulePackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Module.impl.ModulePackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.MultiLabelSoftMarginLoss;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.NonLinearActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.NonLinearActivations.impl.NonLinearActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.Normalization_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Normalization_layers.impl.Normalization_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.Padding_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Padding_layers.impl.Padding_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.Pooling_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Pooling_layers.impl.Pooling_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.Recurrent_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Recurrent_layers.impl.Recurrent_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SmoothL1Loss;
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMarginLoss;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.SoftMinMaxActivationsPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMinMaxActivations.impl.SoftMinMaxActivationsPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.Sparse_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Sparse_layers.impl.Sparse_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.TensorPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Tensor.impl.TensorPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.Transformer_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Transformer_layers.impl.Transformer_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.Vision_layersPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Vision_layers.impl.Vision_layersPackageImpl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.DatatypesPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.datatypes.impl.DatatypesPackageImpl;
+
+import org.eclipse.uml2.types.TypesPackage;
+
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class AIMLPackageImpl extends EPackageImpl implements AIMLPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass smoothL1LossEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass softMarginLossEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass multiLabelSoftMarginLossEClass = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.AIMLPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private AIMLPackageImpl() {
+		super(eNS_URI, AIMLFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 *
+	 * <p>This method is used to initialize {@link AIMLPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static AIMLPackage init() {
+		if (isInited) return (AIMLPackage)EPackage.Registry.INSTANCE.getEPackage(AIMLPackage.eNS_URI);
+
+		// Obtain or create and register package
+		Object registeredAIMLPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
+		AIMLPackageImpl theAIMLPackage = registeredAIMLPackage instanceof AIMLPackageImpl ? (AIMLPackageImpl)registeredAIMLPackage : new AIMLPackageImpl();
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		EcorePackage.eINSTANCE.eClass();
+		TypesPackage.eINSTANCE.eClass();
+		UMLPackage.eINSTANCE.eClass();
+
+		// Obtain or create and register interdependencies
+		Object registeredPackage = EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		ModulePackageImpl theModulePackage = (ModulePackageImpl)(registeredPackage instanceof ModulePackageImpl ? registeredPackage : ModulePackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(TensorPackage.eNS_URI);
+		TensorPackageImpl theTensorPackage = (TensorPackageImpl)(registeredPackage instanceof TensorPackageImpl ? registeredPackage : TensorPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DatatypesPackage.eNS_URI);
+		DatatypesPackageImpl theDatatypesPackage = (DatatypesPackageImpl)(registeredPackage instanceof DatatypesPackageImpl ? registeredPackage : DatatypesPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Pooling_layersPackage.eNS_URI);
+		Pooling_layersPackageImpl thePooling_layersPackage = (Pooling_layersPackageImpl)(registeredPackage instanceof Pooling_layersPackageImpl ? registeredPackage : Pooling_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Convolution_layersPackage.eNS_URI);
+		Convolution_layersPackageImpl theConvolution_layersPackage = (Convolution_layersPackageImpl)(registeredPackage instanceof Convolution_layersPackageImpl ? registeredPackage : Convolution_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_constraintsPackage.eNS_URI);
+		Layer_weight_constraintsPackageImpl theLayer_weight_constraintsPackage = (Layer_weight_constraintsPackageImpl)(registeredPackage instanceof Layer_weight_constraintsPackageImpl ? registeredPackage : Layer_weight_constraintsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Padding_layersPackage.eNS_URI);
+		Padding_layersPackageImpl thePadding_layersPackage = (Padding_layersPackageImpl)(registeredPackage instanceof Padding_layersPackageImpl ? registeredPackage : Padding_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(NonLinearActivationsPackage.eNS_URI);
+		NonLinearActivationsPackageImpl theNonLinearActivationsPackage = (NonLinearActivationsPackageImpl)(registeredPackage instanceof NonLinearActivationsPackageImpl ? registeredPackage : NonLinearActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(SoftMinMaxActivationsPackage.eNS_URI);
+		SoftMinMaxActivationsPackageImpl theSoftMinMaxActivationsPackage = (SoftMinMaxActivationsPackageImpl)(registeredPackage instanceof SoftMinMaxActivationsPackageImpl ? registeredPackage : SoftMinMaxActivationsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Normalization_layersPackage.eNS_URI);
+		Normalization_layersPackageImpl theNormalization_layersPackage = (Normalization_layersPackageImpl)(registeredPackage instanceof Normalization_layersPackageImpl ? registeredPackage : Normalization_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Recurrent_layersPackage.eNS_URI);
+		Recurrent_layersPackageImpl theRecurrent_layersPackage = (Recurrent_layersPackageImpl)(registeredPackage instanceof Recurrent_layersPackageImpl ? registeredPackage : Recurrent_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Transformer_layersPackage.eNS_URI);
+		Transformer_layersPackageImpl theTransformer_layersPackage = (Transformer_layersPackageImpl)(registeredPackage instanceof Transformer_layersPackageImpl ? registeredPackage : Transformer_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Linear_layersPackage.eNS_URI);
+		Linear_layersPackageImpl theLinear_layersPackage = (Linear_layersPackageImpl)(registeredPackage instanceof Linear_layersPackageImpl ? registeredPackage : Linear_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Dropout_layersPackage.eNS_URI);
+		Dropout_layersPackageImpl theDropout_layersPackage = (Dropout_layersPackageImpl)(registeredPackage instanceof Dropout_layersPackageImpl ? registeredPackage : Dropout_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Sparse_layersPackage.eNS_URI);
+		Sparse_layersPackageImpl theSparse_layersPackage = (Sparse_layersPackageImpl)(registeredPackage instanceof Sparse_layersPackageImpl ? registeredPackage : Sparse_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Distance_functionsPackage.eNS_URI);
+		Distance_functionsPackageImpl theDistance_functionsPackage = (Distance_functionsPackageImpl)(registeredPackage instanceof Distance_functionsPackageImpl ? registeredPackage : Distance_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Loss_functionsPackage.eNS_URI);
+		Loss_functionsPackageImpl theLoss_functionsPackage = (Loss_functionsPackageImpl)(registeredPackage instanceof Loss_functionsPackageImpl ? registeredPackage : Loss_functionsPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Vision_layersPackage.eNS_URI);
+		Vision_layersPackageImpl theVision_layersPackage = (Vision_layersPackageImpl)(registeredPackage instanceof Vision_layersPackageImpl ? registeredPackage : Vision_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(DataParallel_layersPackage.eNS_URI);
+		DataParallel_layersPackageImpl theDataParallel_layersPackage = (DataParallel_layersPackageImpl)(registeredPackage instanceof DataParallel_layersPackageImpl ? registeredPackage : DataParallel_layersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_regularizersPackage.eNS_URI);
+		Layer_weight_regularizersPackageImpl theLayer_weight_regularizersPackage = (Layer_weight_regularizersPackageImpl)(registeredPackage instanceof Layer_weight_regularizersPackageImpl ? registeredPackage : Layer_weight_regularizersPackage.eINSTANCE);
+		registeredPackage = EPackage.Registry.INSTANCE.getEPackage(Layer_weight_initializersPackage.eNS_URI);
+		Layer_weight_initializersPackageImpl theLayer_weight_initializersPackage = (Layer_weight_initializersPackageImpl)(registeredPackage instanceof Layer_weight_initializersPackageImpl ? registeredPackage : Layer_weight_initializersPackage.eINSTANCE);
+
+		// Create package meta-data objects
+		theAIMLPackage.createPackageContents();
+		theModulePackage.createPackageContents();
+		theTensorPackage.createPackageContents();
+		theDatatypesPackage.createPackageContents();
+		thePooling_layersPackage.createPackageContents();
+		theConvolution_layersPackage.createPackageContents();
+		theLayer_weight_constraintsPackage.createPackageContents();
+		thePadding_layersPackage.createPackageContents();
+		theNonLinearActivationsPackage.createPackageContents();
+		theSoftMinMaxActivationsPackage.createPackageContents();
+		theNormalization_layersPackage.createPackageContents();
+		theRecurrent_layersPackage.createPackageContents();
+		theTransformer_layersPackage.createPackageContents();
+		theLinear_layersPackage.createPackageContents();
+		theDropout_layersPackage.createPackageContents();
+		theSparse_layersPackage.createPackageContents();
+		theDistance_functionsPackage.createPackageContents();
+		theLoss_functionsPackage.createPackageContents();
+		theVision_layersPackage.createPackageContents();
+		theDataParallel_layersPackage.createPackageContents();
+		theLayer_weight_regularizersPackage.createPackageContents();
+		theLayer_weight_initializersPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theAIMLPackage.initializePackageContents();
+		theModulePackage.initializePackageContents();
+		theTensorPackage.initializePackageContents();
+		theDatatypesPackage.initializePackageContents();
+		thePooling_layersPackage.initializePackageContents();
+		theConvolution_layersPackage.initializePackageContents();
+		theLayer_weight_constraintsPackage.initializePackageContents();
+		thePadding_layersPackage.initializePackageContents();
+		theNonLinearActivationsPackage.initializePackageContents();
+		theSoftMinMaxActivationsPackage.initializePackageContents();
+		theNormalization_layersPackage.initializePackageContents();
+		theRecurrent_layersPackage.initializePackageContents();
+		theTransformer_layersPackage.initializePackageContents();
+		theLinear_layersPackage.initializePackageContents();
+		theDropout_layersPackage.initializePackageContents();
+		theSparse_layersPackage.initializePackageContents();
+		theDistance_functionsPackage.initializePackageContents();
+		theLoss_functionsPackage.initializePackageContents();
+		theVision_layersPackage.initializePackageContents();
+		theDataParallel_layersPackage.initializePackageContents();
+		theLayer_weight_regularizersPackage.initializePackageContents();
+		theLayer_weight_initializersPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theAIMLPackage.freeze();
+
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(AIMLPackage.eNS_URI, theAIMLPackage);
+		return theAIMLPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getSmoothL1Loss() {
+		return smoothL1LossEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getSoftMarginLoss() {
+		return softMarginLossEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EClass getMultiLabelSoftMarginLoss() {
+		return multiLabelSoftMarginLossEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public AIMLFactory getAIMLFactory() {
+		return (AIMLFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		smoothL1LossEClass = createEClass(SMOOTH_L1_LOSS);
+
+		softMarginLossEClass = createEClass(SOFT_MARGIN_LOSS);
+
+		multiLabelSoftMarginLossEClass = createEClass(MULTI_LABEL_SOFT_MARGIN_LOSS);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		ModulePackage theModulePackage = (ModulePackage)EPackage.Registry.INSTANCE.getEPackage(ModulePackage.eNS_URI);
+		TensorPackage theTensorPackage = (TensorPackage)EPackage.Registry.INSTANCE.getEPackage(TensorPackage.eNS_URI);
+		DatatypesPackage theDatatypesPackage = (DatatypesPackage)EPackage.Registry.INSTANCE.getEPackage(DatatypesPackage.eNS_URI);
+		Pooling_layersPackage thePooling_layersPackage = (Pooling_layersPackage)EPackage.Registry.INSTANCE.getEPackage(Pooling_layersPackage.eNS_URI);
+		Convolution_layersPackage theConvolution_layersPackage = (Convolution_layersPackage)EPackage.Registry.INSTANCE.getEPackage(Convolution_layersPackage.eNS_URI);
+		Layer_weight_constraintsPackage theLayer_weight_constraintsPackage = (Layer_weight_constraintsPackage)EPackage.Registry.INSTANCE.getEPackage(Layer_weight_constraintsPackage.eNS_URI);
+		Padding_layersPackage thePadding_layersPackage = (Padding_layersPackage)EPackage.Registry.INSTANCE.getEPackage(Padding_layersPackage.eNS_URI);
+		NonLinearActivationsPackage theNonLinearActivationsPackage = (NonLinearActivationsPackage)EPackage.Registry.INSTANCE.getEPackage(NonLinearActivationsPackage.eNS_URI);
+		SoftMinMaxActivationsPackage theSoftMinMaxActivationsPackage = (SoftMinMaxActivationsPackage)EPackage.Registry.INSTANCE.getEPackage(SoftMinMaxActivationsPackage.eNS_URI);
+		Normalization_layersPackage theNormalization_layersPackage = (Normalization_layersPackage)EPackage.Registry.INSTANCE.getEPackage(Normalization_layersPackage.eNS_URI);
+		Recurrent_layersPackage theRecurrent_layersPackage = (Recurrent_layersPackage)EPackage.Registry.INSTANCE.getEPackage(Recurrent_layersPackage.eNS_URI);
+		Transformer_layersPackage theTransformer_layersPackage = (Transformer_layersPackage)EPackage.Registry.INSTANCE.getEPackage(Transformer_layersPackage.eNS_URI);
+		Linear_layersPackage theLinear_layersPackage = (Linear_layersPackage)EPackage.Registry.INSTANCE.getEPackage(Linear_layersPackage.eNS_URI);
+		Dropout_layersPackage theDropout_layersPackage = (Dropout_layersPackage)EPackage.Registry.INSTANCE.getEPackage(Dropout_layersPackage.eNS_URI);
+		Sparse_layersPackage theSparse_layersPackage = (Sparse_layersPackage)EPackage.Registry.INSTANCE.getEPackage(Sparse_layersPackage.eNS_URI);
+		Distance_functionsPackage theDistance_functionsPackage = (Distance_functionsPackage)EPackage.Registry.INSTANCE.getEPackage(Distance_functionsPackage.eNS_URI);
+		Loss_functionsPackage theLoss_functionsPackage = (Loss_functionsPackage)EPackage.Registry.INSTANCE.getEPackage(Loss_functionsPackage.eNS_URI);
+		Vision_layersPackage theVision_layersPackage = (Vision_layersPackage)EPackage.Registry.INSTANCE.getEPackage(Vision_layersPackage.eNS_URI);
+		DataParallel_layersPackage theDataParallel_layersPackage = (DataParallel_layersPackage)EPackage.Registry.INSTANCE.getEPackage(DataParallel_layersPackage.eNS_URI);
+		Layer_weight_regularizersPackage theLayer_weight_regularizersPackage = (Layer_weight_regularizersPackage)EPackage.Registry.INSTANCE.getEPackage(Layer_weight_regularizersPackage.eNS_URI);
+		Layer_weight_initializersPackage theLayer_weight_initializersPackage = (Layer_weight_initializersPackage)EPackage.Registry.INSTANCE.getEPackage(Layer_weight_initializersPackage.eNS_URI);
+
+		// Add subpackages
+		getESubpackages().add(theModulePackage);
+		getESubpackages().add(theTensorPackage);
+		getESubpackages().add(theDatatypesPackage);
+		getESubpackages().add(thePooling_layersPackage);
+		getESubpackages().add(theConvolution_layersPackage);
+		getESubpackages().add(theLayer_weight_constraintsPackage);
+		getESubpackages().add(thePadding_layersPackage);
+		getESubpackages().add(theNonLinearActivationsPackage);
+		getESubpackages().add(theSoftMinMaxActivationsPackage);
+		getESubpackages().add(theNormalization_layersPackage);
+		getESubpackages().add(theRecurrent_layersPackage);
+		getESubpackages().add(theTransformer_layersPackage);
+		getESubpackages().add(theLinear_layersPackage);
+		getESubpackages().add(theDropout_layersPackage);
+		getESubpackages().add(theSparse_layersPackage);
+		getESubpackages().add(theDistance_functionsPackage);
+		getESubpackages().add(theLoss_functionsPackage);
+		getESubpackages().add(theVision_layersPackage);
+		getESubpackages().add(theDataParallel_layersPackage);
+		getESubpackages().add(theLayer_weight_regularizersPackage);
+		getESubpackages().add(theLayer_weight_initializersPackage);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		smoothL1LossEClass.getESuperTypes().add(theLoss_functionsPackage.getLoss_functions_1());
+		softMarginLossEClass.getESuperTypes().add(theLoss_functionsPackage.getLoss_functions_1());
+		multiLabelSoftMarginLossEClass.getESuperTypes().add(theLoss_functionsPackage.getLoss_functions_1_2());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(smoothL1LossEClass, SmoothL1Loss.class, "SmoothL1Loss", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(softMarginLossEClass, SoftMarginLoss.class, "SoftMarginLoss", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		initEClass(multiLabelSoftMarginLossEClass, MultiLabelSoftMarginLoss.class, "MultiLabelSoftMarginLoss", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); //$NON-NLS-1$
+
+		// Create resource
+		createResource(eNS_URI);
+	}
+
+} //AIMLPackageImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/impl/MultiLabelSoftMarginLossImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/impl/MultiLabelSoftMarginLossImpl.java
new file mode 100644
index 0000000..02ae480
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/impl/MultiLabelSoftMarginLossImpl.java
@@ -0,0 +1,49 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.AIMLPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functions_1_2Impl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.MultiLabelSoftMarginLoss;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Multi Label Soft Margin Loss</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class MultiLabelSoftMarginLossImpl extends Loss_functions_1_2Impl implements MultiLabelSoftMarginLoss {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected MultiLabelSoftMarginLossImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return AIMLPackage.Literals.MULTI_LABEL_SOFT_MARGIN_LOSS;
+	}
+
+} //MultiLabelSoftMarginLossImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/impl/SmoothL1LossImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/impl/SmoothL1LossImpl.java
new file mode 100644
index 0000000..02d92d9
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/impl/SmoothL1LossImpl.java
@@ -0,0 +1,49 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.AIMLPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functions_1Impl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SmoothL1Loss;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Smooth L1 Loss</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class SmoothL1LossImpl extends Loss_functions_1Impl implements SmoothL1Loss {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SmoothL1LossImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return AIMLPackage.Literals.SMOOTH_L1_LOSS;
+	}
+
+} //SmoothL1LossImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/impl/SoftMarginLossImpl.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/impl/SoftMarginLossImpl.java
new file mode 100644
index 0000000..17c088b
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/impl/SoftMarginLossImpl.java
@@ -0,0 +1,49 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.impl;
+
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.papyrus.aiml.profile.AIML.AIMLPackage;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.impl.Loss_functions_1Impl;
+
+import org.eclipse.papyrus.aiml.profile.AIML.SoftMarginLoss;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Soft Margin Loss</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * @generated
+ */
+public class SoftMarginLossImpl extends Loss_functions_1Impl implements SoftMarginLoss {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected SoftMarginLossImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return AIMLPackage.Literals.SOFT_MARGIN_LOSS;
+	}
+
+} //SoftMarginLossImpl
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/util/AIMLAdapterFactory.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/util/AIMLAdapterFactory.java
new file mode 100644
index 0000000..42fa5a5
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/util/AIMLAdapterFactory.java
@@ -0,0 +1,242 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.aiml.profile.AIML.*;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_2;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.AIMLPackage
+ * @generated
+ */
+public class AIMLAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static AIMLPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AIMLAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = AIMLPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected AIMLSwitch<Adapter> modelSwitch =
+		new AIMLSwitch<Adapter>() {
+			@Override
+			public Adapter caseSmoothL1Loss(SmoothL1Loss object) {
+				return createSmoothL1LossAdapter();
+			}
+			@Override
+			public Adapter caseSoftMarginLoss(SoftMarginLoss object) {
+				return createSoftMarginLossAdapter();
+			}
+			@Override
+			public Adapter caseMultiLabelSoftMarginLoss(MultiLabelSoftMarginLoss object) {
+				return createMultiLabelSoftMarginLossAdapter();
+			}
+			@Override
+			public Adapter caseModel(Model object) {
+				return createModelAdapter();
+			}
+			@Override
+			public Adapter caseLoss_functions(Loss_functions object) {
+				return createLoss_functionsAdapter();
+			}
+			@Override
+			public Adapter caseLoss_functions_1(Loss_functions_1 object) {
+				return createLoss_functions_1Adapter();
+			}
+			@Override
+			public Adapter caseLoss_functions_1_2(Loss_functions_1_2 object) {
+				return createLoss_functions_1_2Adapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.SmoothL1Loss <em>Smooth L1 Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SmoothL1Loss
+	 * @generated
+	 */
+	public Adapter createSmoothL1LossAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.SoftMarginLoss <em>Soft Margin Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.SoftMarginLoss
+	 * @generated
+	 */
+	public Adapter createSoftMarginLossAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.MultiLabelSoftMarginLoss <em>Multi Label Soft Margin Loss</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.MultiLabelSoftMarginLoss
+	 * @generated
+	 */
+	public Adapter createMultiLabelSoftMarginLossAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Module.Model <em>Model</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Module.Model
+	 * @generated
+	 */
+	public Adapter createModelAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions <em>Loss functions</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions
+	 * @generated
+	 */
+	public Adapter createLoss_functionsAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1 <em>Loss functions 1</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1
+	 * @generated
+	 */
+	public Adapter createLoss_functions_1Adapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_2 <em>Loss functions 12</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_2
+	 * @generated
+	 */
+	public Adapter createLoss_functions_1_2Adapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //AIMLAdapterFactory
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/util/AIMLSwitch.java b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/util/AIMLSwitch.java
new file mode 100644
index 0000000..cf73c30
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src-gen/org/eclipse/papyrus/aiml/profile/AIML/util/AIMLSwitch.java
@@ -0,0 +1,236 @@
+/**
+ * Copyright (c) 2020 CEA LIST
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ * 
+ * SPDX-License-Identifier: EPL-2.0
+ * 
+ */
+package org.eclipse.papyrus.aiml.profile.AIML.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.papyrus.aiml.profile.AIML.*;
+
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1;
+import org.eclipse.papyrus.aiml.profile.AIML.Loss_functions.Loss_functions_1_2;
+import org.eclipse.papyrus.aiml.profile.AIML.Module.Model;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.aiml.profile.AIML.AIMLPackage
+ * @generated
+ */
+public class AIMLSwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static AIMLPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public AIMLSwitch() {
+		if (modelPackage == null) {
+			modelPackage = AIMLPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case AIMLPackage.SMOOTH_L1_LOSS: {
+				SmoothL1Loss smoothL1Loss = (SmoothL1Loss)theEObject;
+				T result = caseSmoothL1Loss(smoothL1Loss);
+				if (result == null) result = caseLoss_functions_1(smoothL1Loss);
+				if (result == null) result = caseLoss_functions(smoothL1Loss);
+				if (result == null) result = caseModel(smoothL1Loss);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case AIMLPackage.SOFT_MARGIN_LOSS: {
+				SoftMarginLoss softMarginLoss = (SoftMarginLoss)theEObject;
+				T result = caseSoftMarginLoss(softMarginLoss);
+				if (result == null) result = caseLoss_functions_1(softMarginLoss);
+				if (result == null) result = caseLoss_functions(softMarginLoss);
+				if (result == null) result = caseModel(softMarginLoss);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case AIMLPackage.MULTI_LABEL_SOFT_MARGIN_LOSS: {
+				MultiLabelSoftMarginLoss multiLabelSoftMarginLoss = (MultiLabelSoftMarginLoss)theEObject;
+				T result = caseMultiLabelSoftMarginLoss(multiLabelSoftMarginLoss);
+				if (result == null) result = caseLoss_functions_1_2(multiLabelSoftMarginLoss);
+				if (result == null) result = caseLoss_functions_1(multiLabelSoftMarginLoss);
+				if (result == null) result = caseLoss_functions(multiLabelSoftMarginLoss);
+				if (result == null) result = caseModel(multiLabelSoftMarginLoss);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Smooth L1 Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Smooth L1 Loss</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSmoothL1Loss(SmoothL1Loss object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Soft Margin Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Soft Margin Loss</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseSoftMarginLoss(SoftMarginLoss object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Multi Label Soft Margin Loss</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Multi Label Soft Margin Loss</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseMultiLabelSoftMarginLoss(MultiLabelSoftMarginLoss object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Model</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseModel(Model object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Loss functions</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Loss functions</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLoss_functions(Loss_functions object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Loss functions 1</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Loss functions 1</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLoss_functions_1(Loss_functions_1 object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Loss functions 12</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Loss functions 12</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseLoss_functions_1_2(Loss_functions_1_2 object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //AIMLSwitch
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src/org/eclipse/papyrus/aiml/profile/AIMLProfileResource.java b/aiml/org.eclipse.papyrus.aiml.profile/src/org/eclipse/papyrus/aiml/profile/AIMLProfileResource.java
new file mode 100644
index 0000000..dbe89e5
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src/org/eclipse/papyrus/aiml/profile/AIMLProfileResource.java
@@ -0,0 +1,31 @@
+/*****************************************************************************
+ * Copyright (c) 2020 CEA LIST.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ *  Ansgar Radermacher
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.aiml.profile;
+
+import org.eclipse.emf.common.util.URI;
+
+/**
+ * Utility class to get informations about AIML profile resources
+ */
+public final class AIMLProfileResource {
+
+	public static final String PROFILE_PATHMAP = "pathmap://AIML_PROFILES/"; //$NON-NLS-1$
+
+	public static final String PROFILE_PATH = PROFILE_PATHMAP + "AIML.profile.uml"; //$NON-NLS-1$
+
+	public static final URI PROFILE_PATH_URI = URI.createURI(PROFILE_PATH);
+
+	public static final String PROFILE_URI = "http://www.eclipse.org/papyrus/AIML/1"; //$NON-NLS-1$
+}
diff --git a/aiml/org.eclipse.papyrus.aiml.profile/src/org/eclipse/papyrus/aiml/profile/Activator.java b/aiml/org.eclipse.papyrus.aiml.profile/src/org/eclipse/papyrus/aiml/profile/Activator.java
new file mode 100644
index 0000000..7e98e5e
--- /dev/null
+++ b/aiml/org.eclipse.papyrus.aiml.profile/src/org/eclipse/papyrus/aiml/profile/Activator.java
@@ -0,0 +1,38 @@
+/**
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License 2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ */
+package org.eclipse.papyrus.aiml.profile;
+
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+
+public class Activator implements BundleActivator {
+
+	private static BundleContext context;
+
+	static BundleContext getContext() {
+		return context;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext bundleContext) throws Exception {
+		Activator.context = bundleContext;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext bundleContext) throws Exception {
+		Activator.context = null;
+	}
+
+}