Class Conv3d
- All Implemented Interfaces:
Block
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:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final class
Nested classes/interfaces inherited from class ai.djl.nn.convolutional.Convolution
Convolution.ConvolutionBuilder<T extends Convolution.ConvolutionBuilder>
-
Field Summary
Fields inherited from class ai.djl.nn.convolutional.Convolution
bias, dilation, filters, groups, includeBias, kernelShape, padding, stride, weight
Fields inherited from class ai.djl.nn.AbstractBlock
children, parameters
Fields inherited from class ai.djl.nn.AbstractBaseBlock
inputNames, inputShapes, outputDataTypes, version
-
Method Summary
Modifier and TypeMethodDescriptionstatic Conv3d.Builder
builder()
Creates a builder to build aConv3d
.static NDList
Applies 3D convolution over an input signal composed of several input planes.static NDList
Applies 3D convolution over an input signal composed of several input planes.static NDList
Applies 3D convolution over an input signal composed of several input planes.static NDList
Applies 3D convolution over an input signal composed of several input planes.static NDList
Applies 3D convolution over an input signal composed of several input planes.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.protected LayoutType[]
Returns the expected layout of the input.protected String
Returns the string representing the layout of the input.protected int
Returns the number of dimensions of the input.Methods inherited from class ai.djl.nn.convolutional.Convolution
beforeInitialize, forwardInternal, getDilation, getFilters, getGroups, getKernelShape, getOutputShapes, getPadding, getStride, isIncludeBias, loadMetadata, prepare
Methods inherited from class ai.djl.nn.AbstractBlock
addChildBlock, addChildBlock, addChildBlockSingleton, addParameter, getChildren, getDirectParameters
Methods inherited from class ai.djl.nn.AbstractBaseBlock
cast, clear, describeInput, forward, forward, forwardInternal, getInputShapes, getOutputDataTypes, getParameters, initialize, initializeChildBlocks, isInitialized, loadParameters, readInputShapes, saveInputShapes, saveMetadata, saveParameters, setInitializer, setInitializer, setInitializer, toString
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface ai.djl.nn.Block
forward, freezeParameters, freezeParameters, getCustomMetadata, getOutputShapes
-
Method Details
-
getExpectedLayout
Returns the expected layout of the input.- Specified by:
getExpectedLayout
in classConvolution
- Returns:
- the expected layout of the input
-
getStringLayout
Returns the string representing the layout of the input.- Specified by:
getStringLayout
in classConvolution
- 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 classConvolution
- Returns:
- the number of dimensions of the input
-
conv3d
Applies 3D convolution over an input signal composed of several input planes.- Parameters:
input
- the inputNDArray
of shape (batchSize, inputChannel, depth, height, width)weight
- filtersNDArray
of shape (outChannel, inputChannel/groups, depth, height, width)- Returns:
- the output of the conv3d operation
-
conv3d
Applies 3D convolution over an input signal composed of several input planes.- Parameters:
input
- the inputNDArray
of shape (batchSize, inputChannel, depth, height, width)weight
- filtersNDArray
of shape (outChannel, inputChannel/groups, depth, height, width)bias
- biasNDArray
of shape (outChannel)- Returns:
- the output of the conv3d operation
-
conv3d
Applies 3D convolution over an input signal composed of several input planes.- Parameters:
input
- the inputNDArray
of shape (batchSize, inputChannel, depth, height, width)weight
- filtersNDArray
of shape (outChannel, inputChannel/groups, depth, height, width)bias
- biasNDArray
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 inputNDArray
of shape (batchSize, inputChannel, depth, height, width)weight
- filtersNDArray
of shape (outChannel, inputChannel/groups, depth, height, width)bias
- biasNDArray
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 inputNDArray
of shape (batchSize, inputChannel, depth, height, width)weight
- filtersNDArray
of shape (outChannel, inputChannel/groups, depth, height, width)bias
- biasNDArray
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 inputNDArray
of shape (batchSize, inputChannel, depth, height, width)weight
- filtersNDArray
of shape (outChannel, inputChannel/groups, depth, height, width)bias
- biasNDArray
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
Creates a builder to build aConv3d
.- Returns:
- a new builder
-