chainer.functions.local_convolution_2d¶
-
chainer.functions.
local_convolution_2d
(x, W, b=None, stride=1)[source]¶ Two-dimensional local convolution function.
Locally-connected function for 2D inputs. Works similarly to convolution_2d, except that weights are unshared, that is, a different set of filters is applied at each different patch of the input. It takes two or three variables: the input image
x
, the filter weightW
, and optionally, the bias vectorb
.Notation: here is a notation for dimensionalities.
\(n\) is the batch size.
\(c_I\) is the number of the input.
\(c_O\) is the number of output channels.
\(h\) and \(w\) are the height and width of the input image, respectively.
\(h_O\) and \(w_O\) are the height and width of the output image, respectively.
\(k_H\) and \(k_W\) are the height and width of the filters, respectively.
- Parameters
x (
Variable
or N-dimensional array) – Input variable of shape \((n, c_I, h, w)\).W (
Variable
or N-dimensional array) – Weight variable of shape \((c_O, h_O, w_O, c_I, k_H, k_W)\).b (
Variable
or N-dimensional array) – Bias variable of shape \((c_O,h_O,w_O)\) (optional).stride (int or pair of ints) – Stride of filter applications.
stride=s
andstride=(s, s)
are equivalent.
- Returns
Output variable. Its shape is \((n, c_I * c_O, h_O, w_O)\).
- Return type
Like
Convolution2D
,LocalConvolution2D
function computes correlations between filters and patches of size \((k_H, k_W)\) inx
. But unlikeConvolution2D
,LocalConvolution2D
has a separate filter for each patch of the input\((h_O, w_O)\) is determined by the equivalent equation of
Convolution2D
, without any paddingIf the bias vector is given, then it is added to all spatial locations of the output of convolution.
See also
Example
>>> x = np.random.uniform(0, 1, (2, 3, 7, 7)) >>> W = np.random.uniform(0, 1, (2, 5, 5, 3, 3, 3)) >>> b = np.random.uniform(0, 1, (2, 5, 5)) >>> y = F.local_convolution_2d(x, W, b) >>> y.shape (2, 2, 5, 5)