package Ġorg . nd 4 j . codegen . ir Ċ Ċ import Ġio . github . class graph . Class Graph Ċ import Ġorg . apache . commons . io . IO Utils Ċ import Ġorg . nd 4 j . aut od iff . functions . Differ ential Function Ċ import Ġorg . nd 4 j . aut od iff . same diff . SD Variable Ċ import Ġorg . nd 4 j . aut od iff . same diff . Same Diff Ċ import Ġorg . nd 4 j . aut od iff . same diff . Variable Type Ċ import Ġorg . nd 4 j . codegen . ir . registry . Op Mapping Registry Ċ import Ġorg . nd 4 j . codegen . ir . registry . Op Registry Holder Ċ import Ġorg . nd 4 j . codegen . ir . tensorflow .* Ċ import Ġorg . nd 4 j . common . io . Class Path Resource Ċ import Ġorg . nd 4 j . common . io . Reflection Utils Ċ import Ġorg . nd 4 j . common . util . Array Util Ċ import Ġorg . nd 4 j . gen . Op Declaration Descriptor Ċ import Ġorg . nd 4 j . ir . Mapper Namespace Ċ import Ġorg . nd 4 j . ir . Op Namespace Ċ import Ġorg . nd 4 j . ir . Tensor Namespace Ċ import Ġorg . nd 4 j . linalg . api . buffer . DataType Ċ import Ġorg . nd 4 j . linalg . api . ndarray . IND Array Ċ import Ġorg . nd 4 j . linalg . api . ops . Dynamic Custom Op Ċ import Ġorg . nd 4 j . linalg . api . ops . Op Ċ import Ġorg . nd 4 j . linalg . factory . Nd 4 j Ċ import Ġorg . nd 4 j . shade . protobuf . ByteString Ċ import Ġorg . nd 4 j . shade . protobuf . GeneratedMessageV 3 Ċ import Ġorg . nd 4 j . shade . protobuf . Protocol Message Enum Ċ import Ġorg . nd 4 j . shade . protobuf . Text Format Ċ import Ġjava . lang . IllegalArgumentException Ċ import Ġjava . lang . reflect . Modifier Ċ import Ġjava . nio . ByteBuffer Ċ import Ġjava . nio . charset . Charset Ċ import Ġkotlin . collections . ArrayList Ċ import Ġkotlin . collections . HashMap ĊĊ Ċ fun Ġload Nd 4 j Op Descriptors (): ĠOp Namespace . Op Descriptor List Ġ{ ĊĠĠĠ Ġval Ġnd 4 j Op Descriptor Resource Stream Ġ= ĠClass Path Resource (" nd 4 j - op - defs - 2 . proto "). inputStream ĊĠĠĠ Ġval Ġresource String Ġ= ĠIO Utils . toString ( nd 4 j Op Descriptor Resource Stream , ĠCharset . default Charset ()) ĊĠĠĠ Ġval Ġdescriptor List Builder Ġ= ĠOp Namespace . Op Descriptor List . newBuilder () ĊĠĠĠ ĠText Format . merge ( resource String , descriptor List Builder ) ĊĠĠĠ Ġval Ġret Ġ= Ġdescriptor List Builder . build () ĊĠĠĠ Ġval Ġmutable List Ġ= ĠArrayList ( ret . op List List ) ĊĠĠĠ Ġmutable List . sortBy Ġ{ Ġit . name Ġ} ĊĊĠĠĠ Ġval Ġnew Result Builder Ġ= ĠOp Namespace . Op Descriptor List . newBuilder () ĊĠĠĠ Ġnew Result Builder . addAll Op List ( mutable List ) ĊĠĠĠ Ġreturn Ġnew Result Builder . build () Ċ } Ċ Ċ fun Ġnd 4 j Differ ential Functions (): ĠList < Class < out ĠD iffer ential Function >> Ġ{ ĊĠĠĠ Ġreturn ĠClass Graph (). enable All Info () ĊĠĠĠĠĠĠĠ Ġ. scan (). getSub classes (" org . nd 4 j . aut od iff . functions . Differ ential Function "). filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclazz -> Ġ! clazz . is Abstract Ġ&& Ġ! clazz . is Annotation Ġ&& Ġ! clazz . is Interface ĊĠĠĠĠĠĠĠ Ġ}. map Ġ{ Ġclazz Ġ-> ĠClass . forName ( clazz . name ) Ġas ĠClass < out ĠD iffer ential Function > Ġ} Ċ } Ċ Ċ val Ġdiffer ential Function Classes Ġ= Ġnd 4 j Differ ential Functions () Ċ Ċ fun Ġcached Op Instances 2 (): ĠList < Differ ential Function > Ġ{ ĊĠĠĠ Ġreturn Ġdiffer ential Function Classes . map Ġ{ Ġclazz Ġ-> Ġclazz . newInstance () Ġas ĠD iffer ential Function }. filter Ġ{ ĊĠĠĠĠĠĠĠ Ġit . op Name () Ġ!= Ġnull ĊĠĠĠ Ġ} Ċ } Ċ Ċ val Ġcached Op Instances Ġ= Ġcached Op Instances 2 () ĊĊ Ċ fun Ġcreate Differ ential Function Instance For Name ( name : ĠString ): ĠD iffer ential Function Ġ{ ĊĠĠĠ Ġreturn Ġcached Op Instances . first Ġ{ Ġop Ġ-> Ġop . op Name () Ġ== Ġname Ġ}. java Class . newInstance () Ċ } Ċ Ċ fun Ġis Output Framework AttributeName ( name : ĠString , op Descriptor : ĠOp Namespace . Op Descriptor ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġop Descriptor . arg Descriptor List . filter Ġ{ Ġarg Descriptor Ġ-> Ġarg Descriptor . arg Type Ġ!= ĠOp Namespace . Arg Descriptor . Arg Type . INPUT _ T ENSOR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġarg Descriptor . arg Type Ġ!= ĠOp Namespace . Arg Descriptor . Arg Type . OUTPUT _ T ENSOR Ġ} ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġinput Arg Ġ-> Ġinput Arg . name Ġ}. contains ( name ) Ċ } Ċ Ċ fun Ġis Nd 4 j Tensor Name ( name : ĠString , op Descriptor : ĠOp Namespace . Op Descriptor ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġop Descriptor . arg Descriptor List . filter Ġ{ Ġarg Descriptor Ġ-> Ġarg Descriptor . arg Type Ġ== ĠOp Namespace . Arg Descriptor . Arg Type . INPUT _ T ENSOR Ġ} ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġinput Arg Ġ-> Ġinput Arg . name Ġ} ĊĠĠĠĠĠĠĠ Ġ. contains ( name ) Ċ } ĊĊ Ċ fun Ġarg Descriptor Type ( name : ĠString , Ġop Descriptor : ĠOp Namespace . Op Descriptor ): ĠOp Namespace . Arg Descriptor . Arg Type Ġ{ ĊĠĠĠ Ġreturn Ġop Descriptor . arg Descriptor List . filter Ġ{ Ġarg Descriptor Ġ-> Ġarg Descriptor . name Ġ== Ġname Ġ} [ 0 ]. arg Type Ċ } Ċ Ċ val Ġnd 4 j Op Descriptors Ġ= Ġload Nd 4 j Op Descriptors () Ċ Ċ fun ĠOp Namespace . Op Descriptor List . find Op ( op Name : ĠString ): ĠOp Namespace . Op Descriptor Ġ{ ĊĠĠĠ Ġreturn Ġthis . op List List . first Ġ{ Ġit . name Ġ== Ġop Name Ġ} Ċ } ĊĊ Ċ interface ĠI RT ensor < T ENSOR _ TYPE : ĠGenerated Message V 3 , ĠDATA _ TYPE > ĊĠĠĠĠĠĠĠ Ġwhere Ġ ĠDATA _ TYPE : ĠProtocol Message Enum Ġ{ ĊĠĠĠ Ġfun Ġshape (): ĠList < Long > ĊĠĠĠ Ġfun Ġstride (): ĠList < Long > ĊĠĠĠ Ġfun ĠdataType (): ĠIR DataType < DATA _ TYPE > ĊĠĠĠ Ġfun Ġto Arg Tensor (): ĠTensor Namespace . Tensor Proto ĊĠĠĠ Ġfun Ġraw Value (): ĠT ENSOR _ TYPE ĊĠĠĠ Ġfun Ġto Nd 4 j ND Array (): ĠIND Array Ċ Ċ } ĊĊ Ċ enum Ġclass ĠAttribute ValueType Ġ{ ĊĠĠĠ ĠFLOAT , ĊĠĠĠ ĠLIST _ FLOAT , ĊĠĠĠ ĠINT , ĊĠĠĠ ĠLIST _ INT , ĊĠĠĠ ĠBOOL , ĊĠĠĠ ĠLIST _ BOOL , ĊĠĠĠ ĠSTRING , ĊĠĠĠ ĠLIST _ STRING , ĊĠĠĠ ĠT ENSOR , ĊĠĠĠ ĠLIST _ T ENSOR , ĊĠĠĠ ĠDATA _ TYPE , ĊĠĠĠ ĠINVALID Ċ } Ċ Ċ interface ĠIR Attribute < ATTRIBUTE _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠATTRIBUT E _ VALUE _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠT ENSOR _ TYPE Ġ: ĠGenerated Message V 3 , ĠDATA _ TYPE Ġ: ĠProtocol Message Enum > Ġ{ ĊĊĠĠĠ Ġfun Ġname (): ĠString ĊĊĠĠĠ Ġfun Ġfloat Value (): ĠFloat ĊĊĠĠĠ Ġfun Ġlist Float Value (): ĠList < Float > ĊĊĠĠĠ Ġfun Ġtensor Value (): ĠI RT ensor < T ENSOR _ TYPE , ĠDATA _ TYPE > ĊĊĠĠĠ Ġfun Ġlist Tensor Value (): ĠList < IR Tensor < T ENSOR _ TYPE , ĠDATA _ TYPE >> ĊĊĠĠĠ Ġfun Ġint Value (): ĠLong ĊĊĠĠĠ Ġfun Ġlist Int Value (): ĠList < Long > ĊĊĠĠĠ Ġfun Ġbool Value (): ĠBoolean ĊĊĠĠĠ Ġfun Ġlist BoolValue (): ĠList < Boolean > ĊĊĠĠĠ Ġfun Ġstring Value (): ĠString ĊĊĠĠĠ Ġfun Ġlist StringValue (): ĠList < String > ĊĊĠĠĠ Ġfun Ġattribute ValueType (): ĠAttribute ValueType ĊĊĠĠĠ Ġfun Ġdata T ata Type Value (): ĠIR DataType < DATA _ TYPE > ĊĊĠĠĠ Ġfun Ġinternal Attribute Def (): ĠATTRIBUT E _ TYPE ĊĊĊĠĠĠ Ġfun Ġinternal AttributeValue (): ĠATTRIBUT E _ VALUE _ TYPE Ċ } ĊĊĊ Ċ interface ĠMapping Process < ĊĠĠĠĠĠĠĠ ĠGRAPH _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠOP _ DEF _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠNODE _ DEF _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠT ENSOR _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠATTRIBUT E _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠATTRIBUT E _ VALUE _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠDATA _ TYPE : ĠProtocol Message Enum > Ġ{ ĊĊĊĊĠĠĠ Ġfun Ġinput Op Def Value Types (): ĠMap < String , Attribute ValueType > ĊĊĠĠĠ Ġfun Ġop Name (): ĠString ĊĊĠĠĠ Ġfun Ġframework Version (): ĠString ĊĊĠĠĠ Ġfun Ġinput Framework (): ĠString ĊĊĠĠĠ Ġfun Ġinput Framework Op Name (): ĠString ĊĊĠĠĠ Ġfun Ġattribute Mapping Rules (): ĠList < Attribute Mapping Rule < GRAPH _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOP _ DEF _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNODE _ DEF _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠATTRIBUT E _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠATTRIBUT E _ VALUE _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT ENSOR _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDATA _ TYPE >> ĊĊĠĠĠ Ġfun Ġtensor Mapping Rules (): Ġ ĠList < Tensor Mapping Rule < GRAPH _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOP _ DEF _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNODE _ DEF _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠATTRIBUT E _ TYPE , ĠATTRIBUT E _ VALUE _ TYPE , ĠT ENSOR _ TYPE , ĠDATA _ TYPE >> ĊĊĠĠĠ Ġfun Ġapply Process ( mapping Ctx : ĠMapping Context < GRAPH _ TYPE , NODE _ DEF _ TYPE , ĠOP _ DEF _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT ENSOR _ TYPE , ĠATTRIBUT E _ TYPE , ĠATTRIBUT E _ VALUE _ TYPE , DATA _ TYPE >): ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair < Mapping Context < GRAPH _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNODE _ DEF _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOP _ DEF _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT ENSOR _ TYPE , ĠATTRIBUT E _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠATTRIBUT E _ VALUE _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDATA _ TYPE >, ĠOp Namespace . Op Descriptor > ĊĊĠĠĠ Ġfun Ġapply Process Reverse ( input : ĠOp Declaration Descriptor ): ĠIR Node < NODE _ DEF _ TYPE , ĠT ENSOR _ TYPE , ĠATTRIBUT E _ TYPE , ĠATTRIBUT E _ VALUE _ TYPE , ĠDATA _ TYPE > ĊĊĊĠĠĠ Ġfun Ġindex Overrides () Ġ: ĠMap < Int , Int > ĊĊĠĠĠ Ġfun Ġserialize (): ĠMapper Namespace . Mapper Declaration ĊĊ Ċ } ĊĊ Ċ interface ĠTensor Mapping Rule < GRAPH _ TYPE : ĠGenerated Message V 3 , OP _ DEF _ TYPE : ĠGenerated Message V 3 , NODE _ DEF _ TYPE : ĠGenerated Message V 3 , ATTRIBUTE _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠATTRIBUT E _ VALUE _ TYPE Ġ: ĠGenerated Message V 3 , ĠT ENSOR _ TYPE Ġ: ĠGenerated Message V 3 , ĠDATA _ TYPE > ĊĠĠĠĠĠĠĠ Ġwhere ĠDATA _ TYPE : ĠProtocol Message Enum Ġ{ ĊĊĊĠĠĠ Ġfun Ġinit With Mapping Process ( mapping Process : ĠMapping Process < GRAPH _ TYPE , OP _ DEF _ TYPE , ĠNODE _ DEF _ TYPE , ĠT ENSOR _ TYPE , ĠATTRIBUT E _ TYPE , ĠATTRIBUT E _ VALUE _ TYPE , ĠDATA _ TYPE >) ĊĊĊĠĠĠ Ġfun Ġname (): ĠString ĊĊĊĠĠĠ Ġfun Ġserialize (): ĠMapper Namespace . Mapping Rule ĊĊĊĠĠĠ Ġfun Ġmapping Names To Perform (): ĠMap < String , String > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConvert Ġ 1 Ġor Ġmore Ġattributes Ġin Ġto Ġa Ġlist Ġof Ġ{@ link ĠArg Descriptor } ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġconvert Input ( mapping Context : ĠMapping Context < GRAPH _ TYPE , NODE _ DEF _ TYPE , ĠOP _ DEF _ TYPE , ĠT ENSOR _ TYPE , ĠATTRIBUT E _ TYPE , ĠATTRIBUT E _ VALUE _ TYPE , ĠDATA _ TYPE >): ĠList < Op Namespace . Arg Descriptor > ĊĊĊĠĠĠ Ġfun Ġinput Argument Mappings (): ĠMap < String , ĠString > ĊĊĠĠĠ Ġfun Ġconvert Inputs Reverse ( to Reverse : ĠList < Op Namespace . Arg Descriptor >): ĠList < T ENSOR _ TYPE > ĊĊĠĠĠ Ġfun Ġis Input Tensor Name ( input Name : ĠString ): ĠBoolean ĊĊĠĠĠ Ġfun Ġis Output Tensor Name ( output Name : ĠString ): ĠBoolean Ċ Ċ } ĊĊ Ċ interface ĠAttribute Mapping Rule < GRAPH _ TYPE : ĠGenerated Message V 3 , OP _ DEF _ TYPE : ĠGenerated Message V 3 , NODE _ DEF _ TYPE : ĠGenerated Message V 3 , ATTRIBUTE _ TYPE Ġ: ĠGenerated Message V 3 , ĠATTRIBUT E _ VALUE _ TYPE Ġ: ĠGenerated Message V 3 , ĠT ENSOR _ TYPE Ġ: ĠGenerated Message V 3 , ĠDATA _ TYPE > ĊĠĠĠĠĠĠĠ Ġwhere ĠDATA _ TYPE : ĠProtocol Message Enum Ġ{ ĊĊĠĠĠ Ġfun Ġinit With Mapping Process ( mapping Process : ĠMapping Process < GRAPH _ TYPE , OP _ DEF _ TYPE , ĠNODE _ DEF _ TYPE , ĠT ENSOR _ TYPE , ĠATTRIBUT E _ TYPE , ĠATTRIBUT E _ VALUE _ TYPE , ĠDATA _ TYPE >) ĊĊĠĠĠ Ġfun Ġmapping Names To Perform (): ĠMap < String , String > ĊĊĠĠĠ Ġfun Ġmapping Transformer Args (): ĠMap < String , ĠList < Op Namespace . Arg Descriptor >> ĊĊĠĠĠ Ġfun Ġname (): ĠString ĊĊĠĠĠ Ġfun Ġserialize (): ĠMapper Namespace . Mapping Rule ĊĊĠĠĠ Ġfun Ġconvert Attributes ( mapping Ctx : ĠMapping Context < GRAPH _ TYPE , NODE _ DEF _ TYPE , ĠOP _ DEF _ TYPE , ĠT ENSOR _ TYPE , ĠATTRIBUT E _ TYPE , ĠATTRIBUT E _ VALUE _ TYPE , DATA _ TYPE >): ĠList < Op Namespace . Arg Descriptor > ĊĊĠĠĠ Ġfun Ġconvert Attributes Reverse ( all Input Arguments : ĠList < Op Namespace . Arg Descriptor >, Ġinput Arguments To Process : ĠList < Op Namespace . Arg Descriptor >): ĠList < IR Attribute < ATTRIBUTE _ TYPE , ĠATTRIBUT E _ VALUE _ TYPE , ĠT ENSOR _ TYPE , ĠDATA _ TYPE >> ĊĊĊĠĠĠ Ġfun Ġis Input Framework Tensor Name ( name : ĠString , mapping Process : ĠMapping Process < GRAPH _ TYPE , OP _ DEF _ TYPE , NODE _ DEF _ TYPE , T ENSOR _ TYPE , ATTRIBUTE _ TYPE , ATTRIBUTE _ VALUE _ TYPE , DATA _ TYPE >): ĠBoolean ĊĊĠĠĠ Ġfun Ġis Nd 4 j Tensor Name ( name : ĠString , mapping Process : ĠMapping Process < GRAPH _ TYPE , OP _ DEF _ TYPE , NODE _ DEF _ TYPE , T ENSOR _ TYPE , ATTRIBUTE _ TYPE , ATTRIBUTE _ VALUE _ TYPE , DATA _ TYPE >): ĠBoolean ĊĊĠĠĠ Ġfun Ġis Input Framework AttributeName ( name : ĠString , mapping Process : ĠMapping Process < GRAPH _ TYPE , OP _ DEF _ TYPE , NODE _ DEF _ TYPE , T ENSOR _ TYPE , ATTRIBUTE _ TYPE , ATTRIBUTE _ VALUE _ TYPE , DATA _ TYPE >): ĠBoolean ĊĊĠĠĠ Ġfun Ġis Output Framework AttributeName ( name : ĠString , mapping Process : ĠMapping Process < GRAPH _ TYPE , OP _ DEF _ TYPE , NODE _ DEF _ TYPE , T ENSOR _ TYPE , ATTRIBUTE _ TYPE , ATTRIBUTE _ VALUE _ TYPE , DATA _ TYPE >): ĠBoolean ĊĊĠĠĠ Ġfun Ġarg Descriptor Type ( name : ĠString , mapping Process : ĠMapping Process < GRAPH _ TYPE , OP _ DEF _ TYPE , NODE _ DEF _ TYPE , T ENSOR _ TYPE , ATTRIBUTE _ TYPE , ATTRIBUTE _ VALUE _ TYPE , DATA _ TYPE >): ĠOp Namespace . Arg Descriptor . Arg Type ĊĊĠĠĠ Ġfun Ġaccepts InputType ( arg Descriptor Type : ĠAttribute ValueType ): ĠBoolean ĊĊĠĠĠ Ġfun Ġoutputs Type ( arg Descriptor Type : ĠList < Op Namespace . Arg Descriptor . Arg Type >): ĠBoolean ĊĊĠĠĠ Ġfun Ġattribute ValueType For ( name : ĠString , mapping Process : ĠMapping Process < GRAPH _ TYPE , OP _ DEF _ TYPE , NODE _ DEF _ TYPE , T ENSOR _ TYPE , ATTRIBUTE _ TYPE , ATTRIBUTE _ VALUE _ TYPE , DATA _ TYPE >): ĠAttribute ValueType ĊĊĠĠĠ Ġfun Ġarg Descriptor Types For Output Name ( ĊĠĠĠĠĠĠĠ Ġname : ĠString , Ġmapping Process : ĊĠĠĠĠĠĠĠ ĠMapping Process < GRAPH _ TYPE , OP _ DEF _ TYPE , NODE _ DEF _ TYPE , T ENSOR _ TYPE , ATTRIBUTE _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠATTRIBUT E _ VALUE _ TYPE , DATA _ TYPE >): ĠList < Op Namespace . Arg Descriptor . Arg Type > Ċ } ĊĊ Ċ interface ĠMapping Context < GRAPH _ TYPE : ĠGenerated Message V 3 , NODE _ TYPE : ĠGenerated Message V 3 , OP _ DEF _ TYPE : ĠGenerated Message V 3 , T ENSOR _ TYPE : ĠGenerated Message V 3 , ATTRIBUTE _ TYPE : ĠGenerated Message V 3 , ĠATTRIBUT E _ VALUE _ TYPE : ĠGenerated Message V 3 , DATA _ TYPE : ĠProtocol Message Enum > Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġto Ġresolve Ġdynamic Ġplace Ġholder Ġvariables Ġwhere ĊĠĠĠĠ Ġ* Ġscalar Ġvalues Ġare Ġpresent . ĠAn Ġexample Ġscenario Ġis Ġwhen Ġa Ġvalue Ġis Ġan Ġinput Ġndarray ĊĠĠĠĠ Ġ* Ġsuch Ġas Ġpow (..) Ġwhere Ġ 1 Ġis Ġalways Ġan Ġndarray Ġand Ġthe Ġother Ġis Ġa Ġscalar Ġvalue ĊĠĠĠĠ Ġ* Ġrepresented Ġas Ġa Ġdouble Ġargument Ġin Ġnd 4 j , Ġbut Ġmight Ġbe Ġa Ġplaceholder ĊĠĠĠĠ Ġ* Ġin Ġthe Ġinput Ġframework . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġresolve Dynamic (): ĠBoolean ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInput Ġvariables Ġfor Ġ Ġdynamic Ġresolution Ġrequired Ġfor Ġimport . ĊĠĠĠĠ Ġ* ĠThis Ġ Ġis Ġimportant Ġfor Ġany Ġcases Ġwhere Ġ Ġa Ġplaceholder Ġvariable ĊĠĠĠĠ Ġ* Ġcan Ġbe Ġimported Ġand Ġresolved Ġdynamically Ġand Ġlater Ġpassed Ġon Ġas Ġscal ars . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdynamic Resolution Variables (): ĠMap < String , ĠT ENSOR _ TYPE > ĊĊĠĠĠ Ġfun Ġnode (): ĠNODE _ TYPE ĊĊĠĠĠ Ġfun Ġir Node (): ĠIR Node < NODE _ TYPE , T ENSOR _ TYPE , ATTRIBUTE _ TYPE , ATTRIBUTE _ VALUE _ TYPE , DATA _ TYPE > ĊĊĠĠĠ Ġfun Ġop Def (): ĠOP _ DEF _ TYPE ĊĊĠĠĠ Ġfun Ġop Name (): ĠString ĊĊĠĠĠ Ġfun ĠnodeName (): ĠString ĊĊĠĠĠ Ġfun Ġattr Def ( name : ĠString ): ĠATTRIBUT E _ TYPE ĊĊĠĠĠ Ġfun Ġtensor Input For ( name : ĠString ): ĠI RT ensor < T ENSOR _ TYPE , DATA _ TYPE > ĊĊĠĠĠ Ġfun Ġtensor Input From Input Framework Name ( name : ĠString ): ĠI RT ensor < T ENSOR _ TYPE , DATA _ TYPE > ĊĊĠĠĠ Ġfun Ġtensor Attribute For ( name : ĠString ): ĠI RT ensor < T ENSOR _ TYPE , DATA _ TYPE > ĊĊĊĠĠĠ Ġfun Ġcreate IR Tensor From ND Array ( nd ar ay : IND Array ): ĠI RT ensor < T ENSOR _ TYPE , DATA _ TYPE > ĊĊĠĠĠ Ġfun Ġnd 4 j DataType For ( input : ĠI RT ensor < T ENSOR _ TYPE , DATA _ TYPE >): ĠDataType ĊĊĠĠĠ Ġfun Ġir AttributeValue For Node ( value Name : ĠString ): ĠIR Attribute < ATTRIBUTE _ TYPE , ATTRIBUTE _ VALUE _ TYPE , T ENSOR _ TYPE , DATA _ TYPE > ĊĊĠĠĠ Ġfun Ġarg Descriptor Type For Name ( nd 4 j Name : ĠString ): ĠList < Op Namespace . Arg Descriptor . Arg Type > ĊĊĠĠĠ Ġfun Ġgraph (): ĠIR Graph < GRAPH _ TYPE , NODE _ TYPE , OP _ DEF _ TYPE , T ENSOR _ TYPE , ATTRIBUTE _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠATTRIBUT E _ VALUE _ TYPE , DATA _ TYPE > ĊĊĠĠĠ Ġfun Ġnd 4 j Op Name (): ĠString Ċ Ċ } Ċ Ċ abstract Ġclass ĠAbstract Mapping Context < GRAPH _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠNODE _ TYPE : ĠGenerated Message V 3 , OP _ DEF _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠT ENSOR _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠATTRIBUT E _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠATTRIBUT E _ VALUE _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠDATA _ TYPE : ĠProtocol Message Enum >( ĊĠĠĠ Ġop Def : ĠOP _ DEF _ TYPE , ĊĠĠĠ Ġnode : ĠNODE _ TYPE , ĊĠĠĠ Ġgraph : ĊĠĠĠ ĠIR Graph < GRAPH _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNODE _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOP _ DEF _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT ENSOR _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠATTRIBUT E _ TYPE , ATTRIBUTE _ VALUE _ TYPE , DATA _ TYPE >, ĊĠĠĠ Ġdynamic Variables : ĠMap < String , ĠT ENSOR _ TYPE > Ġ= Ġempty Map ()): ĊĠĠĠ ĠMapping Context < GRAPH _ TYPE , NODE _ TYPE , OP _ DEF _ TYPE , T ENSOR _ TYPE , ATTRIBUTE _ TYPE , ATTRIBUTE _ VALUE _ TYPE , DATA _ TYPE > Ġ{ ĊĊĠĠĠ Ġval Ġop Def Ġ= Ġop Def ĊĠĠĠ Ġval Ġnode Ġ= Ġnode ĊĠĠĠ Ġval Ġgraph Ġ= Ġgraph ĊĠĠĠ Ġval Ġdynamic Variables : ĠMap < String , T ENSOR _ TYPE > Ġ= Ġdynamic Variables ĊĊĠĠĠ Ġoverride Ġfun Ġdynamic Resolution Variables (): ĠMap < String , ĠT ENSOR _ TYPE > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdynamic Variables ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġresolve Dynamic (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdynamic Variables . isNotEmpty () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnode (): ĠNODE _ TYPE Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnode ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġop Def (): ĠOP _ DEF _ TYPE Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġop Def ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġgraph (): ĠIR Graph < GRAPH _ TYPE , NODE _ TYPE , ĠOP _ DEF _ TYPE , ĠT ENSOR _ TYPE , ĠATTRIBUT E _ TYPE , ĠATTRIBUT E _ VALUE _ TYPE , ĠDATA _ TYPE > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġgraph ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġarg Descriptor Type For Name ( nd 4 j Name : ĠString ): ĠList < Op Namespace . Arg Descriptor . Arg Type > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġop Descriptor Ġ= Ġnd 4 j Op Descriptors . find Op ( graph . nd 4 j Name For Internal Op Name ( op Name ())) ĊĠĠĠĠĠĠĠ Ġreturn Ġop Descriptor . arg Descriptor List . filter Ġ{ Ġarg Descriptor Ġ-> Ġarg Descriptor . name Ġ== Ġnd 4 j Name Ġ}. map Ġ{ Ġarg Descriptor Ġ-> Ġ Ġarg Descriptor . arg Type Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnd 4 j Op Name (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnd 4 j Op Descriptors . find Op ( graph . nd 4 j Name For Internal Op Name ( op Name ())). name ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ interface ĠIR Graph Runner < ĊĠĠĠĠĠĠĠ ĠGRAPH _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠNODE _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠOP _ DEF _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠT ENSOR _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠATTRIBUT E _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠATTRIBUT E _ VALUE _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠDATA _ TYPE Ġ: ĠProtocol Message Enum > Ġ{ ĊĊĠĠĠ Ġfun Ġgraph (): ĠIR Graph < GRAPH _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNODE _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOP _ DEF _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT ENSOR _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠATTRIBUT E _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠATTRIBUT E _ VALUE _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDATA _ TYPE > ĊĊĠĠĠ Ġfun Ġrun ( inputs : ĠMap < String , IND Array >): ĠMap < String , IND Array > Ċ } ĊĊ Ċ interface ĠIR Graph < ĊĠĠĠĠĠĠĠ ĠGRAPH _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠNODE _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠOP _ DEF _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠT ENSOR _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠATTRIBUT E _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠATTRIBUT E _ VALUE _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠDATA _ TYPE Ġ: ĠProtocol Message Enum > Ġ{ ĊĊĠĠĠ Ġfun Ġimport Info ForEach Node ( dynamic Variables : ĠMap < String , ĠT ENSOR _ TYPE >): ĠMap < String , ĠPair < Mapping Context < GRAPH _ TYPE , ĠNODE _ TYPE , ĠOP _ DEF _ TYPE , ĠT ENSOR _ TYPE , ĠATTRIBUT E _ TYPE , ĠATTRIBUT E _ VALUE _ TYPE , ĠDATA _ TYPE >, ĠOp Namespace . Op Descriptor >> ĊĊĠĠĠ Ġfun Ġshape Of Input ( varName : ĠString ): ĠLong Array ? ĊĊĠĠĠ Ġfun ĠdataType For Variable ( varName : ĠString ): ĠIR DataType < DATA _ TYPE > ĊĊĠĠĠ Ġfun Ġis Constant ( op Name : ĠString ): ĠBoolean ĊĊĠĠĠ Ġfun Ġnode Is Place Holder ( nodeName : ĠString ): ĠBoolean ĊĊĠĠĠ Ġfun Ġis Place Holder ( op Name : ĠString ): ĠBoolean ĊĊĠĠĠ Ġfun Ġis Constant Op Name ( name : ĠString ): ĠBoolean ĊĊĠĠĠ Ġfun Ġnode ByName ( input : ĠString ): ĠNODE _ TYPE ĊĊĠĠĠ Ġfun Ġnode List (): ĠList < IR Node < NODE _ TYPE , T ENSOR _ TYPE , ATTRIBUTE _ TYPE , ATTRIBUTE _ VALUE _ TYPE , DATA _ TYPE >> ĊĊĠĠĠ Ġfun Ġinternal Value (): ĠGRAPH _ TYPE ĊĊĠĠĠ Ġfun Ġcreate Mapping Context ( ĊĠĠĠĠĠĠĠ Ġop Def : ĠOP _ DEF _ TYPE , ĊĠĠĠĠĠĠĠ Ġnode : ĠNODE _ TYPE , ĊĠĠĠĠĠĠĠ Ġdynamic Variables : ĠMap < String , ĠT ENSOR _ TYPE > ĊĠĠĠ Ġ): ĠMapping Context < GRAPH _ TYPE , ĠNODE _ TYPE , ĠOP _ DEF _ TYPE , ĠT ENSOR _ TYPE , ĠATTRIBUT E _ TYPE , ĠATTRIBUT E _ VALUE _ TYPE , ĠDATA _ TYPE > ĊĊĠĠĠ Ġfun Ġframework Name (): ĠString ĊĊĠĠĠ Ġfun Ġnd 4 j Name For Internal Op Name ( name : ĠString ): ĠString Ċ } ĊĊĊ Ċ fun Ġ< GRAPH _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠNODE _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠOP _ DEF _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠT ENSOR _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠATTRIBUT E _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠATTRIBUT E _ VALUE _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠDATA _ TYPE Ġ: ĠProtocol Message Enum > Ġimport Info ForEach Node In Graph Ġ( ĊĠĠĠ Ġgraph : ĠIR Graph < GRAPH _ TYPE , NODE _ TYPE , OP _ DEF _ TYPE , T ENSOR _ TYPE , ATTRIBUTE _ TYPE , ATTRIBUTE _ VALUE _ TYPE , DATA _ TYPE >, ĊĠĠĠ Ġdynamic Variables : ĠMap < String , ĠT ENSOR _ TYPE >) ĊĠĠĠĠĠĠĠ Ġ: Ġ ĠMap < String , Pair < Mapping Context < GRAPH _ TYPE , ĊĠĠĠĠĠĠĠ ĠNODE _ TYPE , OP _ DEF _ TYPE , ĊĠĠĠĠĠĠĠ ĠT ENSOR _ TYPE , ATTRIBUTE _ TYPE , ATTRIBUTE _ VALUE _ TYPE , ĊĠĠĠĠĠĠĠ ĠDATA _ TYPE >, Op Namespace . Op Descriptor >> Ġ{ ĊĊĠĠĠ Ġval Ġop Mapping Registry Ġ= ĠOp Registry Holder . op Mapping Registry For Name < GRAPH _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNODE _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOP _ DEF _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT ENSOR _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠATTRIBUT E _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠATTRIBUT E _ VALUE _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDATA _ TYPE >( graph . framework Name ()) ĊĊĠĠĠ Ġval Ġret Ġ= ĠHashMap < String , Pair < Mapping Context < GRAPH _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNODE _ TYPE , OP _ DEF _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT ENSOR _ TYPE , ATTRIBUTE _ TYPE , ATTRIBUTE _ VALUE _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDATA _ TYPE >, Op Namespace . Op Descriptor >>() ĊĊĠĠĠ Ġgraph . node List (). forEach Ġ{ Ġnode Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġnode . nodeName () ĊĠĠĠĠĠĠĠ Ġval Ġop Mapping Process Ġ= Ġ ĠOp Registry Holder . lookup Op Mapping Process < ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGRAPH _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNODE _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOP _ DEF _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT ENSOR _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDATA _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠATTRIBUT E _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠATTRIBUT E _ VALUE _ TYPE >( input Framework Op Name Ġ= Ġnode . op Name (), Ġinput Framework Name Ġ= Ġgraph . framework Name ()) ĊĠĠĠĠĠĠĠ Ġval Ġop Def Lookup Ġ= Ġop Mapping Registry . lookup Input Framework Op Def ( node . op Name ()) ĊĠĠĠĠĠĠĠ Ġval Ġmapping Context Ġ= Ġgraph . create Mapping Context ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġop Def Ġ= Ġop Def Lookup , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode Ġ= Ġgraph . node ByName ( node . nodeName ()), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdynamic Variables Ġ= Ġdynamic Variables ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġapplied Ġ= Ġop Mapping Process . apply Process ( mapping Context ) ĊĠĠĠĠĠĠĠ Ġret [ name ] Ġ= Ġapplied ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġret Ċ } Ċ Ċ interface ĠIR Node < NODE _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠT ENSOR _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠATTRIBUT E _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠATTRIBUT E _ VALUE _ TYPE Ġ: ĠGenerated Message V 3 , ĠDATA _ TYPE > ĊĠĠĠĠĠĠĠ Ġwhere Ġ ĠDATA _ TYPE : ĠProtocol Message Enum Ġ{ ĊĊĊĠĠĠ Ġfun Ġnd 4 j Inputs ( tensor Mappings : ĠMap < String , ĠString >): ĠList < String > ĊĊĠĠĠ Ġfun Ġcompute Adjust ed Offset For Input ( ĊĠĠĠĠĠĠĠ Ġnd 4 j Name : ĠString , ĊĠĠĠĠĠĠĠ Ġinput Framework Name : ĠString , ĊĠĠĠĠĠĠĠ Ġtensor Input Mappings : ĠMap < String , ĠString > ĊĠĠĠ Ġ): ĠInt ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġthe Ġlist Ġof Ġinputs Ġfrom Ġthe Ġnode Ġthat Ġrepresent Ġa Ġparticular ĊĠĠĠĠ Ġ* Ġ[ Op Def ] Ġinput Ġlist Ġname . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinput Names For ListOf Input Values ( input List Name : ĠString ): ĠList < String > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCompute Ġthe Ġnumber Ġof Ġinputs ĊĠĠĠĠ Ġ* Ġfor Ġa Ġlist Ġof Ġtensors Ġthat Ġreflect Ġ 1 Ġor Ġmore Ġinputs ĊĠĠĠĠ Ġ* Ġas Ġ 1 Ġname . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġnum Inputs For ListOf T ensors ( name : ĠString ): ĠInt ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠList Ġof Ġinputs Ġin Ġto Ġthe Ġnode ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġlist Ġof Ġinput Ġnames Ġfor Ġthis Ġnode ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ Ġcreate Inputs From ( input Data : ĠList < T ENSOR _ TYPE >): ĠList < IR Tensor < T ENSOR _ TYPE , ĠDATA _ TYPE >> ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠList Ġof Ġoutputs ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġlist Ġof Ġoutput Ġnames Ġfor Ġthis Ġnode ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcreate Outputs From ( input Values : ĠList < T ENSOR _ TYPE >): ĠList < IR Tensor < T ENSOR _ TYPE , ĠDATA _ TYPE >> ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOp Ġname ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġop Name (): ĠString ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġname Ġof Ġthe Ġnode ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġname Ġof Ġthe Ġnode ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠnodeName (): ĠString ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠList Ġof Ġinput Ġnames ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinputs (): ĠList < String > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠList Ġof Ġoutput Ġnames ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġoutputs (): ĠList < String > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġinput Ġat Ġa Ġparticular Ġindex ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġname Ġat Ġthe Ġparticular Ġindex ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġinput At ( index : ĠInt ): ĠString ĊĠĠĠ Ġfun Ġoutput At ( index : ĠInt ): ĠString ĊĊĠĠĠ Ġfun Ġnum Inputs (): ĠInt ĊĊĠĠĠ Ġfun Ġnum Outputs (): ĠInt ĊĊĠĠĠ Ġfun Ġattribute Map (): ĠMap < String , ĠIR Attribute < ATTRIBUTE _ TYPE , ĠATTRIBUT E _ VALUE _ TYPE , ĠT ENSOR _ TYPE , ĠDATA _ TYPE >> ĊĠĠĠ Ġfun Ġget Attribute ( input Name : ĠString ): ĠIR Attribute < ATTRIBUTE _ TYPE , ĠATTRIBUT E _ VALUE _ TYPE , ĠT ENSOR _ TYPE , ĠDATA _ TYPE > ĊĠĠĠ Ġfun Ġhas Attribute ( input Name : ĠString ): ĠBoolean ĊĊĠĠĠ Ġfun Ġinternal Value (): ĠNODE _ TYPE Ċ } Ċ Ċ interface ĠIR Arg Def < T Ġ: ĠGenerated Message V 3 , ĠDATA _ TYPE > ĊĠĠĠĠĠĠĠ Ġwhere ĠDATA _ TYPE : ĠProtocol Message Enum Ġ{ ĊĠĠĠ Ġfun Ġname (): ĠString ĊĊĠĠĠ Ġfun Ġdescription (): ĠString ĊĊĠĠĠ Ġfun ĠdataType (): ĠIR DataType < DATA _ TYPE > ĊĊĠĠĠ Ġfun Ġinternal Value (): ĠT ĊĊĠĠĠ Ġfun ĠindexOf (): ĠInteger Ċ } Ċ Ċ interface ĠI RO p Def < ĊĠĠĠĠĠĠĠ ĠGRAPH _ DEF : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠOP _ DEF _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠT ENSOR _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠARG _ DEF _ TYPE Ġ: ĠGenerated Message V 3 , ĠDATA _ TYPE , ĊĠĠĠĠĠĠĠ ĠATTRIBUT E _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠATTRIBUT E _ VALUE _ TYPE Ġ: ĠGenerated Message V 3 > ĊĠĠĠĠĠĠĠ Ġwhere ĠDATA _ TYPE : ĠProtocol Message Enum Ġ Ġ{ ĊĠĠĠ Ġfun Ġop Name (): ĠString ĊĊĠĠĠ Ġfun Ġinternal Value (): ĠOP _ DEF _ TYPE ĊĊĠĠĠ Ġfun Ġinput Args (): ĠList < IR Arg Def < ARG _ DEF _ TYPE , ĠDATA _ TYPE >> ĊĊĠĠĠ Ġfun Ġoutput Args (): ĠList < IR Arg Def < ARG _ DEF _ TYPE , ĠDATA _ TYPE >> ĊĊĠĠĠ Ġfun Ġattributes (): ĠList < IR Attribute < ATTRIBUTE _ TYPE , ĠATTRIBUT E _ VALUE _ TYPE , ĠT ENSOR _ TYPE , ĠDATA _ TYPE >> Ċ Ċ } Ċ Ċ enum Ġclass ĠIR DataType Value Ġ{ ĊĠĠĠ ĠDT _ FLOAT , ĊĠĠĠ ĠDT _ DOUBLE , ĊĠĠĠ ĠDT _ INT 3 2 , ĊĠĠĠ ĠDT _ UINT 8 , ĊĠĠĠ ĠDT _ INT 1 6 , ĊĠĠĠ ĠDT _ INT 8 , ĊĠĠĠ ĠDT _ STRING , ĊĠĠĠ ĠDT _ COMPLEX 6 4 , Ġ Ġ// ĠSingle - precision Ġcomplex ĊĠĠĠ ĠDT _ INT 6 4 , ĊĠĠĠ ĠDT _ BOOL , ĊĠĠĠ ĠDT _ Q INT 8 , ĠĠĠĠ Ġ// ĠQuant ized Ġint 8 ĊĠĠĠ ĠDT _ QU INT 8 , ĠĠĠ Ġ// ĠQuant ized Ġuint 8 ĊĠĠĠ ĠDT _ Q INT 3 2 , ĠĠĠ Ġ// ĠQuant ized Ġint 3 2 ĊĠĠĠ ĠDT _ BF LOAT 1 6 , Ġ Ġ// ĠFloat 3 2 Ġtruncated Ġto Ġ 1 6 Ġbits . Ġ ĠOnly Ġfor Ġcast Ġops . ĊĠĠĠ ĠDT _ Q INT 1 6 , ĠĠĠ Ġ// ĠQuant ized Ġint 1 6 ĊĠĠĠ ĠDT _ QU INT 1 6 , ĠĠ Ġ// ĠQuant ized Ġuint 1 6 ĊĠĠĠ ĠDT _ UINT 1 6 , ĊĠĠĠ ĠDT _ COMPLEX 1 2 8 , Ġ Ġ// ĠDouble - precision Ġcomplex ĊĠĠĠ ĠDT _ HALF , ĊĠĠĠ ĠDT _ RESOURCE , ĊĠĠĠ ĠDT _ VARIANT , Ġ Ġ// ĠAr bitrary ĠC ++ Ġdata Ġtypes ĊĠĠĠ ĠDT _ UINT 3 2 , ĊĠĠĠ ĠDT _ UINT 6 4 , ĊĠĠĠ ĠDT _ INVALID Ċ Ċ } Ċ Ċ interface ĠIR DataType < DATA _ TYPE > Ġwhere ĠDATA _ TYPE : ĠProtocol Message Enum Ġ{ ĊĠĠĠ Ġfun ĠconvertTo DataType ( input : ĠDATA _ TYPE ): ĠIR DataType Value ĊĊĠĠĠ Ġfun ĠdataType (): ĠIR DataType Value ĊĊĠĠĠ Ġfun Ġinternal Value (): ĠDATA _ TYPE ĊĊĠĠĠ Ġfun Ġnd 4 j DataType (): ĠDataType ĊĊĠĠĠ Ġfun Ġname Space DataType (): ĠTensor Namespace . DataType Ċ } ĊĊĊ Ċ abstract Ġ Ġclass ĠAbstract Mapping Process < ĊĠĠĠĠĠĠĠ ĠGRAPH _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠOP _ DEF _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠNODE _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠT ENSOR _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠATTRIBUT E _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠATTRIBUT E _ VALUE _ TYPE Ġ: ĠGenerated Message V 3 , ĠDATA _ TYPE : ĠProtocol Message Enum >( input Framework : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġframework Version : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Framework Op Name : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Index Overrides : ĠMap < Int , Int > Ġ= Ġempty Map (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġop Name : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġop Mapping Registry : ĠOp Mapping Registry < GRAPH _ TYPE , NODE _ TYPE , OP _ DEF _ TYPE , T ENSOR _ TYPE , DATA _ TYPE , ATTRIBUTE _ TYPE , ATTRIBUTE _ VALUE _ TYPE >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtensor Mapping Rules : ĠList < out ĠTensor Mapping Rule < GRAPH _ TYPE , OP _ DEF _ TYPE , NODE _ TYPE , ATTRIBUTE _ TYPE , ĠATTRIBUT E _ VALUE _ TYPE , ĠT ENSOR _ TYPE , ĠDATA _ TYPE >>, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattribute Mapping Rules : ĠList < out ĠAttribute Mapping Rule < GRAPH _ TYPE , OP _ DEF _ TYPE , NODE _ TYPE , ATTRIBUTE _ TYPE , ĠATTRIBUT E _ VALUE _ TYPE , ĠT ENSOR _ TYPE , ĠDATA _ TYPE >> ): ĊĠĠĠ ĠMapping Process < GRAPH _ TYPE , OP _ DEF _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNODE _ TYPE , T ENSOR _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠATTRIBUT E _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠATTRIBUT E _ VALUE _ TYPE , DATA _ TYPE > Ġ{ ĊĊĠĠĠ Ġprotected Ġval Ġinput Framework Ġ= Ġinput Framework ĊĠĠĠ Ġprotected Ġval Ġframework Version Ġ= Ġframework Version ĊĠĠĠ Ġprotected Ġval Ġinput Framework Op Name Ġ= Ġinput Framework Op Name ĊĠĠĠ Ġprotected Ġval Ġop Name Ġ= Ġop Name ĊĠĠĠ Ġprotected Ġval Ġtensor Mapping Rules Ġ= Ġtensor Mapping Rules ĊĠĠĠ Ġprotected Ġval Ġattribute Mapping Rules Ġ= Ġattribute Mapping Rules ĊĠĠĠ Ġprotected Ġvar Ġop Def : ĠI RO p Def < GRAPH _ TYPE , OP _ DEF _ TYPE , T ENSOR _ TYPE , ATTRIBUTE _ TYPE , DATA _ TYPE , ATTRIBUTE _ TYPE , ATTRIBUTE _ VALUE _ TYPE >? Ġ= Ġnull ĊĠĠĠ Ġprotected Ġval Ġop Mapping Registry Ġ= Ġop Mapping Registry ĊĠĠĠ Ġprotected Ġval Ġinput Index Overrides Ġ= Ġinput Index Overrides ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġtensor Mapping Rules . forEach Ġ{ Ġtensor Mapping Rule Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtensor Mapping Rule . initWith Mapping Process ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtensor Mapping Rule . mapping Names To Perform (). forEach Ġ{ Ġ( nd 4 j Name , Ġinput Framework Name ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! tensor Mapping Rule . is Input Tensor Name ( input Framework Name )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Found Ġinvalid Ġinput Ġtensor Ġnamed Ġ${ input Framework Name } Ġfor Ġrule Ġ${ tensor Mapping Rule . name ()} Ġand Ġmapping Ġprocess Ġfor Ġop Ġ${ op Name } Ġand Ġinput Ġframework Ġname Ġ${ input Framework Op Name } Ġwith Ġdefinition Ġbeing Ġ Ġ${ nd 4 j Op Descriptors . find Op ( op Name )} ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! tensor Mapping Rule . is Output Tensor Name ( nd 4 j Name )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Found Ġinvalid Ġoutput Ġtensor Ġnamed Ġ${ nd 4 j Name } Ġfor Ġrule Ġ${ tensor Mapping Rule . name ()} Ġand Ġmapping Ġprocess Ġfor Ġop Ġ${ op Name } Ġand Ġinput Ġframework Ġname Ġ${ input Framework Op Name } Ġwith Ġdefinition Ġbeing Ġ${ nd 4 j Op Descriptors . find Op ( op Name )} ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġattribute Mapping Rules . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . initWith Mapping Process ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġattribute Mapping Rules . forEach Ġ{ Ġattribute Mapping Rule Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġattribute Mapping Rule . mapping Names To Perform (). forEach Ġ{ Ġ( nd 4 j Name , Ġinput Framework Name ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Type Ġ= Ġattribute Mapping Rule . attribute ValueType For ( input Framework Name , this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! attribute Mapping Rule . accept s InputType ( input Type )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Rule Ġ${ attribute Mapping Rule . name ()} Ġfor Ġframework Ġ$ input Framework Ġdoes Ġnot Ġaccept Ġinput Ġtype Ġ${ input Type } Ġfor Ġattribute Ġname Ġ${ input Framework Name } Ġand Ġmapping Ġprocess Ġfor Ġop Ġ${ op Name } Ġand Ġinput Ġframework Ġname Ġ${ input Framework Op Name }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutput Type Ġ= Ġattribute Mapping Rule . arg Descriptor Types For Output Name ( nd 4 j Name , this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! attribute Mapping Rule . outputs Type ( output Type )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Rule Ġ${ attribute Mapping Rule . name ()} Ġfor Ġframework Ġ$ input Framework Ġwith Ġinput Ġframework Ġname Ġ$ input Framework Name Ġdoes Ġnot Ġaccept Ġoutput Ġtype Ġ${ output Type } Ġfor Ġattribute Ġname Ġ${ nd 4 j Name } Ġand Ġmapping Ġprocess Ġfor Ġop Ġ${ op Name }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġop Mapping Registry . register Mapping Process ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Framework Op Name Ġ= Ġinput Framework Op Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprocess To Register Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġ) ĊĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġindex Overrides (): ĠMap < Int , ĠInt > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinput Index Overrides ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġattribute Mapping Rules (): ĠList < Attribute Mapping Rule < GRAPH _ TYPE , OP _ DEF _ TYPE , NODE _ TYPE , ATTRIBUTE _ TYPE , ĠATTRIBUT E _ VALUE _ TYPE , ĠT ENSOR _ TYPE , ĠDATA _ TYPE >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġattribute Mapping Rules ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtensor Mapping Rules (): ĠList < Tensor Mapping Rule < GRAPH _ TYPE , OP _ DEF _ TYPE , NODE _ TYPE , ATTRIBUTE _ TYPE , ĠATTRIBUT E _ VALUE _ TYPE , ĠT ENSOR _ TYPE , ĠDATA _ TYPE >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtensor Mapping Rules ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġapply Process Reverse ( input : ĠOp Declaration Descriptor ): ĠIR Node < NODE _ TYPE , ĠT ENSOR _ TYPE , ĠATTRIBUT E _ TYPE , ĠATTRIBUT E _ VALUE _ TYPE , ĠDATA _ TYPE > Ġ{ ĊĠĠĠĠĠĠĠ ĠTODO (" Not Ġyet Ġimplemented ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinput Framework Op Name (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinput Framework Op Name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġop Name (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġop Name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġframework Version (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġframework Version ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinput Framework (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġinput Framework ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġapply Process ( mapping Ctx : ĠMapping Context < GRAPH _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNODE _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOP _ DEF _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT ENSOR _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠATTRIBUT E _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠATTRIBUT E _ VALUE _ TYPE , DATA _ TYPE >): ĠPair < Mapping Context < ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGRAPH _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNODE _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOP _ DEF _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT ENSOR _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠATTRIBUT E _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠATTRIBUT E _ VALUE _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDATA _ TYPE >, ĠOp Namespace . Op Descriptor > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdescriptor Builder Ġ= ĠOp Namespace . Op Descriptor . newBuilder () ĊĠĠĠĠĠĠĠ Ġdescriptor Builder . name Ġ= Ġop Name () ĊĠĠĠĠĠĠĠ Ġtensor Mapping Rules . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . convert Input ( mapping Ctx ). forEach Ġ{ Ġdescriptor Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescriptor Builder . add Arg Descriptor ( descriptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġattribute Mapping Rules . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . convert Attributes ( mapping Ctx ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescriptor Ġ-> Ġdescriptor Builder . add Arg Descriptor ( descriptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġfull Descriptor Ġ= Ġnd 4 j Op Descriptors . find Op ( op Name ()) ĊĠĠĠĠĠĠĠ Ġdescriptor Builder . op Declaration Type Ġ= Ġfull Descriptor . op Declaration Type ĊĊĠĠĠĠĠĠĠ Ġreturn ĠPair ( mapping Ctx , descriptor Builder . build ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġserialize (): ĠMapper Namespace . Mapper Declaration Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġret Builder Ġ= ĠMapper Namespace . Mapper Declaration . newBuilder () ĊĠĠĠĠĠĠĠ Ġret Builder . framework Name Ġ= Ġinput Framework () ĊĠĠĠĠĠĠĠ Ġret Builder . op Name Ġ= Ġop Name () ĊĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠTODO : Ġadd Ġinput Ġindex Ġoverrides ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĊĠĠĠĠĠĠĠ Ġindex Overrides (). forEach Ġ{ Ġindex To Override , Ġreplacement Index Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġret Builder . put Index Overrides ( index To Override . to Long (), replacement Index . to Long ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtensor Mapping Rules . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġret Builder . add Rule ( it . serialize (). to Builder ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġattribute Mapping Rules . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġret Builder . add Rule ( it . serialize (). to Builder ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġret Builder . build () ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ fun ĠArg Descriptor ( block : ĠOp Namespace . Arg Descriptor . Builder . () Ġ-> ĠUnit ): ĠOp Namespace . Arg Descriptor Ġ{ ĊĠĠĠ Ġreturn ĠOp Namespace . Arg Descriptor . newBuilder () ĊĠĠĠĠĠĠĠ Ġ. apply ( block ). build () Ċ } Ċ Ċ fun ĠName Space Tensor ( block : ĠTensor Namespace . Tensor Proto . Builder . () Ġ-> ĠUnit ): ĠTensor Namespace . Tensor Proto Ġ{ ĊĠĠĠ Ġreturn ĠTensor Namespace . Tensor Proto . newBuilder () ĊĠĠĠĠĠĠĠ Ġ. apply ( block ). build () Ċ } ĊĊĊ Ċ fun ĠTensor Namespace . Tensor Proto . Builder . RawData ( raw Data : ĠByteArray ) Ġ{ ĊĠĠĠ Ġthis . raw Data Ġ= ĠByte String . copyFrom ( raw Data ) Ċ } Ċ Ċ fun ĠTensor Namespace . Tensor Proto . Builder . Int Data ( int Data : ĠList < Int >) Ġ{ ĊĠĠĠ Ġthis . addAll Int 3 2 Data ( int Data ) Ċ } Ċ Ċ fun ĠTensor Namespace . Tensor Proto . Builder . Float Data ( float Data : ĠList < Float >) Ġ{ ĊĠĠĠ Ġthis . addAll Float Data ( float Data ) Ċ } Ċ Ċ fun ĠTensor Namespace . Tensor Proto . Builder . Double Data ( double Data : ĠList < Double >) Ġ{ ĊĠĠĠ Ġthis . addAll Double Data ( double Data ) Ċ } Ċ Ċ fun ĠTensor Namespace . Tensor Proto . Builder . String Data ( string Data : ĠList < String >) Ġ{ ĊĠĠĠ Ġthis . addAll String Data ( string Data . map Ġ{ Ġinput Ġ-> ĠByte String . copyFrom ( input . toByteArray ( Charset . default Charset ())) Ġ}) Ċ } Ċ Ċ fun ĠTensor Namespace . Tensor Proto . Builder . Int 6 4 Data ( int Data : ĠList < Long >) Ġ{ ĊĠĠĠ Ġthis . addAll Int 6 4 Data ( int Data ) Ċ } Ċ Ċ fun ĠTensor Namespace . Tensor Proto . Builder . Dims ( shape : ĠList < Long >) Ġ{ ĊĠĠĠ Ġshape . forEach Ġ{ Ġthis . add Dims ( it ) Ġ} Ċ } ĊĊ Ċ fun Ġconvert Nd 4 j DataType FromName Space Tensor DataType ( dataType : ĠTensor Namespace . DataType ): ĠDataType Ġ{ ĊĠĠĠ Ġreturn Ġwhen ( dataType ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTensor Namespace . DataType . UINT 3 2 Ġ-> Ġreturn ĠDataType . UINT 3 2 ĊĠĠĠĠĠĠĠ ĠTensor Namespace . DataType . INT 6 4 Ġ-> Ġreturn ĠDataType . INT 6 4 ĊĠĠĠĠĠĠĠ ĠTensor Namespace . DataType . INT 1 6 Ġ-> Ġreturn ĠDataType . INT 1 6 ĊĠĠĠĠĠĠĠ ĠTensor Namespace . DataType . UINT 6 4 Ġ-> Ġ Ġreturn ĠDataType . UINT 6 4 ĊĠĠĠĠĠĠĠ ĠTensor Namespace . DataType . DOUBLE Ġ-> Ġ Ġreturn ĠDataType . DOUBLE ĊĠĠĠĠĠĠĠ ĠTensor Namespace . DataType . FLOAT Ġ-> Ġ Ġreturn ĠDataType . FLOAT ĊĠĠĠĠĠĠĠ ĠTensor Namespace . DataType . FLOAT 1 6 Ġ-> Ġ Ġreturn ĠDataType . FLOAT 1 6 ĊĠĠĠĠĠĠĠ ĠTensor Namespace . DataType . FLOAT 1 6 Ġ-> Ġreturn Ġ ĠDataType . FLOAT 1 6 ĊĠĠĠĠĠĠĠ ĠTensor Namespace . DataType . INT 3 2 Ġ-> Ġ Ġreturn ĠDataType . INT 3 2 ĊĠĠĠĠĠĠĠ ĠTensor Namespace . DataType . STRING Ġ-> Ġ Ġreturn ĠDataType . UTF 8 ĊĠĠĠĠĠĠĠ ĠTensor Namespace . DataType . BOOL Ġ-> Ġreturn Ġ ĠDataType . BOOL ĊĠĠĠĠĠĠĠ ĠTensor Namespace . DataType . BF LOAT 1 6 Ġ-> Ġreturn Ġ ĠDataType . BF LOAT 1 6 ĊĠĠĠĠĠĠĠ ĠTensor Namespace . DataType . INT 8 Ġ-> Ġreturn ĠDataType . INT 8 ĊĠĠĠĠĠĠĠ ĠTensor Namespace . DataType . UINT 1 6 Ġ-> Ġreturn ĠDataType . UINT 1 6 ĊĠĠĠĠĠĠĠ ĠTensor Namespace . DataType . UNDEFINED , Tensor Namespace . DataType . UN RE CO GN IZED Ġ-> Ġreturn ĠDataType . UNKNOWN ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Illegal Ġdata Ġtype Ġ$ dataType ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġconvert NameSpace Tensor DataType From Nd 4 j DataType ( dataType : ĠDataType ): ĠTensor Namespace . DataType Ġ{ ĊĠĠĠ Ġreturn Ġwhen ( dataType ) Ġ{ ĊĠĠĠĠĠĠĠ ĠDataType . UINT 3 2 Ġ-> Ġ Ġreturn ĠTensor Namespace . DataType . UINT 3 2 ĊĠĠĠĠĠĠĠ ĠDataType . INT 6 4 , DataType . LONG Ġ-> Ġ Ġreturn ĠTensor Namespace . DataType . INT 6 4 ĊĠĠĠĠĠĠĠ ĠDataType . UINT 6 4 Ġ-> Ġ Ġreturn ĠTensor Namespace . DataType . UINT 6 4 ĊĠĠĠĠĠĠĠ ĠDataType . DOUBLE Ġ-> Ġ Ġreturn ĠTensor Namespace . DataType . DOUBLE ĊĠĠĠĠĠĠĠ ĠDataType . FLOAT Ġ-> Ġ Ġreturn ĠTensor Namespace . DataType . FLOAT ĊĠĠĠĠĠĠĠ ĠDataType . FLOAT 1 6 , DataType . HALF Ġ-> Ġ Ġreturn ĠTensor Namespace . DataType . FLOAT 1 6 ĊĠĠĠĠĠĠĠ ĠDataType . HALF Ġ-> Ġreturn Ġ ĠTensor Namespace . DataType . FLOAT 1 6 ĊĠĠĠĠĠĠĠ ĠDataType . INT 3 2 , DataType . INT Ġ-> Ġ Ġreturn ĠTensor Namespace . DataType . INT 3 2 ĊĠĠĠĠĠĠĠ ĠDataType . UTF 8 Ġ-> Ġ Ġreturn ĠTensor Namespace . DataType . STRING ĊĠĠĠĠĠĠĠ ĠDataType . BOOL Ġ-> Ġreturn Ġ ĠTensor Namespace . DataType . BOOL ĊĠĠĠĠĠĠĠ ĠDataType . BF LOAT 1 6 Ġ-> Ġreturn Ġ ĠTensor Namespace . DataType . BF LOAT 1 6 ĊĠĠĠĠĠĠĠ ĠDataType . SHORT , DataType . INT 8 Ġ-> Ġreturn ĠTensor Namespace . DataType . INT 8 ĊĠĠĠĠĠĠĠ ĠDataType . UINT 1 6 Ġ-> Ġreturn ĠTensor Namespace . DataType . UINT 1 6 ĊĠĠĠĠĠĠĠ ĠDataType . BYTE , DataType . UINT 8 , DataType . UBY TE Ġ-> Ġreturn ĠTensor Namespace . DataType . UINT 8 ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Illegal Ġdata Ġtype Ġ$ dataType ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ fun Ġndarray FromName Space Tensor ( input Tensor : ĠTensor Namespace . Tensor Proto ): ĠIND Array Ġ{ ĊĠĠĠ Ġval Ġdtype Ġ= Ġconvert Nd 4 j DataType FromName Space Tensor DataType ( Tensor Namespace . DataType . values ()[ input Tensor . dataType ]) ĊĠĠĠ Ġval Ġshape Ġ= Ġinput Tensor . dims List . to Long Array () ĊĠĠĠ Ġwhen ( dtype ) Ġ{ ĊĠĠĠĠĠĠĠ ĠDataType . FLOAT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfloat Array Ġ= Ġinput Tensor . float DataList . toFloat Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( float Array . isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġload Data Buffer From RawData ( input Tensor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Buffer Ġ= ĠN d 4 j . create Buffer ( float Array ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠN d 4 j . create ( data Buffer ). reshape (* shape ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠDataType . DOUBLE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdouble Array Ġ= Ġinput Tensor . double DataList . toDouble Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( double Array . isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġload Data Buffer From RawData ( input Tensor ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Buffer Ġ= ĠN d 4 j . create Buffer ( double Array ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠN d 4 j . create ( data Buffer ). reshape (* shape ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠDataType . INT 6 4 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlong Array Ġ= Ġinput Tensor . int 6 4 DataList . to Long Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( long Array . isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġload Data Buffer From RawData ( input Tensor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Buffer Ġ= ĠN d 4 j . create Buffer ( long Array ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠN d 4 j . create ( data Buffer ). reshape (* shape ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠDataType . INT 3 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠintArray Ġ= Ġinput Tensor . int 3 2 DataList . to IntArray () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( int Array . isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġload Data Buffer From RawData ( input Tensor ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Buffer Ġ= ĠN d 4 j . create Buffer ( int Array ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠN d 4 j . create ( data Buffer ). reshape (* shape ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠDataType . BOOL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠintArray Ġ= Ġinput Tensor . int 3 2 DataList . to IntArray () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( int Array . isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġload Data Buffer From RawData ( input Tensor ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Buffer Ġ= ĠN d 4 j . create Buffer ( int Array ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠN d 4 j . create ( data Buffer ). reshape (* shape ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠDataType . UTF 8 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstring List Ġ= Ġinput Tensor . string DataList . map Ġ{ Ġinput Ġ-> Ġinput . toString Utf 8 () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( string List . isEmpty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġload Data Buffer From RawData ( input Tensor ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠN d 4 j . create ( string List ). reshape (* shape ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠDataType . UNKNOWN Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġret Ġ= Ġ ĠN d 4 j . empty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġret ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġload Data Buffer From RawData ( input Tensor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġthrow ĠIllegalArgumentException (" Illegal Ġtype Ġfound Ġfor Ġconversion Ġ${ dtype }") Ċ } Ċ Ċ fun Ġload Data Buffer From RawData ( input Tensor : ĠTensor Namespace . Tensor Proto ): ĠIND Array Ġ{ ĊĠĠĠ Ġval Ġshape Ġ= Ġinput Tensor . dims List . to Long Array () ĊĠĠĠ Ġval Ġdtype Ġ= Ġconvert Nd 4 j DataType FromName Space Tensor DataType ( Tensor Namespace . DataType . values ()[ input Tensor . dataType ]) ĊĠĠĠ Ġval ĠbyteArray Ġ= Ġinput Tensor . raw Data . toByteArray () ĊĠĠĠ Ġ// note : Ġscalar Ġcan Ġbe Ġzero ĊĠĠĠ Ġval Ġtotal Len Ġ= ĠMath . max ( Array Util . prod (* shape ), 1 ) ĊĠĠĠ Ġval Ġbyte Buffer Ġ= ĠByteBuffer . allocate Direct ( total Len Ġ* Ġdtype . width ()) ĊĠĠĠ Ġbyte Buffer . put ( byteArray ) ĊĠĠĠ Ġbyte Buffer . rewind () ĊĠĠĠ Ġval Ġraw Data Buffer Ġ= ĠN d 4 j . create Buffer ( byte Buffer , dtype , total Len , 0 ) ĊĠĠĠ Ġreturn ĠN d 4 j . create ( raw Data Buffer ). reshape (* shape ) Ċ } ĊĊĊ Ċ fun Ġname Space Tensor From ND array ( ndarray : IND Array ): ĠTensor Namespace . Tensor Proto Ġ{ ĊĠĠĠ Ġval Ġname Space DataType Ġ= Ġconvert NameSpace Tensor DataType From Nd 4 j DataType ( ndarray . dataType ()). ordinal ĊĠĠĠ Ġwhen ( ndarray . dataType ()) Ġ{ ĊĠĠĠĠĠĠĠ ĠDataType . INT 6 4 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠName Space Tensor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdataType Ġ= Ġname Space DataType ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInt 6 4 Data ( ndarray . data (). as Long (). toList ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDim s ( ndarray . shape (). asList ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠDataType . INT 3 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠName Space Tensor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdataType Ġ= Ġname Space DataType ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInt Data ( ndarray . data (). as Int (). toList ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDim s ( ndarray . shape (). asList ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠDataType . DOUBLE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠName Space Tensor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdataType Ġ= Ġname Space DataType ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDouble Data ( ndarray . data (). as Double (). toList ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDim s ( ndarray . shape (). asList ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠDataType . FLOAT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠName Space Tensor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdataType Ġ= Ġname Space DataType ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFloat Data ( ndarray . data (). as Float (). toList ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDim s ( ndarray . shape (). asList ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠDataType . UTF 8 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstring List Ġ= ĠArrayList < String >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġ 0 Ġuntil Ġndarray . length ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstring List . add ( ndarray . getString ( i )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠName Space Tensor Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdataType Ġ= Ġname Space DataType ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString Data ( string List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDim s ( ndarray . shape (). asList ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Illegal Ġdata Ġtype Ġ${ ndarray . dataType () }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } ĊĊĊĊ Ċ interface ĠImport Context < ĊĠĠĠĠĠĠĠ ĠGRAPH _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠOP _ DEF _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠNODE _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠT ENSOR _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠATTRIBUT E _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠATTRIBUT E _ VALUE _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠDATA _ TYPE : ĠProtocol Message Enum > Ġ{ ĊĊĠĠĠ Ġfun Ġprocess (): ĠMapping Process < GRAPH _ TYPE , OP _ DEF _ TYPE , ĠNODE _ TYPE , ĠT ENSOR _ TYPE , ĠATTRIBUT E _ TYPE , ĠATTRIBUT E _ VALUE _ TYPE , ĠDATA _ TYPE > ĊĊĠĠĠ Ġfun Ġmapping Context (): ĠMapping Context < GRAPH _ TYPE , NODE _ TYPE , OP _ DEF _ TYPE , T ENSOR _ TYPE , ATTRIBUTE _ TYPE , ATTRIBUTE _ VALUE _ TYPE , DATA _ TYPE > Ċ Ċ } Ċ Ċ abstract Ġclass ĠAbstract Import Context < ĊĠĠĠĠĠĠĠ ĠGRAPH _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠOP _ DEF _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠNODE _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠT ENSOR _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠATTRIBUT E _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠATTRIBUT E _ VALUE _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠDATA _ TYPE : ĠProtocol Message Enum > ĊĠĠĠ Ġ( process : ĠMapping Process < GRAPH _ TYPE , OP _ DEF _ TYPE , ĠNODE _ TYPE , ĠT ENSOR _ TYPE , ĠATTRIBUT E _ TYPE , ĠATTRIBUT E _ VALUE _ TYPE , ĠDATA _ TYPE >, ĊĠĠĠĠ Ġmapping Context : ĠMapping Context < GRAPH _ TYPE , NODE _ TYPE , OP _ DEF _ TYPE , T ENSOR _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠĠ ĠATTRIBUT E _ TYPE , ATTRIBUTE _ VALUE _ TYPE , DATA _ TYPE >): ĊĠĠĠ ĠImport Context < GRAPH _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOP _ DEF _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNODE _ TYPE , T ENSOR _ TYPE , ATTRIBUTE _ TYPE , ATTRIBUTE _ VALUE _ TYPE , DATA _ TYPE > Ċ { ĊĠĠĠ Ġval Ġprocess Ġ= Ġprocess ĊĠĠĠ Ġval Ġmapping Context Ġ= Ġmapping Context ĊĊĠĠĠ Ġoverride Ġfun Ġprocess (): ĠMapping Process < ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGRAPH _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOP _ DEF _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNODE _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT ENSOR _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠATTRIBUT E _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠATTRIBUT E _ VALUE _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDATA _ TYPE > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġprocess ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġmapping Context (): ĠMapping Context < GRAPH _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNODE _ TYPE , ĠOP _ DEF _ TYPE , ĠT ENSOR _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠATTRIBUT E _ TYPE , ĠATTRIBUT E _ VALUE _ TYPE , ĠDATA _ TYPE > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmapping Context ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ interface ĠImport Process < ĊĠĠĠĠĠĠĠ ĠGRAPH _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠOP _ DEF _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠNODE _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠT ENSOR _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠATTRIBUT E _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠATTRIBUT E _ VALUE _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠDATA _ TYPE : ĠProtocol Message Enum > Ġ{ ĊĊĠĠĠ Ġfun Ġcreate Mapping Processes ( graph : ĠIR Graph < GRAPH _ TYPE , NODE _ TYPE , OP _ DEF _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT ENSOR _ TYPE , ATTRIBUTE _ TYPE , ATTRIBUTE _ VALUE _ TYPE , DATA _ TYPE >) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ: ĠList < Mapping Process < GRAPH _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOP _ DEF _ TYPE , NODE _ TYPE , T ENSOR _ TYPE , ATTRIBUTE _ TYPE , ATTRIBUTE _ VALUE _ TYPE , DATA _ TYPE >> ĊĊĠĠĠ Ġfun Ġcreate Mapping Context ( graph : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIR Graph < GRAPH _ TYPE , NODE _ TYPE , OP _ DEF _ TYPE , T ENSOR _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠATTRIBUT E _ TYPE , ATTRIBUTE _ VALUE _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDATA _ TYPE >, node : ĠIR Node < NODE _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT ENSOR _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠATTRIBUT E _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠATTRIBUT E _ VALUE _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDATA _ TYPE >): ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMapping Context < GRAPH _ TYPE , NODE _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOP _ DEF _ TYPE , T ENSOR _ TYPE , ATTRIBUTE _ TYPE , ATTRIBUTE _ VALUE _ TYPE , DATA _ TYPE > ĊĊĊĠĠĠ Ġfun Ġcreate Import Context ( mapping Process : ĠMapping Process < GRAPH _ TYPE , OP _ DEF _ TYPE , NODE _ TYPE , T ENSOR _ TYPE , ATTRIBUTE _ TYPE , ATTRIBUTE _ VALUE _ TYPE , DATA _ TYPE >, mapping Context : ĊĠĠĠ ĠMapping Context < GRAPH _ TYPE , NODE _ TYPE , OP _ DEF _ TYPE , T ENSOR _ TYPE , ATTRIBUTE _ TYPE , ATTRIBUTE _ VALUE _ TYPE , DATA _ TYPE >) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ: ĠImport Context < GRAPH _ TYPE , OP _ DEF _ TYPE , NODE _ TYPE , T ENSOR _ TYPE , ATTRIBUTE _ TYPE , ATTRIBUTE _ VALUE _ TYPE , DATA _ TYPE > ĊĊĠĠĠ Ġfun Ġrun Import Process ( mapping Processes : ĠList < Import Context < GRAPH _ TYPE , OP _ DEF _ TYPE , ĠNODE _ TYPE , ĠT ENSOR _ TYPE , ĠATTRIBUT E _ TYPE , ĠATTRIBUT E _ VALUE _ TYPE , ĠDATA _ TYPE >> ): ĠSame Diff Ċ Ċ } ĊĊ Ċ fun Ġlookup Index For Arg Descriptor ( ĊĠĠĠ Ġarg Descriptor Name : ĠString , ĊĠĠĠ Ġop Descriptor Name : ĠString , ĊĠĠĠ Ġarg Descriptor Type : ĠOp Namespace . Arg Descriptor . Arg Type Ċ ): ĠInt Ġ{ ĊĠĠĠ Ġprintln (" Trying Ġto Ġfind Ġarg Ġdescriptor Ġindex Ġfor Ġop Ġ$ op Descriptor Name Ġand Ġdescriptor Ġname Ġ$ arg Descriptor Name Ġwith Ġtype Ġ$ arg Descriptor Type ") ĊĠĠĠ Ġval Ġop Ġ= Ġnd 4 j Op Descriptors . find Op ( op Descriptor Name ) ĊĠĠĠ Ġval Ġnames Ġ= Ġop . arg Descriptor List . map Ġ{ Ġarg Descriptor Ġ-> Ġarg Descriptor . name Ġ} ĊĠĠĠ Ġif (! names . contains ( arg Descriptor Name )) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Invalid Ġname Ġ$ arg Descriptor Name Ġfor Ġop Ġ$ op Descriptor Name Ġpassed Ġin . Ġ$ arg Descriptor Name Ġnot Ġfound Ġin Ġ$ op Descriptor Name . ĠAvailable Ġnames Ġwere Ġ${ names }") ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġret Ġ= Ġ Ġop ĊĠĠĠĠĠĠĠ Ġ. arg Descriptor List . first OrNull Ġ{ Ġarg Descriptor Ġ-> Ġarg Descriptor . name Ġ== Ġarg Descriptor Name Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg Descriptor . arg Type Ġ== Ġarg Descriptor Type Ġ} ĊĠĠĠ Ġif ( ret Ġ== Ġnull ) ĊĠĠĠĠĠĠĠ Ġreturn Ġ- 1 ĊĠĠĠ Ġelse Ġreturn Ġret . arg Index Ċ } Ċ Ċ fun Ġcreate Variable ( varName : ĠString , var Type : ĠVariable Type , same Diff : ĠSame Diff , shape : ĠList < Long >, dataType : ĠDataType ): ĠSD Variable Ġ{ ĊĠĠĠ Ġreturn ĠSD Variable ( varName , var Type , Ġsame Diff , Ġshape . to Long Array (), ĠdataType ) Ċ } ĊĊ Ċ interface ĠImport Runner < GRAPH _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠNODE _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠOP _ DEF _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠT ENSOR _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠATTR _ DEF _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠATTR _ VALUE _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠDATA _ TYPE : ĠProtocol Message Enum > Ġ{ ĊĠĠĠ Ġfun Ġ< GRAPH _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠNODE _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOP _ DEF _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠT ENSOR _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠATTR _ DEF _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠATTR _ VALUE _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDATA _ TYPE : ĠProtocol Message Enum > Ġinit Attributes ( ĊĠĠĠĠĠĠĠ Ġdf : ĠD iffer ential Function , ĊĠĠĠĠĠĠĠ Ġframework Name : ĠString , ĊĠĠĠĠĠĠĠ Ġmapping Context : ĠMapping Context < GRAPH _ TYPE , ĠNODE _ TYPE , ĠOP _ DEF _ TYPE , ĠT ENSOR _ TYPE , ĠATTR _ DEF _ TYPE , ĠATTR _ VALUE _ TYPE , ĠDATA _ TYPE >, ĊĠĠĠĠĠĠĠ Ġsd : ĠSame Diff , ĊĠĠĠĠĠĠĠ Ġinput Framework Op Name : ĠString ) Ċ } ĊĊĊĊ Ċ class ĠDefault Import Runner < GRAPH _ TYPE : ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠNODE _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠOP _ DEF _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠT ENSOR _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠATTR _ DEF _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠATTR _ VALUE _ TYPE Ġ: ĠGenerated Message V 3 , ĊĠĠĠĠĠĠĠ ĠDATA _ TYPE : ĠProtocol Message Enum > Ġ: ĠImport Runner < GRAPH _ TYPE , ĊĠĠĠĠĠĠĠ ĠNODE _ TYPE Ġ, ĊĠĠĠĠĠĠĠ ĠOP _ DEF _ TYPE , ĊĠĠĠĠĠĠĠ ĠT ENSOR _ TYPE , ĊĠĠĠĠĠĠĠ ĠATTR _ DEF _ TYPE , ĊĠĠĠĠĠĠĠ ĠATTR _ VALUE _ TYPE , ĊĠĠĠĠĠĠĠ ĠDATA _ TYPE > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġ< GRAPH _ TYPE Ġ: ĠGenerated Message V 3 , ĠNODE _ TYPE Ġ: ĠGenerated Message V 3 , ĠOP _ DEF _ TYPE Ġ: ĠGenerated Message V 3 , ĠT ENSOR _ TYPE Ġ: ĠGenerated Message V 3 , ĠATTR _ DEF _ TYPE Ġ: ĠGenerated Message V 3 , ĠATTR _ VALUE _ TYPE Ġ: ĠGenerated Message V 3 , ĠDATA _ TYPE Ġ: ĠProtocol Message Enum > Ġinit Attributes ( ĊĠĠĠĠĠĠĠ Ġdf : ĠD iffer ential Function , ĊĠĠĠĠĠĠĠ Ġframework Name : ĠString , ĊĠĠĠĠĠĠĠ Ġmapping Context : ĠMapping Context < GRAPH _ TYPE , ĠNODE _ TYPE , ĠOP _ DEF _ TYPE , ĠT ENSOR _ TYPE , ĠATTR _ DEF _ TYPE , ĠATTR _ VALUE _ TYPE , ĠDATA _ TYPE >, ĊĠĠĠĠĠĠĠ Ġsd : ĠSame Diff , ĊĠĠĠĠĠĠĠ Ġinput Framework Op Name : ĠString ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġop Mapping Process Ġ= ĠOp Registry Holder . lookup Op Mapping Process < ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGRAPH _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNODE _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOP _ DEF _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠT ENSOR _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDATA _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠATTR _ DEF _ TYPE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠATTR _ VALUE _ TYPE >( input Framework Op Name Ġ= Ġinput Framework Op Name , Ġinput Framework Name Ġ= Ġframework Name ) ĊĊĠĠĠĠĠĠĠ Ġval Ġapplied Ġ= Ġop Mapping Process . apply Process ( mapping Context ) ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( df . op Type ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOp . Type . CUSTOM Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdynamic Custom Op Ġ= Ġdf Ġas ĠDynamic Custom Op ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgrouped Ġ= Ġapplied . second . arg Descriptor List . groupBy Ġ{ Ġdescriptor Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescriptor . arg Type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsorted Map Ġ= ĠHashMap < Op Namespace . Arg Descriptor . Arg Type , ĠList < Op Namespace . Arg Descriptor >>() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgrouped . forEach Ġ{ Ġ( arg Type , Ġlist ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsorted Map [ arg Type ] Ġ= Ġlist . sorted By Ġ{ Ġarg Ġ-> Ġarg . arg Index Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsorted Map . forEach Ġ{ Ġ( arg Type , ĠlistOf Args Sorted ByIndex ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( arg Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOp Namespace . Arg Descriptor . Arg Type . INPUT _ T ENSOR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargs Ġ= Ġdynamic Custom Op . args () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarrays ToAdd Ġ= ĠArrayList < IND Array >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf Args Sorted ByIndex . forEach Indexed Ġ{ Ġindex , Ġarg Descriptor Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconverted Tensor Ġ= Ġndarray FromName Space Tensor ( arg Descriptor . input Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ< Ġargs . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarg Ġ= Ġargs [ index ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( arg . variable Type Ġ!= ĠVariable Type . ARRAY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( arg . shape Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġempty Long Array Ġ= ĠLong Array ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarg . set Shape (* empty Long Array ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarrays ToAdd . add ( converted Tensor ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsd . constant ( sd . generate New Var Name ( arg Descriptor . name , Ġ 0 ), Ġconverted Tensor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarrays ToAdd . add ( converted Tensor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// note Ġwe Ġdon 't Ġadd Ġarrays Ġone Ġat Ġa Ġtime Ġbecause Ġadd Input Argument Ġrequires Ġall Ġthe Ġinput Ġarrays Ġto Ġbe Ġadded Ġat Ġonce ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// dynamic Custom Op . add Input Argument (* array sTo Add . to Typed Array ()) ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOp Namespace . Arg Descriptor . Arg Type . INT 6 4 , ĠOp Namespace . Arg Descriptor . Arg Type . INT 3 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf Args Sorted ByIndex . forEach Ġ{ Ġdynamic Custom Op . add I Argument ( it . int 6 4 Value ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOp Namespace . Arg Descriptor . Arg Type . DOUBLE , ĠOp Namespace . Arg Descriptor . Arg Type . FLOAT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf Args Sorted ByIndex . forEach Ġ{ Ġdynamic Custom Op . add T Argument ( it . doubleValue ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOp Namespace . Arg Descriptor . Arg Type . OUTPUT _ T ENSOR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf Args Sorted ByIndex . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconverted Tensor Ġ= Ġndarray FromName Space Tensor ( it . input Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdynamic Custom Op . add Output Argument ( converted Tensor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOp Namespace . Arg Descriptor . Arg Type . BOOL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf Args Sorted ByIndex . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdynamic Custom Op . add B Argument ( it . bool Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOp Namespace . Arg Descriptor . Arg Type . DATA _ TYPE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf Args Sorted ByIndex . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdtype Ġ= Ġconvert Nd 4 j DataType FromName Space Tensor DataType ( it . dataType Value !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdtype Java Class Ġ= ĠClass . forName (" org . nd 4 j . linalg . api . buffer . DataType ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdynamic Custom Op . add D Argument ( dtype ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdf . java Class . declared Fields . forEach Ġ{ Ġfield Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! Modifier . is Static ( field . modifiers ) Ġ&& Ġ! Modifier . is Final ( field . modifiers ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġdtype Java Class . isAssignableFrom ( field . type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠReflection Utils . setField ( field , Ġdf , Ġdtype ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Illegal Ġtype ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// set Ġany Ġleft Ġover Ġfields Ġif Ġthey 're Ġfound ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetName For Function From Descriptors ( listOf Args Sorted ByIndex , Ġdf ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOp . Type . SCAL AR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplied . second . arg Descriptor List . forEach Ġ{ Ġarg Descriptor Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfield Ġ= ĠReflection Utils . find Field ( df . java Class , Ġarg Descriptor . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( arg Descriptor . name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x ", Ġ" y ", Ġ" z " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtensor Name Ġ= Ġop Mapping Process . tensor Mapping Rules (). filter Ġ{ Ġmapping Rule Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmapping Rule . mapping Names To Perform () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. containsKey ( arg Descriptor . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġrule Ġ-> Ġrule . mapping Names To Perform ()[ arg Descriptor . name ] Ġ}. first () !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcreated ND Array Ġ= Ġmapping Context . tensor Input For ( tensor Name ). to Nd 4 j ND Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠReflection Utils . setField ( field , Ġdf , Ġcreated ND Array ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( arg Descriptor . arg Type Ġin ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOp Namespace . Arg Descriptor . Arg Type . INT 6 4 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOp Namespace . Arg Descriptor . Arg Type . DOUBLE , ĠOp Namespace . Arg Descriptor . Arg Type . INT 3 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOp Namespace . Arg Descriptor . Arg Type . FLOAT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscalar Field Ġ= ĠReflection Utils . find Field ( df . java Class , Ġ" scalar Value ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscalar Field . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// access Ġthe Ġfirst Ġinput Ġ( should Ġhave Ġbeen Ġset ) Ġand Ġmake Ġsure Ġthe Ġscalar Ġtype Ġis Ġthe ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// the Ġsame ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst Value Ġ= Ġsd . variables (). first () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdtype Ġ= Ġfirst Value . dataType () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( arg Descriptor . arg Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOp Namespace . Arg Descriptor . Arg Type . DOUBLE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnd 4 j Scalar Value Ġ= ĠN d 4 j . scalar ( arg Descriptor . doubleValue ). cast To ( dtype ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠReflection Utils . setField ( scalar Field , Ġdf , Ġnd 4 j Scalar Value ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOp Namespace . Arg Descriptor . Arg Type . FLOAT Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnd 4 j Scalar Value Ġ= ĠN d 4 j . scalar ( arg Descriptor . float Value ). cast To ( dtype ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠReflection Utils . setField ( scalar Field , Ġdf , Ġnd 4 j Scalar Value ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOp Namespace . Arg Descriptor . Arg Type . INT 3 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnd 4 j Scalar Value Ġ= ĠN d 4 j . scalar ( arg Descriptor . int 3 2 Value ). cast To ( dtype ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠReflection Utils . setField ( scalar Field , Ġdf , Ġnd 4 j Scalar Value ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOp Namespace . Arg Descriptor . Arg Type . INT 6 4 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnd 4 j Scalar Value Ġ= ĠN d 4 j . scalar ( arg Descriptor . int 6 4 Value ). cast To ( dtype ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠReflection Utils . setField ( scalar Field , Ġdf , Ġnd 4 j Scalar Value ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġhas Dimensions Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplied . second . arg Descriptor List . forEach Ġ{ Ġarg Descriptor Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( arg Descriptor . name Ġ== Ġ" dimensions ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Dimensions Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfield Ġ= ĠReflection Utils . find Field ( df . java Class , Ġarg Descriptor . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( field Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( arg Descriptor . name ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" x ", Ġ" y ", Ġ" z " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtensor Name Ġ= Ġop Mapping Process . tensor Mapping Rules (). filter Ġ{ Ġmapping Rule Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmapping Rule . mapping Names To Perform () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. containsKey ( arg Descriptor . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġrule Ġ-> Ġrule . mapping Names To Perform ()[ arg Descriptor . name ] Ġ}. first () !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcreated ND Array Ġ= Ġmapping Context . tensor Input For ( tensor Name ). to Nd 4 j ND Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠReflection Utils . setField ( field , Ġdf , Ġcreated ND Array ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" keep Dims " Ġ-> ĠReflection Utils . setField ( field , Ġdf , Ġarg Descriptor . bool Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( has Dimensions ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// dimensions Ġsorted Ġby Ġindex ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdim Args Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġapplied . second . arg Descriptor List . filter Ġ{ Ġarg Descriptor Ġ-> Ġarg Descriptor . name . contains (" dimensions ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sorted By Ġ{ Ġarg Descriptor Ġ-> Ġarg Descriptor . arg Index Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġarg Descriptor Ġ-> Ġarg Descriptor . int 6 4 Value . toInt () Ġ}. to IntArray () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdimensions Field Ġ= ĠReflection Utils . find Field ( df . java Class , Ġ" dimensions ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdimension z Field Ġ= ĠReflection Utils . find Field ( df . java Class , Ġ" dimension z ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dimensions Field Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdimensions Field . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( int ArrayOf ( 0 ). java Class . isAssignableFrom ( dimensions Field . type )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠReflection Utils . setField ( dimensions Field , Ġdf , Ġdim Args ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dimension z Field Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdimension z Field . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( IND Array :: class . java . isAssignableFrom ( dimension z Field . type )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠN d 4 j . create Buffer ( dim Args ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcreated Arr Ġ= ĠN d 4 j . create ( buffer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠReflection Utils . setField ( dimension z Field , Ġdf , Ġcreated Arr ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ Ċ fun Ġdescriptors For Name ( ĊĠĠĠ Ġname : ĠString , ĊĠĠĠ Ġarg Descriptors : ĠCollection < Op Namespace . Arg Descriptor >): ĠList < Op Namespace . Arg Descriptor > Ġ{ ĊĠĠĠ Ġreturn Ġarg Descriptors . filter Ġ{ Ġarg Descriptor Ġ-> Ġarg Descriptor . name Ġ== Ġname Ġ} !! Ċ } Ċ Ċ fun ĠsetName For Function From Descriptors ( arg Descriptors : ĠCollection < Op Namespace . Arg Descriptor >, func : ĠD iffer ential Function ) Ġ{ ĊĠĠĠ Ġfunc . java Class . declared Fields . forEach Ġ{ Ġfield Ġ-> ĊĠĠĠĠĠĠĠ Ġif ( has Arg Descriptor WithName And Type ( arg Descriptors , field . name )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdescriptors Ġ= Ġdescriptors For Name ( field . name , arg Descriptors ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescriptors . forEach Ġ{ Ġdescriptor Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( descriptor . arg Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOp Namespace . Arg Descriptor . Arg Type . BOOL Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( Boolean . java Class . isAssignableFrom ( field . type ) Ġ|| ĠBoolean :: class . java Primitive Type !!. isAssignableFrom ( field . type )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠReflection Utils . setField ( field , func , descriptor . bool Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOp Namespace . Arg Descriptor . Arg Type . INT 6 4 , ĠOp Namespace . Arg Descriptor . Arg Type . INT 3 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( Int . java Class . isAssignableFrom ( field . type ) Ġ|| ĠInt :: class . java Primitive Type !!. isAssignableFrom ( field . type )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠReflection Utils . setField ( field , func , descriptor . int 6 4 Value . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( Long . java Class . isAssignableFrom ( field . type ) Ġ|| ĠLong :: class . java Primitive Type !!. isAssignableFrom ( field . type )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠReflection Utils . setField ( field , func , descriptor . int 6 4 Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( DataType :: java Class . java Class . isAssignableFrom ( field . type )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠReflection Utils . setField ( field , func , ĠDataType . from Int ( descriptor . int 6 4 Value . toInt ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOp Namespace . Arg Descriptor . Arg Type . FLOAT , ĠOp Namespace . Arg Descriptor . Arg Type . DOUBLE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( Float . java Class . isAssignableFrom ( field . type ) Ġ|| ĠFloat :: class . java Primitive Type !!. isAssignableFrom ( field . type )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠReflection Utils . setField ( field , func , descriptor . doubleValue . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( Double . java Class . isAssignableFrom ( field . type ) Ġ|| ĠDouble :: class . java Primitive Type !!. isAssignableFrom ( field . type )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠReflection Utils . setField ( field , func , descriptor . doubleValue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOp Namespace . Arg Descriptor . Arg Type . DATA _ TYPE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( DataType :: java Class . java Class . isAssignableFrom ( field . type )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠReflection Utils . setField ( field , func , Ġconvert Nd 4 j DataType FromName Space Tensor DataType ( descriptor . dataType Value )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ fun Ġhas Arg Descriptor WithName And Type ( arg Descriptors : ĠCollection < Op Namespace . Arg Descriptor >, Ġname : ĠString ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġarg Descriptors . map Ġ{ Ġinput Ġ-> Ġinput . name }. contains ( name ) Ċ } ĊĊ