| nn_max_pool3d {torch} | R Documentation |
Applies a 3D max pooling over an input signal composed of several input planes.
Description
In the simplest case, the output value of the layer with input size (N, C, D, H, W),
output (N, C, D_{out}, H_{out}, W_{out}) and kernel_size (kD, kH, kW)
can be precisely described as:
Usage
nn_max_pool3d(
kernel_size,
stride = NULL,
padding = 0,
dilation = 1,
return_indices = FALSE,
ceil_mode = FALSE
)
Arguments
kernel_size |
the size of the window to take a max over |
stride |
the stride of the window. Default value is |
padding |
implicit zero padding to be added on all three sides |
dilation |
a parameter that controls the stride of elements in the window |
return_indices |
if |
ceil_mode |
when TRUE, will use |
Details
\begin{array}{ll}
\mbox{out}(N_i, C_j, d, h, w) = & \max_{k=0, \ldots, kD-1} \max_{m=0, \ldots, kH-1} \max_{n=0, \ldots, kW-1} \\
& \mbox{input}(N_i, C_j, \mbox{stride[0]} \times d + k, \mbox{stride[1]} \times h + m, \mbox{stride[2]} \times w + n)
\end{array}
If padding is non-zero, then the input is implicitly zero-padded on both sides
for padding number of points. dilation controls the spacing between the kernel points.
It is harder to describe, but this link_ has a nice visualization of what dilation does.
The parameters kernel_size, stride, padding, dilation can either be:
a single
int– in which case the same value is used for the depth, height and width dimensiona
tupleof three ints – in which case, the firstintis used for the depth dimension, the secondintfor the height dimension and the thirdintfor the width dimension
Shape
Input:
(N, C, D_{in}, H_{in}, W_{in})Output:
(N, C, D_{out}, H_{out}, W_{out}), whereD_{out} = \left\lfloor\frac{D_{in} + 2 \times \mbox{padding}[0] - \mbox{dilation}[0] \times (\mbox{kernel\_size}[0] - 1) - 1}{\mbox{stride}[0]} + 1\right\rfloor
H_{out} = \left\lfloor\frac{H_{in} + 2 \times \mbox{padding}[1] - \mbox{dilation}[1] \times
(\mbox{kernel\_size}[1] - 1) - 1}{\mbox{stride}[1]} + 1\right\rfloor
W_{out} = \left\lfloor\frac{W_{in} + 2 \times \mbox{padding}[2] - \mbox{dilation}[2] \times
(\mbox{kernel\_size}[2] - 1) - 1}{\mbox{stride}[2]} + 1\right\rfloor
Examples
if (torch_is_installed()) {
# pool of square window of size=3, stride=2
m <- nn_max_pool3d(3, stride = 2)
# pool of non-square window
m <- nn_max_pool3d(c(3, 2, 2), stride = c(2, 1, 2))
input <- torch_randn(20, 16, 50, 44, 31)
output <- m(input)
}