DequantizeCastOperation

Struct DequantizeCastOperation 

Source
pub struct DequantizeCastOperation<'c> { /* private fields */ }
Expand description

A dcast operation. Dequantize cast operation.

Convert an input quantized value into its expressed floating-point value. The dequantization process consists of the following steps:

def dequantize(quantizedValue: quantizedType) -> expressedType:
    storedValue = reinterpretCast(quantizedValue, storageType)
    storedValueFloat = convertIntToFloat(storedValue, expressedType)
    zeroPointFloat = convertIntToFloat(zeroPoint, expressedType)
    expressedValue = (storedValueFloat - zeroPointFloat) * scale
    return expressedValue

Here, storageType, expressedType, scale, and zeroPoint are obtained from the corresponding parameters encoded in quantizedType. For per-channel quantization, the appropriate scale and zeroPoint values are used for each tensor element computation according to the channel the element belongs to.

The numerical results produced by the algorithm above may vary depending on the rounding methods used by convertIntToFloat(), subtraction (-), and multiplication (*). This operation does not define specific rounding methods; instead, it is the responsibility of a transform pipeline to determine which rounding method to apply when this operation is broken down into lower-level dialects.

The operation must satisfy the following syntactic constraints:

  • Operand input must be a scalar or tensor of type !quant.uniform.

  • The result type must be a floating-point scalar or tensor.

  • The expressedType parameter of the !quant.uniform type of the input must match the floating-point type of the result.

  • The operand and result types must be both scalars or both tensors. If tensors, they must be both ranked or both unranked. If ranked, both must have the same shape, including matching static and dynamic dimensions.

  • If the operand uses per-channel quantization, its !quant.uniform type must adhere to the Per-axis quantization integrity guidelines.

Examples:

// Dequantize a scalar quantized value
%result = quant.dcast %input : !quant.uniform<i8:f32, 2.0> to f32

// Dequantize a dynamically shaped tensor of quantized values
%result = quant.dcast %input : tensor<?x!quant.uniform<i8:f32, 2.0>> to tensor<?xf32>

// Dequantize an unranked tensor using per-axis quantization information
%result = quant.dcast %input : tensor<*x!quant.uniform<i8:f32:1, {2.0, 3.0}>> to tensor<*xf32>

Implementations§

Source§

impl<'c> DequantizeCastOperation<'c>

Source

pub fn name() -> &'static str

Returns a name.

Source

pub fn as_operation(&self) -> &Operation<'c>

Returns a generic operation.

Source

pub fn builder( context: &'c Context, location: Location<'c>, ) -> DequantizeCastOperationBuilder<'c, Unset, Unset>

Creates a builder.

Source

pub fn result(&self) -> Result<OperationResult<'c, '_>, Error>

Source

pub fn input(&self) -> Result<Value<'c, '_>, Error>

Trait Implementations§

Source§

impl<'c> Clone for DequantizeCastOperation<'c>

Source§

fn clone(&self) -> DequantizeCastOperation<'c>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'c> Debug for DequantizeCastOperation<'c>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'b> From<DequantizeCastOperation<'b>> for QuantDialectOperation<'b>

Source§

fn from(op: DequantizeCastOperation<'b>) -> Self

Converts to this type from the input type.
Source§

impl<'c> From<DequantizeCastOperation<'c>> for Operation<'c>

Source§

fn from(operation: DequantizeCastOperation<'c>) -> Self

Converts to this type from the input type.
Source§

impl<'c> PartialEq for DequantizeCastOperation<'c>

Source§

fn eq(&self, other: &DequantizeCastOperation<'c>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<'c> TryFrom<Operation<'c>> for DequantizeCastOperation<'c>

Source§

type Error = Error

The type returned in the event of a conversion error.
Source§

fn try_from(operation: Operation<'c>) -> Result<Self, Self::Error>

Performs the conversion.
Source§

impl<'c> Eq for DequantizeCastOperation<'c>

Source§

impl<'c> StructuralPartialEq for DequantizeCastOperation<'c>

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.