Class Conv1d

All Implemented Interfaces:
Block

public class Conv1d extends Convolution
A Conv1d layer works similar to Convolution layer with the exception of the number of dimension it operates on being only one, which is LayoutType.WIDTH. The channel of the input data may be more than one, depending on what data is processed. Each filter slides through the data with only one direction of movement along the dimension itself.

Commonly, this kind of convolution layer, as proposed in this paper is used in tasks utilizing serial data, enabling convolutional processing of 1-dimensional data such as time-series data (stock price, weather, ECG) and text/speech data without the need of transforming it to 2-dimensional data to be processed by Conv2d, though this is quite a common technique as well.

The input to a Conv1d is an NDList with a single 3-D NDArray. The layout of the NDArray must be "NCW". The shapes are

  • data: (batch_size, channel, width)
  • weight: (num_filter, channel, kernel[0])
  • bias: (num_filter,)
  • out: (batch_size, num_filter, out_width)
    out_width = f(width, kernel[0], pad[0], stride[0], dilate[0])
    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:
  • Method Details

    • 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 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
    • conv1d

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

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

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

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

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

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

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