Fold
-
class torch.nn.Fold(output_size, kernel_size, dilation=1, padding=0, stride=1)[исходный код] -
Объединяет массив локальных блоков со скользящим окном в большой содержащий их тензор.
Рассмотрим пакетный тензор
input, содержащий локальные блоки со скользящим окном, например фрагменты изображений, формы , где — размерность пакета, — число значений в блоке (блок содержит пространственных позиций, каждая из которых содержит вектор с каналами), а — общее число блоков. (Это в точности та же спецификация, что и для выходной формыUnfold.) Эта операция объединяет локальные блоки в большой тензорoutputформы , суммируя перекрывающиеся значения. Как и дляUnfold, аргументы должны удовлетворять условиюгде перебирает все пространственные размерности.
-
output_sizeзадаёт пространственную форму большого тензора, содержащего локальные блоки со скользящим окном. Это помогает разрешить неоднозначность в случаях, когда нескольким входным формам соответствует одинаковое число скользящих блоков, например при использованииstride > 0.
Аргументы
padding,strideиdilationзадают способ извлечения блоков со скользящим окном.-
strideзадаёт шаг перемещения скользящих блоков. -
paddingзадаёт размер неявного дополнения нулями с обеих сторон дляpaddingколичества точек в каждом измерении перед изменением формы. -
dilationзадаёт расстояние между точками ядра; этот метод также известен как алгоритм à trous. Его сложнее описать, но по этой ссылке можно посмотреть наглядную визуализацию того, что делаетdilation.
- Параметры:
-
-
output_size (int или tuple) – форма пространственных размерностей выходных данных (т. е.
output.sizes()[2:]) - kernel_size (int или tuple) – размер скользящих блоков
- dilation (int или tuple, необязательно) – параметр, задающий шаг между элементами в окрестности. По умолчанию: 1
- padding (int или tuple, необязательно) – неявное дополнение входных данных нулями с обеих сторон. По умолчанию: 0
- stride (int или tuple) – шаг скользящих блоков по пространственным размерностям входных данных. По умолчанию: 1
-
output_size (int или tuple) – форма пространственных размерностей выходных данных (т. е.
- Если
output_size,kernel_size,dilation,paddingилиstrideявляется целым числом или кортежем длины 1, его значение будет распространено на все пространственные размерности. - Для случая двух пространственных размерностей выходных данных эту операцию иногда называют
col2im.
Примечание
Foldвычисляет каждое объединённое значение в результирующем большом тензоре, суммируя значения из всех содержащих его блоков.Unfoldизвлекает значения локальных блоков, копируя их из большого тензора. Поэтому, если блоки перекрываются, эти операции не являются обратными друг другу.В общем случае операции свёртывания и развёртывания связаны следующим образом. Рассмотрим экземпляры
FoldиUnfold, созданные с одинаковыми параметрами:>>> fold_params = dict(kernel_size=..., dilation=..., padding=..., stride=...) >>> fold = nn.Fold(output_size=..., **fold_params) >>> unfold = nn.Unfold(**fold_params)
Тогда для любого (поддерживаемого) тензора
inputвыполняется следующее равенство:fold(unfold(input)) == divisor * input
где
divisor— тензор, зависящий только от формы и типа данныхinput:>>> input_ones = torch.ones(input.shape, dtype=input.dtype) >>> divisor = fold(unfold(input_ones))
Если тензор
divisorне содержит нулевых элементов, то операцииfoldиunfoldявляются обратными друг другу (с точностью до постоянного делителя).Предупреждение
В настоящее время поддерживаются только выходные тензоры в форме изображений без пакета (3D) или с пакетом (4D).
- Форма:
-
- Вход: или
- Выход: или , как описано выше
Примеры:
>>> fold = nn.Fold(output_size=(4, 5), kernel_size=(2, 2)) >>> input = torch.randn(1, 3 * 2 * 2, 12) >>> output = fold(input) >>> output.size() torch.Size([1, 3, 4, 5])
-
extra_repr()[исходный код] -
Возвращает дополнительное представление модуля.
- Тип возвращаемого значения:
-
forward(input)[исходный код] -
Выполняет прямой проход.
- Тип возвращаемого значения:
-
© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/generated/torch.nn.Fold.html