package Ġorg . nd 4 j . same diff . framework import . onnx . definitions . implement ations Ċ Ċ import Ġorg . nd 4 j . aut od iff . same diff . Same Diff Ċ import Ġorg . nd 4 j . aut od iff . same diff . internal . Same Diff Op Ċ import Ġorg . nd 4 j . ir . Op Namespace Ċ import Ġorg . nd 4 j . linalg . api . buffer . DataType Ċ import Ġorg . nd 4 j . linalg . factory . Nd 4 j Ċ import Ġorg . nd 4 j . same diff . framework import . hooks . Pre Import Hook Ċ import Ġorg . nd 4 j . same diff . framework import . hooks . annotations . Hook Result Ċ import Ġorg . nd 4 j . same diff . framework import . hooks . annotations . Pre Hook Rule Ċ Ċ @ Pre Hook Rule ( node Names Ġ= Ġ[], op Names Ġ= Ġ[" Global Average Pool "], framework Name Ġ= Ġ" onnx ") Ċ class ĠGlobal Average Pooling : ĠPre Import Hook Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġpre Process ( ĊĠĠĠĠĠĠĠ Ġop : ĠSame Diff Op , ĊĠĠĠĠĠĠĠ Ġsd : ĠSame Diff , ĊĠĠĠĠĠĠĠ Ġattributes : ĠMap < String , ĠAny >, ĊĠĠĠĠĠĠĠ Ġdescriptor : ĠOp Namespace . Op Descriptor , ĊĠĠĠĠĠĠĠ Ġoutput Names : ĠList < String > ĊĠĠĠ Ġ): ĠHook Result Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinput Variable Ġ= Ġsd . get Variable ( op . inputs To Op [ 0 ]) ĊĠĠĠĠĠĠĠ Ġval Ġrank Of Ġ= Ġsd . rank ( input Variable ) ĊĠĠĠĠĠĠĠ Ġval Ġrange Ġ= Ġsd . range ( sd . constant ( 2 ), rank Of , sd . constant ( 1 ), DataType . INT 6 4 ) ĊĠĠĠĠĠĠĠ Ġval Ġoutput Ġ= Ġsd . math . mean ( output Names [ 0 ], input Variable , range , true ) ĊĠĠĠĠĠĠĠ Ġsd . ops . remove ( op . name ) ĊĠĠĠĠĠĠĠ Ġreturn ĠHook Result ( output Variables Ġ= Ġmap Of ( output . name () Ġto ĠlistOf ( output )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproceed With Init Ġ= Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtrue Body For ( rank : ĠInt ): ĠSame Diff Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġret Ġ= ĠSame Diff . create () ĊĠĠĠĠĠĠĠ Ġif ( rank Ġ== Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġret . constant ( Nd 4 j . create ( Nd 4 j . create Buffer ( int ArrayOf ( 2 )))) ĊĠĠĠĠĠĠĠ Ġelse Ġif ( rank Ġ== Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġret . constant ( Nd 4 j . create ( Nd 4 j . create Buffer ( int ArrayOf ( 2 , 3 )))) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif ( rank Ġ== Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġret . constant ( Nd 4 j . create ( Nd 4 j . create Buffer ( int ArrayOf ( 2 , 3 , 4 )))) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġret ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrank Test ( rank : ĠInt ): ĠSame Diff Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġret Ġ= ĠSame Diff . create () ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġret . place Holder (" x ", ĠDataType . INT 6 4 ) ĊĠĠĠĠĠĠĠ Ġval Ġconst Ġ= Ġret . constant ( rank ) ĊĠĠĠĠĠĠĠ Ġret . eq ( input , const ) ĊĠĠĠĠĠĠĠ Ġreturn Ġret ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmin Num Ġ( rank : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( rank Ġ< Ġ 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 2 ĊĠĠĠĠĠĠĠ Ġreturn Ġ 3 ĊĠĠĠ Ġ} Ċ Ċ }