UniformQuantizedConvolution

public final class UniformQuantizedConvolution

Perform quantized convolution of quantized Tensor `lhs` and quantized Tensor `rhs`. to make quantized `output`.

Given quantized `lhs` and quantized `rhs`, performs quantized dot on `lhs` and `rhs` to make quantized `output`.

`lhs` and `rhs` must be Tensors of same rank, and meet following shape conditions. - `lhs_feature` % `feature_group_count` == 0 - `lhs_feature` % `rhs_input_feature` == 0 - `lhs_feature` / `feature_group_count` == `rhs_input_feature` - `rhs_output_feature` % `feature_group_count` == 0 - `lhs_batch` % `batch_group_count` == 0 - `rhs_output_feature` % `batch_group_count` == 0

`lhs` and `rhs` must be quantized Tensor, where data value is quantized using the formula:

quantized_data = clip(original_data / scale + zero_point, quantization_min_val, quantization_max_val)
 
`output` is also quantized, using the same formula. If `rhs` is per-tensor quantized, `output` must be also per-tensor quantized.

Nested Classes

class UniformQuantizedConvolution.Options Optional attributes for UniformQuantizedConvolution  

Public Methods

Output<U>
asOutput()
Returns the symbolic handle of a tensor.
static UniformQuantizedConvolution.Options
batchGroupCount(Long batchGroupCount)
static <U, T> UniformQuantizedConvolution<U>
create(Scope scope, Operand<T> lhs, Operand<T> rhs, Operand<Float> lhsScales, Operand<Integer> lhsZeroPoints, Operand<Float> rhsScales, Operand<Integer> rhsZeroPoints, Operand<Float> outputScales, Operand<Integer> outputZeroPoints, Class<U> Tout, String padding, Long lhsQuantizationMinVal, Long lhsQuantizationMaxVal, Long rhsQuantizationMinVal, Long rhsQuantizationMaxVal, Long outputQuantizationMinVal, Long outputQuantizationMaxVal, Options... options)
Factory method to create a class wrapping a new UniformQuantizedConvolution operation.
static UniformQuantizedConvolution.Options
dimensionNumbers(String dimensionNumbers)
static UniformQuantizedConvolution.Options
explicitPadding(List<Long> explicitPadding)
static UniformQuantizedConvolution.Options
featureGroupCount(Long featureGroupCount)
static UniformQuantizedConvolution.Options
lhsDilation(List<Long> lhsDilation)
static UniformQuantizedConvolution.Options
lhsQuantizationAxis(Long lhsQuantizationAxis)
Output<U>
output()
The output quantized tensor of `Tout`, same rank as `lhs` and `rhs`.
static UniformQuantizedConvolution.Options
outputQuantizationAxis(Long outputQuantizationAxis)
static UniformQuantizedConvolution.Options
rhsDilation(List<Long> rhsDilation)
static UniformQuantizedConvolution.Options
rhsQuantizationAxis(Long rhsQuantizationAxis)
static UniformQuantizedConvolution.Options
windowStrides(List<Long> windowStrides)

Inherited Methods

Public Methods

public Output<U> asOutput ()

Returns the symbolic handle of a tensor.

Inputs to TensorFlow operations are outputs of another TensorFlow operation. This method is used to obtain a symbolic handle that represents the computation of the input.

public static UniformQuantizedConvolution.Options batchGroupCount (Long batchGroupCount)

Parameters
batchGroupCount The number of batch groups. Used for grouped filters. Must be a divisor of `output_feature`.

public static UniformQuantizedConvolution<U> create (Scope scope, Operand<T> lhs, Operand<T> rhs, Operand<Float> lhsScales, Operand<Integer> lhsZeroPoints, Operand<Float> rhsScales, Operand<Integer> rhsZeroPoints, Operand<Float> outputScales, Operand<Integer> outputZeroPoints, Class<U> Tout, String padding, Long lhsQuantizationMinVal, Long lhsQuantizationMaxVal, Long rhsQuantizationMinVal, Long rhsQuantizationMaxVal, Long outputQuantizationMinVal, Long outputQuantizationMaxVal, Options... options)

Factory method to create a class wrapping a new UniformQuantizedConvolution operation.

Parameters
scope current scope
lhs Must be a quantized tensor, rank >= 3.
rhs Must be a quantized tensor, same rank as `lhs`.
lhsScales The float value(s) used as scale factors when quantizing the original data that `lhs` represents. Must be a scalar `Tensor` (`lhs` supports only per-tensor quantization).
lhsZeroPoints The int32 value(s) used as zero points when quantizing original data that `lhs` represents. Same shape condition as `lhs_scales`.
rhsScales The float value(s) used as scale factors when quantizing the original data that `rhs` represents. Must be a scalar `Tensor` for per-tensor quantization, or 1D `Tensor` of size `rhs.dim_size(kernel_output_feature_dimension)`, for per-channel quantization.
rhsZeroPoints The int32 value(s) used as zero points when quantizing original data that `rhs` represents. Same shape condition as `rhs_scales`.
outputScales The float value(s) to use as scale factors when quantizing original data that `output` represents. Must be a scalar `Tensor` for per-tensor quantization, or 1D `Tensor` of size `rhs.dim_size(kernel_output_feature_dimension)` - which is equal to `output.dim_size(output_feature_dimension)`, for per-channel quantization. If `rhs` is per-tensor quantized, output must be also per-tensor quantized. This means that if `rhs_scales` and `rhs_zero_points` are scalar `Tensor`s, `output_scales` and `output_zero_points` must be scalar `Tensor`s as well.
outputZeroPoints The int32 value(s) used as zero points when quantizing original data that output represents. Same shape condition as `output_scales`.
Tout The type of `output` `Tensor`.
padding string from: `"SAME"`, `"VALID"`, or `"EXPLICIT"`, indicating the type of padding algorithm to use.
lhsQuantizationMinVal The min value of the quantized data stored in `lhs`. For example, if `Tin` is `qint8`, this must be set to -127 if narrow range quantized or -128 if not.
lhsQuantizationMaxVal The max value of the quantized data stored in `lhs`. For example, if `Tin` is `qint8`, this must be set to 127.
rhsQuantizationMinVal The min value of the quantized data stored in `rhs`. For example, if `Tin` is `qint8`, this must be set to -127 if narrow range quantized or -128 if not.
rhsQuantizationMaxVal The max value of the quantized data stored in `rhs`. For example, if `Tin` is `qint8`, this must be set to 127.
outputQuantizationMinVal The min value of the quantized data stored in `output`. For example, if `Tout` is `qint8`, this must be set to -127 if narrow range quantized or -128 if not.
outputQuantizationMaxVal The max value of the quantized data stored in `output`. For example, if `Tout` is `qint8`, this must be set to 127.
options carries optional attributes values
Returns
  • a new instance of UniformQuantizedConvolution

public static UniformQuantizedConvolution.Options dimensionNumbers (String dimensionNumbers)

Parameters
dimensionNumbers Structure of dimension information for the convolution op. Must be an empty string (default) or a serialized string of `tensorflow.UniformQuantizedConvolutionDimensionNumbersAttr` proto. If empty string, the default is `("NCHW", "OIHW", "NCHW")` (for a 2D convolution).

public static UniformQuantizedConvolution.Options explicitPadding (List<Long> explicitPadding)

Parameters
explicitPadding If `padding` is `"EXPLICIT"`, must be set as a list indicating the explicit paddings at the start and end of each `lhs` spatial dimension. Otherwise, this must be empty.

(If used,) Must be a list of size `2 * (number of lhs spatial dimensions)`, where `(explicit_padding[2 * i], explicit_padding[2 * i + 1])` indicates `(start_padding, end_padding)` of `spatial_dimensions[i]`.

public static UniformQuantizedConvolution.Options featureGroupCount (Long featureGroupCount)

Parameters
featureGroupCount The number of feature groups. Used for grouped convolutions. Must be a divisor of both `lhs_feature` and `output_feature`.

public static UniformQuantizedConvolution.Options lhsDilation (List<Long> lhsDilation)

Parameters
lhsDilation The dilation factor to apply in each spatial dimension of `lhs`. Must be an empty list (default) or a list of size (number of `lhs` spatial dimensions). If empty list, the dilation for each `lhs` spatial dimension is set to 1.

public static UniformQuantizedConvolution.Options lhsQuantizationAxis (Long lhsQuantizationAxis)

Parameters
lhsQuantizationAxis Indicates the dimension index of the tensor where per-axis quantization is applied for the slices along that dimension. If set to -1 (default), this indicates per-tensor quantization. For the `lhs`, only per-tensor quantization is supported. Thus, this must be set to -1. Other values will raise error at OpKernel construction.

public Output<U> output ()

The output quantized tensor of `Tout`, same rank as `lhs` and `rhs`.

public static UniformQuantizedConvolution.Options outputQuantizationAxis (Long outputQuantizationAxis)

Parameters
outputQuantizationAxis Indicates the dimension index of the tensor where per-axis quantization is applied for the slices along that dimension. If set to -1 (default), this indicates per-tensor quantization. For the `output`, only per-tensor quantization or per-channel quantization along `output_feature_dimension` is supported. Thus, this must be set to -1 or `dimension_numbers.output_feature_dimension`. Other values will raise error at OpKernel construction.

public static UniformQuantizedConvolution.Options rhsDilation (List<Long> rhsDilation)

Parameters
rhsDilation The dilation factor to apply in each spatial dimension of `rhs`. Must be an empty list (default) or a list of size (number of `rhs` spatial dimensions). If empty list, the dilation for each `rhs` spatial dimension is set to 1.

public static UniformQuantizedConvolution.Options rhsQuantizationAxis (Long rhsQuantizationAxis)

Parameters
rhsQuantizationAxis Indicates the dimension index of the tensor where per-axis quantization is applied for the slices along that dimension. If set to -1 (default), this indicates per-tensor quantization. For the `rhs`, only per-tensor quantization or per-channel quantization along `kernel_output_feature_dimension` is supported. Thus, this must be set to -1 or `dimension_numbers.kernel_output_feature_dimension`. Other values will raise error at OpKernel construction.

public static UniformQuantizedConvolution.Options windowStrides (List<Long> windowStrides)

Parameters
windowStrides The stride of the sliding window for each spatial dimension of `lhs`. Must be an empty list (default) or a list of size (number of spatial dimensions). If an empty list is provided, the stride for each spatial dimension is set to 1.