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могут быть:- одним значением – в этом случае одно и то же значение используется для глубины, высоты и ширины;
- кортежем из трёх целых чисел – в этом случае первое значение используется для глубины, второе – для высоты, а третье – для ширины;
Примечание
Когда
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.- Parameters:
-
- in_channels (int) – Количество каналов на входном изображении
- out_channels (int) – Количество каналов, производимых сверткой
- kernel_size (int or tuple) – Размер ядра свертки
- stride (int or tuple, optional) – Шаг свертки. По умолчанию: 1
- padding (int, tuple or str, optional) – Заполнение, добавляемое ко всем шести сторонам входа. По умолчанию: 0
-
padding_mode (str, optional) –
'zeros','reflect','replicate'или'circular'. По умолчанию:'zeros' - dilation (int or tuple, optional) – Расстояние между элементами ядра. По умолчанию: 1
- groups (int, optional) – Количество блочных соединений от входных каналов к выходным каналам. По умолчанию: 1
-
bias (bool, optional) – Если
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/1.13/generated/torch.nn.Conv3d.html