Class Conv3d

  • All Implemented Interfaces:
    Block

    public class Conv3d
    extends Convolution
    Conv3d layer behaves just as Convolution does, with the distinction being it operates of 3-dimensional data such as medical images or video data. The traversal of each filter begins from LayoutType.WIDTH then to LayoutType.HEIGHT, and lastly across each LayoutType.DEPTH in the specified depth size of the data.

    The utilization of Conv3d layer allows deeper analysis of visual data such as those in medical images, or even analysis on temporal data such as video data as a whole instead of processing each frame with a Conv2d layer, despite this being a common practice in computer vision researches. The benefit of utilizing this kind of layer is the maintaining of serial data across 2-dimensional data, hence could be beneficial for research focus on such as object tracking. The drawback is that this kind of layer is more costly compared to other convolution layer types since dot product operation is performed on all three dimensions.

    The input to a Conv3d is an NDList with a single 5-D NDArray. The layout of the NDArray must be "NCDHW". 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)
      out_depth = f(depth, kernel[0], pad[0], stride[0], dilate[0])
      out_height = f(height, kernel[1], pad[1], stride[1], dilate[1])
      out_width = f(width, kernel[2], pad[2], stride[2], dilate[2])
      where f(x, k, p, s, d) = floor((x + 2 * p - d * (k - 1) - 1)/s) + 1

    Both weight and bias are learn-able parameters.

    See Also:
    Convolution
    • Method Detail

      • getExpectedLayout

        protected LayoutType[] getExpectedLayout()
        Returns the expected layout of the input.
        Specified by:
        getExpectedLayout in class Convolution
        Returns:
        the expected layout of the input
      • getStringLayout

        protected java.lang.String getStringLayout()
        Returns the string representing the layout of the input.
        Specified by:
        getStringLayout in class Convolution
        Returns:
        the string representing the layout of the input
      • numDimensions

        protected int numDimensions()
        Returns the number of dimensions of the input.
        Specified by:
        numDimensions in class Convolution
        Returns:
        the number of dimensions of the input
      • conv3d

        public static NDList conv3d​(NDArray input,
                                    NDArray weight)
        Applies 3D convolution over an input signal composed of several input planes.
        Parameters:
        input - the input NDArray of shape (batchSize, inputChannel, depth, height, width)
        weight - filters NDArray of shape (outChannel, inputChannel/groups, depth, height, width)
        Returns:
        the output of the conv3d operation
      • conv3d

        public static NDList conv3d​(NDArray input,
                                    NDArray weight,
                                    NDArray bias)
        Applies 3D convolution over an input signal composed of several input planes.
        Parameters:
        input - the input NDArray of shape (batchSize, inputChannel, depth, height, width)
        weight - filters NDArray of shape (outChannel, inputChannel/groups, depth, height, width)
        bias - bias NDArray of shape (outChannel)
        Returns:
        the output of the conv3d operation
      • conv3d

        public static NDList conv3d​(NDArray input,
                                    NDArray weight,
                                    NDArray bias,
                                    Shape stride)
        Applies 3D convolution over an input signal composed of several input planes.
        Parameters:
        input - the input NDArray of shape (batchSize, inputChannel, depth, height, width)
        weight - filters NDArray of shape (outChannel, inputChannel/groups, depth, height, width)
        bias - bias NDArray of shape (outChannel)
        stride - the stride of the convolving kernel: Shape(depth, height, width)
        Returns:
        the output of the conv3d operation
      • conv3d

        public static NDList conv3d​(NDArray input,
                                    NDArray weight,
                                    NDArray bias,
                                    Shape stride,
                                    Shape padding)
        Applies 3D convolution over an input signal composed of several input planes.
        Parameters:
        input - the input NDArray of shape (batchSize, inputChannel, depth, height, width)
        weight - filters NDArray of shape (outChannel, inputChannel/groups, depth, height, width)
        bias - bias NDArray of shape (outChannel)
        stride - the stride of the convolving kernel: Shape(depth, height, width)
        padding - implicit paddings on both sides of the input: Shape(depth, height, width)
        Returns:
        the output of the conv3d operation
      • conv3d

        public static NDList conv3d​(NDArray input,
                                    NDArray weight,
                                    NDArray bias,
                                    Shape stride,
                                    Shape padding,
                                    Shape dilation)
        Applies 3D convolution over an input signal composed of several input planes.
        Parameters:
        input - the input NDArray of shape (batchSize, inputChannel, depth, height, width)
        weight - filters NDArray of shape (outChannel, inputChannel/groups, depth, height, width)
        bias - bias NDArray of shape (outChannel)
        stride - the stride of the convolving kernel: Shape(depth, height, width)
        padding - implicit paddings on both sides of the input: Shape(depth, height, width)
        dilation - the spacing between kernel elements: Shape(depth, height, width)
        Returns:
        the output of the conv3d operation
      • conv3d

        public static NDList conv3d​(NDArray input,
                                    NDArray weight,
                                    NDArray bias,
                                    Shape stride,
                                    Shape padding,
                                    Shape dilation,
                                    int groups)
        Applies 3D convolution over an input signal composed of several input planes.
        Parameters:
        input - the input NDArray of shape (batchSize, inputChannel, depth, height, width)
        weight - filters NDArray of shape (outChannel, inputChannel/groups, depth, height, width)
        bias - bias NDArray of shape (outChannel)
        stride - the stride of the convolving kernel: Shape(depth, height, width)
        padding - implicit paddings on both sides of the input: Shape(depth, height, width)
        dilation - the spacing between kernel elements: Shape(depth, height, width)
        groups - split input into groups: input channel(input.size(1)) should be divisible by the number of groups
        Returns:
        the output of the conv3d operation
      • builder

        public static Conv3d.Builder builder()
        Creates a builder to build a Conv3d.
        Returns:
        a new builder