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] -
Применяет 3D свёртку к входному сигналу, состоящему из нескольких входных плоскостей.
В простейшем случае выходное значение слоя с размером входных данных и выходными данными можно точно описать как:
где - оператор валидной 3D взаимной корреляции
Этот модуль поддерживает TensorFloat32.
На некоторых устройствах ROCm, при использовании входных данных с плавающей запятой 16-го порядка, этот модуль будет использовать разную точность для обратного распространения.
-
strideопределяет шаг для взаимной корреляции. -
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используется для измерения глубины, второеintдля измерения высоты, а третьеintдля измерения ширины;
Примечание
Когда
groups == in_channelsиout_channels == K * in_channels, гдеKявляется положительным целым числом, эта операция также известна как «глубинная свёртка».Другими словами, для входных данных размером , глубинная свёртка с коэффициентом
Kможет быть выполнена с аргументами .Примечание
В некоторых случаях, при использовании тензоров на устройстве CUDA и CuDNN, этот оператор может выбрать недетерминированный алгоритм для повышения производительности. Если это нежелательно, можно попытаться сделать операцию детерминированной (возможно, с затратами на производительность) путём установки
torch.backends.cudnn.deterministic = True. Подробнее см. Воспроизводимость.Примечание
padding='valid'равносильно отсутствию заполнения.padding='same'заполняет входные данные так, чтобы размер выходных данных соответствовал размеру входных данных. Однако этот режим не поддерживает значения шага, отличные от 1.Примечание
Этот модуль поддерживает комплексные типы данных, т.е.
complex32, complex64, complex128.- Параметры
-
- in_channels (int) – Количество каналов в входном изображении
- out_channels (int) – Количество каналов, генерируемых свёрткой
- kernel_size (int или кортеж) – Размер свёрточного ядра
- stride (int или кортеж, необязательно) – Шаг свёртки. По умолчанию: 1
- padding (int, кортеж или строка, необязательно) – Заполнение, добавляемое ко всем шести сторонам входных данных. По умолчанию: 0
-
padding_mode (строка, необязательно) –
'zeros','reflect','replicate'или'circular'. По умолчанию:'zeros' - dilation (int или кортеж, необязательно) – Расстояние между элементами ядра. По умолчанию: 1
- groups (int, необязательно) – Количество блокированных соединений от входных каналов к выходным каналам. По умолчанию: 1
-
bias (bool, необязательно) – Если
True, добавляет обучаемый смещение к выходу. По умолчанию:True
-
- Форма:
-
- Вход: или
-
Выход: или , где
- Переменные
Примеры:
>>> # 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)
© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/2.1/generated/torch.nn.Conv3d.html