aclnnConvolution
产品支持情况
功能说明
接口功能:实现卷积功能,支持 1D 卷积、2D 卷积、3D 卷积,同时支持转置卷积、空洞卷积、分组卷积。 对于入参
[object Object]时,表示使用转置卷积或者分数步长卷积。它可以看作是普通卷积的梯度或者逆向操作,即从卷积的输出形状恢复到输入形状,同时保持与卷积相容的连接模式。它的参数和普通卷积类似,包括输入通道数、输出通道数、卷积核大小、步长、填充、输出填充、分组、偏置、扩张等。计算公式:
我们假定输入(input)的 shape 是 ,(weight) 的 shape 是 ,输出(output)的 shape 是 ,其中 表示批次大小(batch size), 是通道数,、 和 分别是样本的深度、高度和宽度,、 和 分别是卷积核的深度、高度和宽度,那输出将被表示为:
其中, 表示卷积计算,根据卷积输入的维度,卷积的类型(空洞卷积、分组卷积)而定。 代表批次大小(batch size), 代表通道数,、 和 分别代表深度、高度和宽度,相应输出维度的计算公式如下:
对于入参
[object Object]时:对于入参
[object Object]时: $$ D_{\text{out}}=(D - 1) \times \text{stride}[0] - 2 \times \text{padding}[0] + \text{dilation}[0] \times (K_d - 1) + \text {outputPadding}[0] + 1 \
H_{\text{out}}=(H - 1) \times \text{stride}[1] - 2 \times \text{padding}[1] + \text{dilation}[1] \times (K_h - 1) + \text {outputPadding}[1] + 1 \ W_{\text{out}}=(W - 1) \times \text{stride}[2] - 2 \times \text{padding}[2] + \text{dilation}[2] \times (K_w - 1) + \text {outputPadding}[2] + 1 $$
函数原型
每个算子分为[object Object]两段式接口[object Object],必须先调用 aclnnConvolutionGetWorkspaceSize 接口获取计算所需 workspace 大小以及包含了算子计算流程的执行器,再调用 aclnnConvolution 接口执行计算。
aclnnConvolutionGetWorkspaceSize
参数说明:
[object Object]返回值:
aclnnStatus:返回状态码,具体参见[object Object]aclnn返回码[object Object]。
第一段接口完成入参校验,出现以下场景时报错:
[object Object]
aclnnConvolution
参数说明:
[object Object]返回值:
aclnnStatus:返回状态码,具体参见[object Object]aclnn返回码[object Object]。
约束说明
确定性计算
- aclnnConvolution默认确定性实现。
调用示例
示例代码如下,仅供参考,具体编译和执行过程请参考[object Object]编译与运行样例[object Object]。