文件最后提交记录最后更新时间
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
README

Conv3D

产品支持情况

产品 是否支持
Ascend 950PR&950DT系列产品 √
Atlas A3系列产品 ×
Atlas A2系列产品 ×
Atlas 200I/500 A2推理产品 ×
Atlas推理系列产品 ×
Atlas训练系列产品 ×

功能说明

  • 算子功能:对形状为5D的输入张量做三维卷积,支持空洞卷积(dilations > 1)、分组卷积(groups > 1)和偏置(bias)累加,计算y = CONV(x, filter) + bias。

  • 计算公式:

    • 假定输入(x)的shape是(N,Cin,D,H,W)(N, C_{\text{in}}, D, H, W)(NCDHW格式)或(N,D,H,W,Cin)(N, D, H, W, C_{\text{in}})(NDHWC格式),(filter)的shape是(Cout,Cin,Kd,Kh,Kw)(C_{\text{out}}, C_{\text{in}}, K_d, K_h, K_w)(NCDHW格式)或(Kd,Kh,Kw,Cin,Cout)(K_d, K_h, K_w, C_{\text{in}}, C_{\text{out}})(DHWCN格式),输出(y)的shape是(N,Cout,Dout,Hout,Wout)(N, C_{\text{out}}, D_{\text{out}}, H_{\text{out}}, W_{\text{out}})(NCDHW格式)或(N,Dout,Hout,Wout,Cout)(N, D_{\text{out}}, H_{\text{out}}, W_{\text{out}}, C_{\text{out}})(NDHWC格式)。

    • 输出表示为:

    y(Ni,Coutj)=bias(Coutj)+∑k=0Cin−1filter(Coutj,k)⋆x(Ni,k) \text{y}(N_i, C_{\text{out}_j}) = \text{bias}(C_{\text{out}_j}) + \sum_{k = 0}^{C_{\text{in}} - 1} \text{filter}(C_{\text{out}_j}, k) \star \text{x}(N_i, k)

    其中,⋆\star 表示三维卷积计算,输出维度的计算公式如下:

    Dout=(D+pad_head+pad_tail−dilation_d×(Kd−1)−1)/stride_d+1Hout=(H+pad_top+pad_bottom−dilation_h×(Kh−1)−1)/stride_h+1Wout=(W+pad_left+pad_right−dilation_w×(Kw−1)−1)/stride_w+1 D_{\text{out}} = (D + \text{pad\_head} + \text{pad\_tail} - \text{dilation\_d} \times (K_d - 1) - 1) / \text{stride\_d} + 1 \\ H_{\text{out}} = (H + \text{pad\_top} + \text{pad\_bottom} - \text{dilation\_h} \times (K_h - 1) - 1) / \text{stride\_h} + 1 \\ W_{\text{out}} = (W + \text{pad\_left} + \text{pad\_right} - \text{dilation\_w} \times (K_w - 1) - 1) / \text{stride\_w} + 1

  • 输出dtype推导:输出y的dtype与输入x一致;当x为INT8时输出为INT32。

参数说明

参数名 输入/输出/属性 描述 数据类型 数据格式
x 输入 卷积输入特征张量,5D。 FLOAT16、BFLOAT16、FLOAT、HIFLOAT8、INT8 NCDHW、NDHWC
filter 输入 卷积核权重张量,5D,与x的dtype一致。 FLOAT16、BFLOAT16、FLOAT、HIFLOAT8、INT8 NCDHW、DHWCN
bias 可选输入 卷积偏置张量,1D,shape为[C_out]。 FLOAT16、FLOAT、BFLOAT16、INT32 ND
offset_w 可选输入 量化偏移张量(预留,当前未使用)。 INT8 ND
y 输出 卷积输出特征张量,5D。 FLOAT16、BFLOAT16、FLOAT、HIFLOAT8、INT32 NCDHW、NDHWC
strides 属性 滑窗步长,长度为5的列表,顺序由data_format决定;仅D/H/W维参与输出shape推导(N/C维不参与,按惯例置1)。 ListInt,必填 -
pads 属性 各维度padding,长度支持1/3/6:长度6逐维显式,顺序为[pad_head, pad_tail, pad_top, pad_bottom, pad_left, pad_right];长度3为[pad_d, pad_h, pad_w],广播到对应维两侧;长度1全维同值。 ListInt,必填 -
dilations 属性 空洞卷积空洞率,长度为5的列表,顺序由data_format决定。默认[1, 1, 1, 1, 1]。 ListInt -
groups 属性 分组卷积的分组数,C_in与C_out必须能被groups整除。默认1;groups为1且C_in可被filter的C_in整除时,按C_in / C_in(filter)隐式生效(对齐RT1.0,分组数在实际执行阶段推导)。 Int -
data_format 属性 输入/输出数据格式,取值NCDHW或NDHWC。默认NDHWC。 String -
offset_x 属性 量化算法中的偏移(预留,当前未使用)。默认0。 Int -

dtype/format支持组合:

x filter bias y
float16 + NCDHW float16 + NCDHW float16 + ND float16 + NCDHW
bfloat16 + NCDHW bfloat16 + NCDHW bfloat16 + ND bfloat16 + NCDHW
float + NCDHW float + NCDHW float + ND float + NCDHW
hifloat8 + NCDHW hifloat8 + NCDHW float + ND hifloat8 + NCDHW
float16 + NDHWC float16 + DHWCN float16 + ND float16 + NDHWC
bfloat16 + NDHWC bfloat16 + DHWCN bfloat16 + ND bfloat16 + NDHWC
float + NDHWC float + DHWCN float + ND float + NDHWC
int8 + NCDHW int8 + NCDHW int32 + ND int32 + NCDHW
int8 + NDHWC int8 + DHWCN int32 + ND int32 + NDHWC

约束说明

  • x、filter、y的shape均为5D(x支持动态shape-1与动态rank-2)。
  • strides、dilations长度必须为5,且strides的D/H/W维必须大于0;dilations的D维取值范围为[1, 1000000],H/W维取值范围为[1, 255]。
  • pads长度支持1/3/6(长度3按[pad_d, pad_h, pad_w]广播到对应维两侧,长度1全维同值);静态shape下取值必须不小于0。
  • data_format仅支持NCDHW或NDHWC;x的format仅支持NCDHW/NDHWC,filter仅支持NCDHW/NDHWC/DHWCN,y仅支持NCDHW/NDHWC。
  • filter的D/H/W维必须不小于1。
  • padding后的输入尺寸必须不小于卷积核尺寸(x与filter均为静态shape时校验)。
  • 零Tensor:x任一维为0或filter的N/C维为0时,输出必须能推导出零Tensor,否则拦截。
  • 通道约束:静态shape下C_in必须能被filter的C_in维整除;groups显式设置(非1)时必须等于C_in / C_in(filter)。
  • 前端(TensorFlow)传入padding = SAME/VALID属性时,pads按输入尺寸动态计算(动态维记-1,SAME)或置0(VALID)。

调用说明

调用方式 调用样例 说明
图模式调用 test_geir_conv3d 通过算子IR构图方式调用Conv3D算子。