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 (
Variableor N-dimensional array) – Input variable of shape \((n, c_I, h, w)\).W (
Variableor N-dimensional array) – Weight variable of shape \((c_O, h_O, w_O, c_I, k_H, k_W)\).b (
Variableor 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=sandstride=(s, s)are equivalent.
- Returns
Output variable. Its shape is \((n, c_I * c_O, h_O, w_O)\).
- Return type
Like
Convolution2D,LocalConvolution2Dfunction computes correlations between filters and patches of size \((k_H, k_W)\) inx. But unlikeConvolution2D,LocalConvolution2Dhas 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)