/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠDeep ĠLearning Ġproject Ġcontributors . ĠAll ĠRights ĠReserved . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin x . dl . api . core . layer . resh aping Ċ Ċ import Ġorg . jetbrains . kotlin x . dl . api . core . K Graph Ċ import Ġorg . tensorflow . Shape Ċ import Ġorg . tensorflow . op . Ops Ċ Ċ /** Ċ Ġ* ĠZero - padding Ġlayer Ġfor Ġ 1 D Ġinput Ġ( e . g . Ġaudio ). Ċ Ġ* ĠThis Ġlayer Ġcan Ġadd Ġzeros Ġin Ġthe Ġrows Ġof Ġthe Ġaudio Ġtensor Ċ Ġ* Ġ@ property Ġ[ padding ] Ġ 2 Ġnumbers Ġ Ġinterpreted Ġas Ġ`( left _ pad , Ġright _ pad )`. Ċ Ġ*/ Ċ public Ġclass ĠZero Padding 1 D Ġ: ĠAbstract Zero Padding Ġ{ ĊĠĠĠ Ġpublic Ġval Ġpadding : ĠInt Array ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġinput Shape : ĠShape ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConstructs Ġan Ġinstance Ġof ĠZero Padding 1 D Ġlayer ĊĠĠĠĠ Ġ* Ġ@ param Ġ[ padding ] Ġsymmetric Ġpadding Ġapplied Ġto Ġwidth ( same Ġon Ġall Ġsides ) ĊĠĠĠĠ Ġ* Ġ@ param Ġ[ name ] Ġlayer Ġname ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġpadding : ĠInt , ĊĠĠĠĠĠĠĠ Ġname : ĠString Ġ= Ġ"" ĊĠĠĠ Ġ) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠ ĠInt Array ( 2 ) Ġ{ Ġpadding Ġ}, ĊĠĠĠĠĠĠĠ Ġname ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConstructs Ġan Ġinstance Ġof ĠZero Padding 1 D Ġlayer ĊĠĠĠĠ Ġ* Ġ@ param Ġ[ padding ] Ġtriple Ġof Ġpadding Ġvalues Ġ- Ġ[ Pair . first ] Ġrepresents Ġpadding Ġon Ġleft Ġside ĊĠĠĠĠ Ġ* Ġand Ġ[ Pair . second ] Ġis Ġpadding Ġon Ġright Ġside ĊĠĠĠĠ Ġ* Ġ@ param Ġ[ name ] Ġlayer Ġname ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġpadding : ĠPair < Int , ĠInt >, ĊĠĠĠĠĠĠĠ Ġname : ĠString Ġ= Ġ"" ĊĠĠĠ Ġ) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠ Ġint ArrayOf ( padding . first , Ġpadding . second ), ĊĠĠĠĠĠĠĠ Ġname ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConstructs Ġan Ġinstance Ġof ĠZero Padding 1 D Ġlayer ĊĠĠĠĠ Ġ* Ġ@ param Ġ[ padding ] Ġlist Ġof Ġpadding Ġvalues . ĠSize Ġof Ġlist Ġmust Ġbe Ġequal Ġto Ġ 2 . ĠThose Ġlist Ġvalues Ġmaps Ġto ĊĠĠĠĠ Ġ* Ġthe Ġfollowing Ġp add ings : ĊĠĠĠĠ Ġ* Ġpadding [ 0 ] Ġ-> Ġleft Ġpadding , ĊĠĠĠĠ Ġ* Ġpadding [ 1 ] Ġ-> Ġright Ġpadding , ĊĠĠĠĠ Ġ* Ġ@ param Ġ[ name ] Ġlayer Ġname ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġconstructor ( padding : ĠInt Array , Ġname : ĠString Ġ= Ġ"") Ġ: Ġsuper ( name ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( padding . size Ġ== Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġthis . padding Ġ= Ġpadding ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbuild ( tf : ĠOps , Ġk Graph : ĠK Graph , Ġinput Shape : ĠShape ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . input Shape Ġ= Ġinput Shape ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcompute Output Shape ( input Shape : ĠShape ): ĠShape Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlength Ġ= Ġinput Shape . size ( 1 ) Ġ+ Ġpadding [ 0 ] Ġ+ Ġpadding [ 1 ] ĊĠĠĠĠĠĠĠ Ġreturn ĠShape . make ( input Shape . size ( 1 ), Ġlength , Ġinput Shape . size ( 2 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpadding Array To Tf Format (): ĠArray < IntArray > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠarrayOf ( int ArrayOf ( 0 , Ġ 0 ), Ġint ArrayOf ( padding [ 0 ], Ġpadding [ 1 ]), Ġint ArrayOf ( 0 , Ġ 0 )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" Zero Padding 1 D ( name Ġ= Ġ$ name , Ġis Train able =$ is Train able , Ġpadding =${ padding . content ToString ()}, Ġhas Activation =$ has Activation )" ĊĠĠĠ Ġ} Ċ } Ċ