Fold
-
class torch.nn.modules.fold.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.modules.fold.Fold.html