Class Deconvolution

  • All Implemented Interfaces:
    Block
    Direct Known Subclasses:
    Conv1dTranspose, Conv2dTranspose

    public abstract class Deconvolution
    extends AbstractBlock
    Transposed convolution, also named fractionally-strided convolution Dumoulin & Visin or deconvolution Long et al., 2015, serves this purpose.

    The need for transposed convolutions generally arises from the desire to use a transformation going in the opposite direction of a normal convolution, i.e., from something that has the shape of the output of some convolution to something that has the shape of its input while maintaining a connectivity pattern that is compatible with said convolution.

    Current implementations of Deconvolution are Conv1dTranspose with input dimension of LayoutType.WIDTH and Conv2dTranspose with input dimension of LayoutType.WIDTH and LayoutType.HEIGHT. These implementations share the same core principal as a Deconvolution layer does, with the difference being the number of input dimension each operates on as denoted by ConvXdTranspose for X dimension(s).

    • Field Detail

      • kernelShape

        protected Shape kernelShape
      • stride

        protected Shape stride
      • padding

        protected Shape padding
      • outPadding

        protected Shape outPadding
      • dilation

        protected Shape dilation
      • filters

        protected int filters
      • groups

        protected int groups
      • includeBias

        protected boolean includeBias
    • Method Detail

      • getExpectedLayout

        protected abstract LayoutType[] getExpectedLayout()
        Returns the expected layout of the input.
        Returns:
        the expected layout of the input
      • getStringLayout

        protected abstract java.lang.String getStringLayout()
        Returns the string representing the layout of the input.
        Returns:
        the string representing the layout of the input
      • numDimensions

        protected abstract int numDimensions()
        Returns the number of dimensions of the input.
        Returns:
        the number of dimensions of the input
      • beforeInitialize

        protected void beforeInitialize​(Shape... inputShapes)
        Performs any action necessary before initialization. For example, keep the input information or verify the layout.
        Overrides:
        beforeInitialize in class AbstractBaseBlock
        Parameters:
        inputShapes - the expected shapes of the input
      • getOutputShapes

        public Shape[] getOutputShapes​(Shape[] inputs)
        Returns the expected output shapes of the block for the specified input shapes.
        Parameters:
        inputs - the shapes of the inputs
        Returns:
        the expected output shapes of the block
      • loadMetadata

        public void loadMetadata​(byte loadVersion,
                                 java.io.DataInputStream is)
                          throws java.io.IOException,
                                 MalformedModelException
        Overwrite this to load additional metadata with the parameter values.

        If you overwrite AbstractBaseBlock.saveMetadata(DataOutputStream) or need to provide backward compatibility to older binary formats, you prabably need to overwrite this. This default implementation checks if the version number fits, if not it throws an MalformedModelException. After that it restores the input shapes.

        Overrides:
        loadMetadata in class AbstractBaseBlock
        Parameters:
        loadVersion - the version used for loading this metadata.
        is - the input stream we are loading from
        Throws:
        java.io.IOException - loading failed
        MalformedModelException - data can be loaded but has wrong format