Rate this Page

Conv1d#

classtorch.nn.modules.conv.Conv1d(in_channels,out_channels,kernel_size,stride=1,padding=0,dilation=1,groups=1,bias=True,padding_mode='zeros',device=None,dtype=None)[source]#

Applies a 1D convolution over an input signal composed of several inputplanes.

In the simplest case, the output value of the layer with input size(N,Cin,L)(N, C_{\text{in}}, L) and output(N,Cout,Lout)(N, C_{\text{out}}, L_{\text{out}}) can beprecisely described as:

out(Ni,Coutj)=bias(Coutj)+k=0Cin1weight(Coutj,k)input(Ni,k)\text{out}(N_i, C_{\text{out}_j}) = \text{bias}(C_{\text{out}_j}) +\sum_{k = 0}^{C_{in} - 1} \text{weight}(C_{\text{out}_j}, k)\star \text{input}(N_i, k)

where\star is the validcross-correlation operator,NN is a batch size,CC denotes a number of channels,LL is a length of signal sequence.

This module supportsTensorFloat32.

On certain ROCm devices, when using float16 inputs this module will usedifferent precision for backward.

  • stride controls the stride for the cross-correlation, a singlenumber or a one-element tuple.

  • padding controls the amount of padding applied to the input. Itcan be either a string {‘valid’, ‘same’} or a tuple of ints giving theamount of implicit padding applied on both sides.

  • dilation controls the spacing between the kernel points; alsoknown as the à trous algorithm. It is harder to describe, but thislinkhas a nice visualization of whatdilation does.

  • groups controls the connections between inputs and outputs.in_channels andout_channels must both be divisible bygroups. For example,

    • At groups=1, all inputs are convolved to all outputs.

    • At groups=2, the operation becomes equivalent to having two convlayers side by side, each seeing half the input channelsand producing half the output channels, and both subsequentlyconcatenated.

    • At groups=in_channels, each input channel is convolved withits own set of filters (of sizeout_channelsin_channels\frac{\text{out\_channels}}{\text{in\_channels}}).

Note

Whengroups == in_channels andout_channels == K * in_channels,whereK is a positive integer, this operation is also known as a “depthwise convolution”.

In other words, for an input of size(N,Cin,Lin)(N, C_{in}, L_{in}),a depthwise convolution with a depthwise multiplierK can be performed with the arguments(Cin=Cin,Cout=Cin×K,...,groups=Cin)(C_\text{in}=C_\text{in}, C_\text{out}=C_\text{in} \times \text{K}, ..., \text{groups}=C_\text{in}).

Note

In some circumstances when given tensors on a CUDA device and using CuDNN, this operator may select a nondeterministic algorithm to increase performance. If this is undesirable, you can try to make the operation deterministic (potentially at a performance cost) by settingtorch.backends.cudnn.deterministic=True. SeeReproducibility for more information.

Note

padding='valid' is the same as no padding.padding='same' padsthe input so the output has the shape as the input. However, this modedoesn’t support any stride values other than 1.

Note

This module supports complex data types i.e.complex32,complex64,complex128.

Parameters
  • in_channels (int) – Number of channels in the input image

  • out_channels (int) – Number of channels produced by the convolution

  • kernel_size (int ortuple) – Size of the convolving kernel

  • stride (int ortuple,optional) – Stride of the convolution. Default: 1

  • padding (int,tuple orstr,optional) – Padding added to both sides ofthe input. Default: 0

  • dilation (int ortuple,optional) – Spacing between kernelelements. Default: 1

  • groups (int,optional) – Number of blocked connections from inputchannels to output channels. Default: 1

  • bias (bool,optional) – IfTrue, adds a learnable bias to theoutput. Default:True

  • padding_mode (str,optional) –'zeros','reflect','replicate' or'circular'. Default:'zeros'

Shape:
Variables

Examples:

>>>m=nn.Conv1d(16,33,3,stride=2)>>>input=torch.randn(20,16,50)>>>output=m(input)