Conv1d¶
- class torch.nn.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][source]¶
將 1D 卷積應用於由多個輸入平面組成的輸入訊號。
在最簡單的情況下,具有輸入大小 和輸出 可以精確地描述為
此模組支援 TensorFloat32。
在某些 ROCm 裝置上,當使用 float16 輸入時,此模組將使用 不同的精度 進行反向傳播。
stride
控制互相關的步幅,可以是單一數字或單一元素的元組。padding
控制應用於輸入的填充量。它可以是字串 {'valid', 'same'},或是整數元組,表示在兩側應用的隱式填充量。dilation
控制核心點之間的間距;也稱為 à trous 演算法。它比較難以描述,但這個 連結 提供了一個很好的dilation
作用的可視化。groups
控制輸入和輸出之間的連接。in_channels
和out_channels
都必須能被groups
整除。例如,當 groups=1 時,所有輸入都會與所有輸出進行卷積。
當 groups=2 時,此操作相當於並排放置兩個卷積層,每個層都看到一半的輸入通道並產生一半的輸出通道,然後將兩者串聯起來。
當 groups=
in_channels
時,每個輸入通道都使用自己的一組濾波器進行卷積(大小為 )。
注意
當 groups == in_channels 且 out_channels == K * in_channels,其中 K 是一個正整數時,此操作也稱為“深度卷積”。
換句話說,對於大小為 的輸入,可以使用參數 執行深度卷積,乘數為 K。
注意
在某些情況下,當在 CUDA 裝置上給定 tensors 並使用 CuDNN 時,此運算子可能會選擇非決定性的演算法來提高效能。如果這是你不希望發生的,你可以嘗試將運算設定為決定性的(可能會以效能為代價),方法是設定
torch.backends.cudnn.deterministic = True
。有關更多資訊,請參閱再現性。注意
padding='valid'
等同於沒有 padding。padding='same'
會對輸入進行 padding,使輸出具有與輸入相同的形狀。但是,此模式不支援除 1 之外的任何 stride 值。注意
此模組支援複數資料類型,即
complex32, complex64, complex128
。- 參數
in_channels (int) – 輸入影像中的通道數
out_channels (int) – 卷積產生的通道數
padding (int, tuple 或 str, optional) – 加入到輸入兩側的 padding。預設值:0
groups (int, optional) – 從輸入通道到輸出通道的阻塞連接數。預設值:1
bias (bool, optional) – 如果為
True
,則將可學習的 bias 加入到輸出。預設值:True
padding_mode (str, optional) –
'zeros'
、'reflect'
、'replicate'
或'circular'
。預設值:'zeros'
- 形狀
輸入: 或
輸出: 或 ,其中
- 變數
weight ( Tensor) – 模組的可學習權重,形狀為 。 這些權重的值是從 中抽樣而來,其中
bias (Tensor) – 模組的可學習偏差,形狀為 (out_channels)。如果
bias
為True
,則這些權重的值將從 採樣,其中
範例
>>> m = nn.Conv1d(16, 33, 3, stride=2) >>> input = torch.randn(20, 16, 50) >>> output = m(input)