当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python mxnet.symbol.Convolution用法及代码示例


用法:

mxnet.symbol.Convolution(data=None, weight=None, bias=None, kernel=_Null, stride=_Null, dilate=_Null, pad=_Null, num_filter=_Null, num_group=_Null, workspace=_Null, no_bias=_Null, cudnn_tune=_Null, cudnn_off=_Null, layout=_Null, name=None, attr=None, out=None, **kwargs)

参数

  • data(Symbol) - 将数据输入到 ConvolutionOp。
  • weight(Symbol) - 权重矩阵。
  • bias(Symbol) - 偏置参数。
  • kernel(Shape(tuple), required) - 卷积核大小:(w,), (h, w) 或 (d, h, w)
  • stride(Shape(tuple), optional, default=[]) - 卷积步幅:(w,)、(h, w) 或 (d, h, w)。每个维度默认为 1。
  • dilate(Shape(tuple), optional, default=[]) - 卷积膨胀:(w,)、(h, w) 或 (d, h, w)。每个维度默认为 1。
  • pad(Shape(tuple), optional, default=[]) - 卷积的零填充:(w,)、(h, w) 或 (d, h, w)。默认为无填充。
  • num_filter(int (non-negative), required) - 卷积滤波器(通道)编号
  • num_group(int (non-negative), optional, default=1) - 组分区数。
  • workspace(long (non-negative), optional, default=1024) - 卷积中允许的最大临时工作空间 (MB)。此参数有两种用法。当不使用 CUDNN 时,它决定了卷积核的有效批大小。当使用 CUDNN 时,它控制用于调整最佳 CUDNN 内核的最大临时存储空间limited_workspace使用策略。
  • no_bias(boolean, optional, default=0) - 是否禁用偏差参数。
  • cudnn_tune({None, 'fastest', 'limited_workspace', 'off'},optional, default='None') - 是否通过运行性能测试来选择卷积算法。
  • cudnn_off(boolean, optional, default=0) - 关闭此层的 cudnn。
  • layout({None, 'NCDHW', 'NCHW', 'NCW', 'NDHWC', 'NHWC'},optional, default='None') - 设置输入、输出和权重的布局。默认布局为空:NCW 表示 1d,NCHW 表示 2d,NCDHW 表示 3d。NHWC 和 NDHWC 仅在 GPU 上支持。
  • name(string, optional.) - 结果符号的名称。

返回

结果符号。

返回类型

Symbol

(N+2) -D 输入上计算 N -D 卷积。

在二维卷积中,给定形状为 (batch_size, channel, height, width) 的输入数据,输出由下式计算

其中 是二维互相关算子。

对于一般的二维卷积,形状是

  • data(batch_size, channel, height, width)
  • weight(num_filter, channel, kernel[0], kernel[1])
  • bias(num_filter,)
  • out(batch_size, num_filter, out_height, out_width).

定义:

f(x,k,p,s,d) = floor((x+2*p-d*(k-1)-1)/s)+1

那么我们有:

out_height=f(height, kernel[0], pad[0], stride[0], dilate[0])
out_width=f(width, kernel[1], pad[1], stride[1], dilate[1])

如果 no_bias 设置为 true,则忽略 bias 项。

默认数据 layoutNCHW ,即 (batch_size, channel, height, width) 。我们可以选择其他布局,例如 NWC

如果 num_group 大于 1,用 g 表示,则将输入 data 沿通道轴均匀拆分为 g 部分,并沿第一维均匀拆分 weight。接下来计算 i -th 数据部分与 i -th 权重部分的卷积。通过连接所有g 结果获得输出。

一维卷积没有height维度,但在空间中只有width

  • data(batch_size, channel, width)
  • weight(num_filter, channel, kernel[0])
  • bias(num_filter,)
  • out(batch_size, num_filter, out_width).

除了 heightwidth 之外,3-D 卷积还增加了一个额外的 depth 维度。形状是

  • data(batch_size, channel, depth, height, width)
  • weight(num_filter, channel, kernel[0], kernel[1], kernel[2])
  • bias(num_filter,)
  • out(batch_size, num_filter, out_depth, out_height, out_width).

weightbias 都是可学习的参数。

还有其他选项可以调整性能。

  • cudnn_tune:启用此选项会导致更长的启动时间,但可能会提供更快的速度。选项是
    • off: 没有调
    • limited_workspace:运行测试并选择不超过工作空间限制的最快算法。
    • fastest:选择最快的算法并忽略工作空间限制。
    • None(默认):行为由环境变量决定MXNET_CUDNN_AUTOTUNE_DEFAULT. 0 表示关闭,1 表示有限工作空间(默认),2 表示最快。
  • workspace:大量会导致更多(GPU)内存使用,但可能会提高性能。

相关用法


注:本文由纯净天空筛选整理自apache.org大神的英文原创作品 mxnet.symbol.Convolution。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。