package Ġorg . open min ed . sy ft . proto Ċ Ċ import Ġandroidx . annotation . Visible ForTesting Ċ import Ġorg . open min ed . sy ftp roto . types . sy ft . v 1 . Id OuterClass Ċ import Ġorg . open min ed . sy ftp roto . types . torch . v 1 . Size OuterClass Ċ import Ġorg . open min ed . sy ftp roto . types . torch . v 1 . Tensor Ċ import Ġorg . open min ed . sy ftp roto . types . torch . v 1 . Tensor Data OuterClass Ċ import Ġorg . pytorch . D Type Ċ import Ġorg . pytorch . I Value Ċ import Ġorg . pytorch . Module Ċ import Ġjava . io . Invalid Class Exception Ċ import Ġjava . lang . Math . random Ċ import Ġjava . nio . Double Buffer Ċ import Ġjava . util . Locale Ċ import Ġorg . open min ed . sy ftp roto . types . torch . v 1 . Tensor . Torch Tensor Ġas ĠSy ft Proto Tensor Ċ import Ġorg . pytorch . Tensor Ġas ĠT orch Tensor Ċ Ċ // ĠSy ft Tensor Ġis Ġa Ġmodel Ġclass Ġfor Ġsy ft Ġtensor Ġtype . Ċ @ Experimental Unsigned Types Ċ data Ġclass ĠSy ft Tensor ( ĊĠĠĠ Ġval Ġid : ĠId OuterClass . Id , ĊĠĠĠ Ġval Ġcontents : ĠTensor Data OuterClass . Tensor Data , ĊĠĠĠ Ġval Ġshape : ĠMutable List < Int >, ĊĠĠĠ Ġval Ġdtype : ĠString , ĊĠĠĠ Ġval Ġchain : ĠSy ft Tensor ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġgrad _ chain : ĠSy ft Tensor ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġtags : ĠList < String >, ĊĠĠĠ Ġval Ġdescription : ĠString Ċ ) Ġ{ ĊĠĠĠ Ġ// ĠGenerate Ġ& ĠReturn ĠSy ft Proto Tensor Ġobject ĊĠĠĠ Ġfun Ġserialize (): ĠSy ft Proto Tensor Ġ{ ĊĠĠĠĠĠĠĠ ĠSize OuterClass . Size . newBuilder (). addAll Dims ( shape ) ĊĠĠĠĠĠĠĠ Ġval Ġsy ft Tensor Builder Ġ= ĠSy ft Proto Tensor . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. addAll Tags ( tags ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setId ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Contents Data ( contents ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setDescription ( description ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Serializer ( Tensor . Torch Tensor . Serializer . SERIAL IZER _ ALL ) ĊĠĠĠĠĠĠĠ Ġif Ġ( chain Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsy ft Tensor Builder . chain Ġ= Ġchain . serialize () ĊĠĠĠĠĠĠĠ Ġif Ġ( grad _ chain Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsy ft Tensor Builder . grad Chain Ġ= Ġgrad _ chain . serialize () ĊĠĠĠĠĠĠĠ Ġsy ft Tensor Builder . contents Data Ġ= Ġcontents ĊĠĠĠĠĠĠĠ Ġreturn Ġsy ft Tensor Builder . build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġapply Operation ( script Module Location : ĠString , Ġvar arg Ġoperands : ĠSy ft Tensor ): ĠSy ft Tensor Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdiff Module Ġ= ĠModule . load ( script Module Location ) ĊĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= Ġdiff Module . forward ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . get I Value (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ*( operands . map Ġ{ Ġit . get I Value () Ġ}. to Typed Array ()) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġoutput . to Tensor (). to Sy ft Tensor () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠGenerate Ġ& ĠReturn ĠT orch Tensor Ġobject Ġbased Ġon Ġthe Ġdtype ĊĠĠĠ Ġfun Ġget Torch Tensor (): ĠT orch Tensor Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( dtype ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" uint 8 " Ġ-> ĠT orch Tensor . from Blob ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontents . contents Uint 8 List . to IntArray (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshape . map Ġ{ Ġit . to Long () Ġ}. to Long Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" int 8 " Ġ-> ĠT orch Tensor . from Blob ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontents . contents Int 8 List . to IntArray (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshape . map Ġ{ Ġit . to Long () Ġ}. to Long Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" int 1 6 " Ġ-> ĠT orch Tensor . from Blob ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontents . contents Int 1 6 List . to IntArray (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshape . map Ġ{ Ġit . to Long () Ġ}. to Long Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" int 3 2 " Ġ-> ĠT orch Tensor . from Blob ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontents . contents Int 3 2 List . to IntArray (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshape . map Ġ{ Ġit . to Long () Ġ}. to Long Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" int 6 4 " Ġ-> ĠT orch Tensor . from Blob ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontents . contents Int 6 4 List . to Long Array (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshape . map Ġ{ Ġit . to Long () Ġ}. to Long Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" float 1 6 " Ġ-> ĠT orch Tensor . from Blob ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontents . contents Float 1 6 List . toFloat Array (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshape . map Ġ{ Ġit . to Long () Ġ}. to Long Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" float 3 2 " Ġ-> ĠT orch Tensor . from Blob ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontents . contents Float 3 2 List . toFloat Array (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshape . map Ġ{ Ġit . to Long () Ġ}. to Long Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" float 6 4 " Ġ-> ĠT orch Tensor . from Blob ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDouble Buffer . wrap ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontents . contents Float 6 4 List . toDouble Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), Ġshape . map Ġ{ Ġit . to Long () Ġ}. to Long Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ" Bool " Ġ-> Ġorg . pytorch . Tensor . from Blob ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontents . data . contents Uint 8 List . to IntArray (), Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshape . map Ġ{ Ġit . to Long () Ġ}. to Long Array () Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" q int 8 " Ġ-> ĠT orch Tensor . from Blob ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontents . contents Q int 8 List . to IntArray (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshape . map Ġ{ Ġit . to Long () Ġ}. to Long Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" qu int 8 " Ġ-> ĠT orch Tensor . from Blob ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontents . contents Qu int 8 List . to IntArray (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshape . map Ġ{ Ġit . to Long () Ġ}. to Long Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" q int 3 2 " Ġ-> ĠT orch Tensor . from Blob ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontents . contents Q int 3 2 List . to IntArray (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshape . map Ġ{ Ġit . to Long () Ġ}. to Long Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" b float 1 6 " Ġ-> ĠT orch Tensor . from Blob ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontents . contents B float 1 6 List . toFloat Array (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshape . map Ġ{ Ġit . to Long () Ġ}. to Long Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠException (" Invalid ĠTensor Ġtype ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Visible ForTesting ĊĠĠĠ Ġinternal Ġfun Ġget I Value (): ĠI Value Ġ= ĠI Value . from ( this . get Torch Tensor ()) Ċ Ċ } Ċ Ċ @ Experimental Unsigned Types Ċ fun ĠSy ft Proto Tensor . to Sy ft Tensor (): ĠSy ft Tensor Ġ{ ĊĠĠĠ Ġval Ġtensor Data Ġ= Ġthis . contents Data ĊĠĠĠ Ġval Ġchain Ġ= Ġif Ġ( this . has Chain ()) ĊĠĠĠĠĠĠĠ Ġthis . chain . to Sy ft Tensor () ĊĠĠĠ Ġelse ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠ Ġval Ġgrad Chain Ġ= Ġif Ġ( this . has Grad Chain ()) ĊĠĠĠĠĠĠĠ Ġthis . grad Chain . to Sy ft Tensor () ĊĠĠĠ Ġelse ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠ Ġreturn ĠSy ft Tensor ( ĊĠĠĠĠĠĠĠ Ġthis . id , ĊĠĠĠĠĠĠĠ Ġtensor Data , ĊĠĠĠĠĠĠĠ Ġ// todo Ġwe Ġshould Ġide ally Ġhave Ġlong Ġhere ĊĠĠĠĠĠĠĠ Ġtensor Data . shape . dims List , ĊĠĠĠĠĠĠĠ Ġtensor Data . dtype , ĊĠĠĠĠĠĠĠ Ġchain , ĊĠĠĠĠĠĠĠ Ġgrad Chain , ĊĠĠĠĠĠĠĠ Ġthis . tags List , ĊĠĠĠĠĠĠĠ Ġthis . description ĊĠĠĠ Ġ) Ċ } Ċ Ċ @ Experimental Unsigned Types Ċ fun ĠT orch Tensor . to Sy ft Tensor (): ĠSy ft Tensor Ġ{ ĊĠĠĠ Ġval Ġshape Ġ= ĠSize OuterClass . Size . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. addAll Dims ( this . shape (). map Ġ{ Ġit . toInt () Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġval Ġtensor Data Builder Ġ= ĠTensor Data OuterClass . Tensor Data . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Shape ( shape ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set D type ( this . dtype (). name . toLowerCase ( Locale . US )) ĊĠĠĠ Ġval Ġtensor Data Ġ= Ġtensor Data Builder From Torch Tensor ( ĊĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠ Ġtensor Data Builder ĊĠĠĠ Ġ). build () ĊĠĠĠ Ġval Ġid Ġ= ĠId OuterClass . Id . newBuilder (). setId Int ( random (). to Long ()). build () ĊĠĠĠ Ġreturn ĠSy ft Tensor ( ĊĠĠĠĠĠĠĠ Ġid , ĊĠĠĠĠĠĠĠ Ġtensor Data , ĊĠĠĠĠĠĠĠ Ġshape . dims List , ĊĠĠĠĠĠĠĠ Ġtensor Data . dtype , ĊĠĠĠĠĠĠĠ Ġtags Ġ= ĠlistOf (), ĊĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ"" ĊĠĠĠ Ġ) Ċ } Ċ Ċ private Ġfun Ġtensor Data Builder From Torch Tensor ( ĊĠĠĠ Ġtensor : ĠT orch Tensor , ĊĠĠĠ Ġtensor Builder : ĠTensor Data OuterClass . Tensor Data . Builder Ċ ): ĠTensor Data OuterClass . Tensor Data . Builder Ġ{ ĊĠĠĠ Ġwhen Ġ( tensor . dtype ()) Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtodo ĠUint 8 Ġis Ġconverted Ġto Ġint Ġbelow Ġdue Ġto Ġno ĠPy torch Ġconstructor Ġ` from Blob ` Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD Type . UINT 8 Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtensor Builder . addAll Contents Uint 8 ( tensor . data As Unsigned ByteArray ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtodo ĠInt 8 Ġprotobuf Ġimplementation Ġuses ĠList < Int > Ġlo sing Ġall Ġthe Ġmemory Ġefficiency Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠD Type . INT 8 Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtensor Builder . addAll Contents Int 8 ( tensor . data As ByteArray ) ĊĠĠĠĠĠĠĠ ĠD Type . INT 3 2 Ġ-> Ġtensor Builder . addAll Contents Int 3 2 ( tensor . data As IntArray . toList ()) ĊĠĠĠĠĠĠĠ ĠD Type . FLOAT 3 2 Ġ-> Ġtensor Builder . addAll Contents Float 3 2 ( tensor . data As Float Array . toList ()) ĊĠĠĠĠĠĠĠ ĠD Type . INT 6 4 Ġ-> Ġtensor Builder . addAll Contents Int 6 4 ( tensor . data As Long Array . toList ()) ĊĠĠĠĠĠĠĠ ĠD Type . FLOAT 6 4 Ġ-> Ġtensor Builder . addAll Contents Float 6 4 ( tensor . data As Double Array . toList ()) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠInvalid Class Exception (" D type Ġdoes Ġnot Ġexist ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġtensor Builder Ċ } Ċ