ConvInteger

ConvInteger - 10

版本

  • 名称: ConvInteger (GitHub)

  • : main

  • 自版本: 10

  • 函数: False

  • 支持级别: SupportType.COMMON

  • 形状推断: True

此版本的运算符自版本10起可用。

摘要

整数卷积运算符使用输入张量、其零点、过滤器及其零点来计算输出。乘积**绝不能**溢出。如果且仅当在32位中,累加可能会溢出。

属性

  • auto_pad - 字符串(默认值为'NOTSET'

    auto_pad必须为NOTSET、SAME_UPPER、SAME_LOWER或VALID。其中默认值为NOTSET,表示使用显式填充。SAME_UPPER或SAME_LOWER表示填充输入,以便output_shape[i] = ceil(input_shape[i] / strides[i])对于每个轴i。填充在两侧平均或几乎平均分配(取决于它是偶数还是奇数)。如果填充是奇数,则对于SAME_UPPER,额外填充添加到末尾,对于SAME_LOWER,则添加到开头。

  • dilations - 整数 :

    过滤器沿每个空间轴的扩张值。如果不存在,则每个轴的扩张默认为1。

  • group - 整数(默认值为'1'

    输入通道和输出通道划分的组数。默认为1。

  • kernel_shape - 整数 :

    卷积核的形状。如果不存在,应从输入“w”推断。

  • pads - 整数 :

    沿每个空间轴的开始和结束的填充,它可以取任何大于或等于0的值。该值表示添加到相应轴的开始和结束部分的像素数。pads格式应如下:[x1_begin, x2_begin…x1_end, x2_end,…],其中xi_begin是添加到轴i开头的像素数,xi_end是添加到轴i末尾的像素数。此属性不能与auto_pad属性同时使用。如果不存在,则每个空间轴的开始和结束处的填充默认为0。

  • strides - 整数 :

    沿每个空间轴的步幅。如果不存在,则每个轴的步幅默认为1。

输入

2到4个输入。

  • x (异构) - T1

    来自前一层的输入数据张量;大小为 (N x C x H x W),其中 N 是批大小,C 是通道数,H 和 W 是高度和宽度。请注意,这是针对二维图像的。否则大小为 (N x C x D1 x D2 … x Dn)。或者,如果维度表示生效,则操作期望输入数据张量以 [DATA_BATCH, DATA_CHANNEL, DATA_FEATURE, DATA_FEATURE …] 的维度表示到达。

  • w (异构) - T2

    将在卷积中使用的权重张量;大小为 (M x C/group x kH x kW),其中 C 是通道数,kH 和 kW 是核的高度和宽度,M 是特征图的数量。对于超过 2 个维度,核形状将为 (M x C/group x k1 x k2 x … x kn),其中 (k1 x k2 x … kn) 是核的维度。或者,如果维度表示生效,则操作期望权重张量以 [FILTER_OUT_CHANNEL, FILTER_IN_CHANNEL, FILTER_SPATIAL, FILTER_SPATIAL …] 的维度表示到达。X.shape[1] == (W.shape[1] * group) == C(假设形状数组的索引从 0 开始)。或者换句话说,FILTER_IN_CHANNEL 应该等于 DATA_CHANNEL。

  • x_zero_point (可选,异构) - T1

    输入 ‘x’ 的零点张量。它是可选的,默认值为 0。它是一个标量,这意味着每个张量/层量化。

  • w_zero_point (可选,异构) - T2

    输入 ‘w’ 的零点张量。它是可选的,默认值为 0。它可以是标量或一维张量,这意味着每个张量/层或每个输出通道量化。如果它是一维张量,则其元素数量应等于输出通道数 (M)。

输出

  • y (异构) - T3

    包含卷积结果的输出数据张量。输出维度是核大小、步幅大小和填充长度的函数。

类型约束

  • T1 in ( tensor(int8), tensor(uint8) )

    将输入 x 及其零点数据类型约束为 8 位整数张量。

  • T2 in ( tensor(int8), tensor(uint8) )

    将输入 w 及其零点数据类型约束为 8 位整数张量。

  • T3 in ( tensor(int32) )

    将输出 y 数据类型约束为 32 位整数张量。