| |
| |
| ``mx.nd.Convolution`` |
| ========================================== |
| |
| Description |
| ---------------------- |
| |
| Compute *N*-D convolution on *(N+2)*-D input. |
| |
| In the 2-D convolution, given input data with shape *(batch_size, |
| channel, height, width)*, the output is computed by |
| |
| .. math:: |
| |
| out[n,i,:,:] = bias[i] + \sum_{j=0}^{channel} data[n,j,:,:] \star |
| weight[i,j,:,:] |
| |
| where :math:`\star` is the 2-D cross-correlation operator. |
| |
| For general 2-D convolution, the shapes are |
| |
| - **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)*. |
| |
| Define:: |
| |
| f(x,k,p,s,d) = floor((x+2*p-d*(k-1)-1)/s)+1 |
| |
| then we have:: |
| |
| out_height=f(height, kernel[0], pad[0], stride[0], dilate[0]) |
| out_width=f(width, kernel[1], pad[1], stride[1], dilate[1]) |
| |
| If ``no_bias`` is set to be true, then the ``bias`` term is ignored. |
| |
| The default data ``layout`` is *NCHW*, namely *(batch_size, channel, height, |
| width)*. We can choose other layouts such as *NWC*. |
| |
| If ``num_group`` is larger than 1, denoted by *g*, then split the input ``data`` |
| evenly into *g* parts along the channel axis, and also evenly split ``weight`` |
| along the first dimension. Next compute the convolution on the *i*-th part of |
| the data with the *i*-th weight part. The output is obtained by concatenating all |
| the *g* results. |
| |
| 1-D convolution does not have *height* dimension but only *width* in space. |
| |
| - **data**: *(batch_size, channel, width)* |
| - **weight**: *(num_filter, channel, kernel[0])* |
| - **bias**: *(num_filter,)* |
| - **out**: *(batch_size, num_filter, out_width)*. |
| |
| 3-D convolution adds an additional *depth* dimension besides *height* and |
| *width*. The shapes are |
| |
| - **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)*. |
| |
| Both ``weight`` and ``bias`` are learnable parameters. |
| |
| There are other options to tune the performance. |
| |
| - **cudnn_tune**: enable this option leads to higher startup time but may give |
| faster speed. Options are |
| |
| - **off**: no tuning |
| - **limited_workspace**:run test and pick the fastest algorithm that doesn't |
| exceed workspace limit. |
| - **fastest**: pick the fastest algorithm and ignore workspace limit. |
| - **None** (default): the behavior is determined by environment variable |
| ``MXNET_CUDNN_AUTOTUNE_DEFAULT``. 0 for off, 1 for limited workspace |
| (default), 2 for fastest. |
| |
| - **workspace**: A large number leads to more (GPU) memory usage but may improve |
| the performance. |
| |
| |
| |
| |
| |
| Arguments |
| ------------------ |
| |
| +----------------------------------------+------------------------------------------------------------+ |
| | Argument | Description | |
| +========================================+============================================================+ |
| | ``data`` | NDArray-or-Symbol. | |
| | | | |
| | | Input data to the ConvolutionOp. | |
| +----------------------------------------+------------------------------------------------------------+ |
| | ``weight`` | NDArray-or-Symbol. | |
| | | | |
| | | Weight matrix. | |
| +----------------------------------------+------------------------------------------------------------+ |
| | ``bias`` | NDArray-or-Symbol. | |
| | | | |
| | | Bias parameter. | |
| +----------------------------------------+------------------------------------------------------------+ |
| | ``kernel`` | Shape(tuple), required. | |
| | | | |
| | | Convolution kernel size: (w,), (h, w) or (d, h, w) | |
| +----------------------------------------+------------------------------------------------------------+ |
| | ``stride`` | Shape(tuple), optional, default=[]. | |
| | | | |
| | | Convolution stride: (w,), (h, w) or (d, h, w). Defaults to | |
| | | 1 for each | |
| | | dimension. | |
| +----------------------------------------+------------------------------------------------------------+ |
| | ``dilate`` | Shape(tuple), optional, default=[]. | |
| | | | |
| | | Convolution dilate: (w,), (h, w) or (d, h, w). Defaults to | |
| | | 1 for each | |
| | | dimension. | |
| +----------------------------------------+------------------------------------------------------------+ |
| | ``pad`` | Shape(tuple), optional, default=[]. | |
| | | | |
| | | Zero pad for convolution: (w,), (h, w) or (d, h, w). | |
| | | Defaults to no | |
| | | padding. | |
| +----------------------------------------+------------------------------------------------------------+ |
| | ``num.filter`` | int (non-negative), required. | |
| | | | |
| | | Convolution filter(channel) number | |
| +----------------------------------------+------------------------------------------------------------+ |
| | ``num.group`` | int (non-negative), optional, default=1. | |
| | | | |
| | | Number of group partitions. | |
| +----------------------------------------+------------------------------------------------------------+ |
| | ``workspace`` | long (non-negative), optional, default=1024. | |
| | | | |
| | | Maximum temporary workspace allowed (MB) in | |
| | | convolution.This parameter has two usages. When CUDNN is | |
| | | not used, it determines the effective batch size of the | |
| | | convolution kernel. When CUDNN is used, it controls the | |
| | | maximum temporary storage used for tuning the best CUDNN | |
| | | kernel when `limited_workspace` strategy is | |
| | | used. | |
| +----------------------------------------+------------------------------------------------------------+ |
| | ``no.bias`` | boolean, optional, default=0. | |
| | | | |
| | | Whether to disable bias parameter. | |
| +----------------------------------------+------------------------------------------------------------+ |
| | ``cudnn.tune`` | {None, 'fastest', 'limited_workspace', 'off'},optional, | |
| | | default='None'. | |
| | | | |
| | | Whether to pick convolution algo by running performance | |
| | | test. | |
| +----------------------------------------+------------------------------------------------------------+ |
| | ``cudnn.off`` | boolean, optional, default=0. | |
| | | | |
| | | Turn off cudnn for this layer. | |
| +----------------------------------------+------------------------------------------------------------+ |
| | ``layout`` | {None, 'NCDHW', 'NCHW', 'NCW', 'NDHWC', 'NHWC'},optional, | |
| | | default='None'. | |
| | | | |
| | | Set layout for input, output and weight. Empty for | |
| | | default layout: NCW for 1d, NCHW for 2d and NCDHW for | |
| | | 3d.NHWC and NDHWC are only supported on | |
| | | GPU. | |
| +----------------------------------------+------------------------------------------------------------+ |
| |
| Value |
| ---------- |
| |
| ``out`` The result mx.ndarray |
| |
| |
| Link to Source Code: http://github.com/apache/incubator-mxnet/blob/1.6.0/src/operator/nn/convolution.cc#L469 |
| |