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 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. |
---|