package Ġio . kin ference . core . operators . quant ization Ċ Ċ import Ġio . kin ference . attribute . Attribute Ċ import Ġio . kin ference . core . data . tensor . KIT ensor Ċ import Ġio . kin ference . core . data . tensor . as Tensor Ċ import Ġio . kin ference . data . ON NX Data Ċ import Ġio . kin ference . graph . Contexts Ċ import Ġio . kin ference . ndarray . arrays . Number ND Array Ċ import Ġio . kin ference . operator .* Ċ import Ġkotlin . time . Experimental Time Ċ import Ġio . kin ference . protobuf . message . Attribute Proto Ċ import Ġio . kin ference . protobuf . message . Tensor Proto Ċ Ċ sealed Ġclass ĠDe quant ize Linear ( info : ĠOperator Info , Ġattributes : ĠMap < String , ĠAttribute < Any >>, Ġinputs : ĠList < String >, Ġoutputs : ĠList < String >) Ġ: ĠOperator < KIT ensor , ĠK IT ensor >( info , Ġattributes , Ġinputs , Ġoutputs ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠDEFAULT _ VERSION Ġ= ĠVersion Info ( since Version Ġ= Ġ 1 0 ) ĊĊĠĠĠĠĠĠĠ Ġoperator Ġfun Ġinvoke ( version : ĠInt ?, Ġattributes : ĠMap < String , ĠAttribute < Any >>, Ġinputs : ĠList < String >, Ġoutputs : ĠList < String >) Ġ= Ġwhen Ġ( version Ġ?: ĠDEFAULT _ VERSION . since Version ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġin ĠDe quant ize Linear Ver 1 . VERSION . as Range () Ġ-> ĠDe quant ize Linear Ver 1 ( attributes , Ġinputs , Ġoutputs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror (" Unsupported Ġversion Ġof ĠDe quant ize Linear Ġoperator : Ġ$ version ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Experimental Time Ċ class ĠDe quant ize Linear Ver 1 ( attributes : ĠMap < String , ĠAttribute < Any >>, Ġinputs : ĠList < String >, Ġoutputs : ĠList < String >) Ġ: ĠDe quant ize Linear ( INFO , Ġattributes , Ġinputs , Ġoutputs ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠIN _ TYPE _ CONSTRAINT S Ġ= Ġset Of ( Tensor Proto . DataType . INT 8 , ĠTensor Proto . DataType . UINT 8 ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠOUT _ TYPE _ CONSTRAINT S Ġ= Ġset Of ( Tensor Proto . DataType . FLOAT , ĠTensor Proto . DataType . FLOAT 1 6 ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠATTRIBUT ES _ INFO Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAttribute Info (" axis ", Ġset Of ( Attribute Proto . AttributeType . INT ), Ġrequired Ġ= Ġfalse , Ġdefault Ġ= Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠINPUT S _ INFO Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIO Info ( 0 , ĠIN _ TYPE _ CONSTRAINT S , Ġ" x ", Ġoptional Ġ= Ġfalse ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIO Info ( 0 , ĠOUT _ TYPE _ CONSTRAINT S , Ġ" x _ scale ", Ġoptional Ġ= Ġfalse ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIO Info ( 0 , ĠIN _ TYPE _ CONSTRAINT S , Ġ" x _ zero _ point ", Ġoptional Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠOUTPUT S _ INFO Ġ= ĠlistOf ( IO Info ( 0 , ĠOUT _ TYPE _ CONSTRAINT S , Ġ" y ", Ġoptional Ġ= Ġfalse )) ĊĊĠĠĠĠĠĠĠ Ġinternal Ġval ĠVERSION Ġ= ĠVersion Info ( since Version Ġ= Ġ 1 0 ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠINFO Ġ= ĠOperator Info (" De quant ize Linear ", ĠATTRIBUT ES _ INFO , ĠINPUT S _ INFO , ĠOUTPUT S _ INFO , ĠVERSION , ĠOperator Info . DEFAULT _ DOMAIN ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġaxis : ĠInt Ġby Ġattribute Ġ{ Ġit : ĠNumber Ġ-> Ġit . toInt () Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġ< D Ġ: ĠON NX Data < *, Ġ* >> Ġapply ( contexts : ĠContext s < D >, Ġinputs : ĠList < KIT ensor ?> ): ĠList < KIT ensor ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinput Ġ= Ġinputs [ 0 ] !!. data Ġas ĠNumber ND Array ĊĠĠĠĠĠĠĠ Ġval Ġscale Ġ= Ġinputs [ 1 ] !!. data ĊĠĠĠĠĠĠĠ Ġval Ġzero Point Ġ= Ġinputs . get OrNull ( 2 )?. data ĊĊĠĠĠĠĠĠĠ Ġrequire ( zero Point Ġ== Ġnull Ġ|| Ġscale . shape . content Equals ( zero Point . shape )) Ġ{ Ġ" Zero Ġpoint Ġand Ġscale Ġtensors Ġshould Ġhave Ġthe Ġsame Ġdims " Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( input . de quant ize ( zero Point , Ġscale , Ġaxis ). as Tensor (" y ")) ĊĠĠĠ Ġ} Ċ } Ċ