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