目录
torch.nn.functional子模块Pooling层详解
torch.nn.functional.avg_pool1d
是 PyTorch 库中的一个函数,用于在一维输入信号上应用平均池化。平均池化是一种降低数据维度、提取特征的常用操作,特别适用于信号处理和时间序列数据。
avg_pool1d
主要用于减小数据的尺寸,同时保留重要信息。通过在输入数据上滑动一个固定大小的窗口,并计算窗口内的平均值来实现。(minibatch, in_channels, iW)
的输入张量。(kW,)
。(sW,)
。默认值是 kernel_size
。(padW,)
。默认值是 0。True
时,使用 ceil
而不是 floor
来计算输出形状。默认值是 False
。True
时,将零填充包括在平均计算中。默认值是 True
。kernel_size
和 stride
可以改变输出数据的大小和特征。ceil_mode
的选择会影响输出的尺寸,可能导致不同的结果。import torch
import torch.nn.functional as F
# 示例输入,一个一维信号
input = torch.tensor([[[1, 2, 3, 4, 5, 6, 7]]], dtype=torch.float32)
# 应用平均池化,窗口大小为3,步长为2
output = F.avg_pool1d(input, kernel_size=3, stride=2)
print(output)
这段代码首先创建了一个一维的张量作为输入,然后应用了大小为3、步长为2的平均池化。输出结果将是每个窗口内元素的平均值。?
torch.nn.functional.avg_pool2d
是 PyTorch 库中的一个函数,用于在二维输入信号上实施平均池化操作。这种操作广泛应用于图像处理和计算机视觉领域,特别是在卷积神经网络中,用于降低特征图的空间维度,同时保留关键信息。
avg_pool2d
通过在输入数据上应用一个固定大小的窗口,并计算该窗口内所有元素的平均值,从而实现数据降维和特征提取。avg_pool2d
用于减小特征图的空间尺寸,有助于减少模型参数和计算量,同时帮助防止过拟合。(minibatch, in_channels, iH, iW)
的输入张量。(kH, kW)
。(sH, sW)
。默认值是 kernel_size
。(padH, padW)
。默认值是 0。True
时,计算输出形状时将使用 ceil
而非 floor
方法。默认值是 False
。True
时,平均计算中将包括零填充。默认值是 True
。None
。kernel_size
和 stride
可以控制输出特征图的大小。ceil_mode
和 count_include_pad
的设置会影响池化操作的结果。divisor_override
参数允许自定义池化过程中的除数,可以用于特殊的池化策略。import torch
import torch.nn.functional as F
# 示例输入,一个二维信号(例如图像)
input = torch.tensor([[[[1, 2, 3], [4, 5, 6], [7, 8, 9]]]], dtype=torch.float32)
# 应用平均池化,池化区域大小为2x2,步长为2
output = F.avg_pool2d(input, kernel_size=2, stride=2)
print(output)
在这个例子中,我们创建了一个二维张量作为输入,然后应用了大小为2x2、步长为2的平均池化。输出结果将是每个池化区域内元素的平均值。?
torch.nn.functional.avg_pool3d
是 PyTorch 中的一个函数,用于在三维输入信号上执行平均池化操作。这种操作在处理三维数据(如体积图像或视频序列)时非常有用,它可以减小数据的尺寸,同时保留关键信息。
avg_pool3d
通过在输入数据上应用一个固定大小的三维窗口,并计算该窗口内所有元素的平均值来实现降维和特征提取。avg_pool3d
用于减少数据的空间或时间维度,有助于降低模型的参数数量和计算成本,并帮助防止过拟合。(minibatch, in_channels, iT, iH, iW)
的输入张量。(kT, kH, kW)
。(sT, sH, sW)
。默认值是 kernel_size
。(padT, padH, padW)
。默认值是 0。True
时,计算输出形状时将使用 ceil
而非 floor
方法。True
时,平均计算中将包括零填充。None
。kernel_size
、stride
和 padding
,可以控制输出数据的大小和特征。ceil_mode
、count_include_pad
和 divisor_override
的设置会影响池化操作的结果。import torch
import torch.nn.functional as F
# 示例输入,一个三维信号
input = torch.rand(1, 1, 10, 10, 10) # 随机生成的输入张量
# 应用平均池化,池化区域大小为2x2x2,步长为2
output = F.avg_pool3d(input, kernel_size=2, stride=2)
print(output)
这段代码创建了一个三维的随机张量作为输入,然后应用了大小为2x2x2、步长为2的平均池化。输出结果将是每个池化区域内元素的平均值。这种操作在处理具有时间维度的数据或更高维度的图像数据时特别有用。?
torch.nn.functional.max_pool1d
是 PyTorch 中用于一维输入信号的最大池化操作的函数。最大池化是一种常见的特征提取操作,它在处理时间序列数据或一维信号时非常有用。
max_pool1d
通过在输入数据上应用一个固定大小的窗口,并从该窗口内选择最大值,从而实现特征降维和突出重要特征。(minibatch, in_channels, iW)
的输入张量。minibatch
维度是可选的。(kW,)
。(sW,)
。默认值是 kernel_size
。0
和 kernel_size / 2
之间。0
。True
,将使用 ceil
而非 floor
来计算输出形状。这确保了输入张量的每个元素都被滑动窗口覆盖。True
,将返回最大值的位置索引。这在以后使用 torch.nn.functional.max_unpool1d
时非常有用。kernel_size
和 stride
可以影响输出数据的尺寸和特征。padding
、dilation
和 ceil_mode
的设置会影响池化操作的结果。return_indices
选项可以用于在后续操作中恢复池化前的数据结构。import torch
import torch.nn.functional as F
# 示例输入,一个一维信号
input = torch.tensor([[[1, 2, 3, 4, 5, 6, 7]]], dtype=torch.float32)
# 应用最大池化,窗口大小为3,步长为2
output = F.max_pool1d(input, kernel_size=3, stride=2)
print(output)
这段代码创建了一个一维的张量作为输入,然后应用了大小为3、步长为2的最大池化。输出结果将是每个窗口内的最大值。这种操作在提取时间序列数据的关键特征时特别有效。?
torch.nn.functional.max_pool2d
是 PyTorch 库中的一个函数,用于在二维输入信号上实施最大池化操作。最大池化是一种常用的特征提取操作,尤其在处理图像或二维数据时非常有用。
max_pool2d
通过在输入数据上应用一个固定大小的二维窗口,并从该窗口内选择最大值,来实现特征降维和突出重要特征。(minibatch, in_channels, iH, iW)
的输入张量。minibatch
维度是可选的。(kH, kW)
。(sH, sW)
。默认值是 kernel_size
。0
和 kernel_size / 2
之间。0
。True
,将使用 ceil
而非 floor
来计算输出形状。这确保了输入张量的每个元素都被滑动窗口覆盖。True
,将返回最大值的位置索引。这在以后使用 torch.nn.functional.max_unpool2d
时非常有用。kernel_size
和 stride
可以影响输出数据的尺寸和特征。padding
、dilation
和 ceil_mode
的设置会影响池化操作的结果。return_indices
选项可以用于在后续操作中恢复池化前的数据结构。import torch
import torch.nn.functional as F
# 示例输入,一个二维信号(例如图像)
input = torch.tensor([[[[1, 2, 3], [4, 5, 6], [7, 8, 9]]]], dtype=torch.float32)
# 应用最大池化,池化区域大小为2x2,步长为2
output = F.max_pool2d(input, kernel_size=2, stride=2)
print(output)
?这段代码创建了一个二维的张量作为输入,然后应用了大小为2x2、步长为2的最大池化。输出结果将是每个池化区域内的最大值。这种操作在提取图像中的关键特征时特别有效。
torch.nn.functional.max_pool3d
是 PyTorch 库中的一个函数,用于对三维输入信号进行最大池化操作。这种操作在处理三维数据(如体积图像、视频序列)时非常有用,能够减小数据的尺寸,同时突出重要特征。
max_pool3d
通过在输入数据上应用一个固定大小的三维窗口,并从该窗口内选择最大值,来实现特征降维和突出重要特征。(minibatch, in_channels, iD, iH, iW)
的输入张量。minibatch
维度是可选的。(kT, kH, kW)
。(sT, sH, sW)
。默认值是 kernel_size
。0
和 kernel_size / 2
之间。0
。True
,将使用 ceil
而非 floor
来计算输出形状。这确保了输入张量的每个元素都被滑动窗口覆盖。True
,将返回最大值的位置索引。这在以后使用 torch.nn.functional.max_unpool3d
时非常有用。kernel_size
和 stride
可以影响输出数据的尺寸和特征。padding
、dilation
和 ceil_mode
的设置会影响池化操作的结果。return_indices
选项可以用于在后续操作中恢复池化前的数据结构。import torch
import torch.nn.functional as F
# 示例输入,一个三维信号
input = torch.rand(1, 1, 10, 10, 10) # 随机生成的输入张量
# 应用最大池化,池化区域大小为2x2x2,步长为2
output = F.max_pool3d(input, kernel_size=2, stride=2)
print(output)
这段代码创建了一个三维的随机张量作为输入,然后应用了大小为2x2x2、步长为2的最大池化。输出结果将是每个池化区域内的最大值。这种操作在提取三维数据的关键特征时特别有效。?
torch.nn.functional.max_unpool1d
是 PyTorch 库中用于计算 MaxPool1d
的部分逆操作的函数。这个函数主要用于将通过 MaxPool1d
操作减小的一维数据重新上采样(即还原)到接近原始尺寸的形状。
max_unpool1d
通过使用 MaxPool1d
操作中保存的最大值的索引(indices
),将数据“展开”回更接近原始尺寸的形状。这个过程常用于卷积神经网络(CNN)中的上采样阶段。MaxPool1d
操作后的输入张量。MaxPool1d
操作中得到的最大值索引,用于指导上采样过程。kernel_size
。input
和 indices
来自相同的 MaxPool1d
操作。kernel_size
、stride
和 padding
,以确保上采样结果的正确性。output_size
,需要确保它与期望的上采样结果尺寸相匹配。import torch
import torch.nn.functional as F
# 示例输入和池化操作
input = torch.tensor([[[1, 2, 3, 4, 5, 6, 7]]], dtype=torch.float32)
input, indices = F.max_pool1d(input, kernel_size=2, stride=2, return_indices=True)
# 应用 max_unpool1d 进行上采样
output = F.max_unpool1d(input, indices, kernel_size=2, stride=2)
print(output)
?在这个例子中,首先应用了 max_pool1d
来对输入数据进行下采样,并保存了最大值的索引。然后,使用 max_unpool1d
以及这些索引来上采样数据,尝试还原到接近其原始尺寸的形状。
torch.nn.functional.max_unpool2d
是 PyTorch 中的一个函数,它实现了 MaxPool2d
操作的部分逆过程。这种函数主要用于将经过 MaxPool2d
减小的二维数据重新上采样(即还原)到接近原始尺寸的形状。
max_unpool2d
使用 MaxPool2d
操作时保留的最大值的索引(indices
),将数据“展开”回更接近原始尺寸的形状。这个过程常用于卷积神经网络(CNN)中的上采样阶段。MaxPool2d
操作后的输入张量。MaxPool2d
操作中得到的最大值索引,用于指导上采样过程。kernel_size
。input
和 indices
来自相同的 MaxPool2d
操作。kernel_size
、stride
和 padding
,以确保上采样结果的正确性。output_size
,需要确保它与期望的上采样结果尺寸相匹配。import torch
import torch.nn.functional as F
# 示例输入和池化操作
input = torch.tensor([[[[1, 2, 3], [4, 5, 6], [7, 8, 9]]]], dtype=torch.float32)
input, indices = F.max_pool2d(input, kernel_size=2, stride=2, return_indices=True)
# 应用 max_unpool2d 进行上采样
output = F.max_unpool2d(input, indices, kernel_size=2, stride=2)
print(output)
?在这个例子中,首先应用了 max_pool2d
来对输入数据进行下采样,并保存了最大值的索引。然后,使用 max_unpool2d
以及这些索引来上采样数据,尝试还原到接近其原始尺寸的形状。
torch.nn.functional.max_unpool3d
是 PyTorch 库中的一个函数,用于实现 MaxPool3d
操作的部分逆过程。这个函数主要应用于将经过 MaxPool3d
操作降维的三维数据重新上采样(即还原)到更接近原始尺寸的形状。
max_unpool3d
利用在 MaxPool3d
操作中获得的最大值的索引(indices
),将数据“展开”回原来更大的尺寸。这在卷积神经网络(CNN)的上采样阶段特别有用。max_unpool3d
非常有用。例如,在处理三维医学图像或视频数据时,它可以用于还原数据的空间结构。MaxPool3d
操作后的输入张量。MaxPool3d
操作中得到的最大值索引,用于指导上采样过程。kernel_size
。input
和 indices
来自相同的 MaxPool3d
操作。kernel_size
、stride
和 padding
,以确保上采样结果的正确性。output_size
,需要确保它与期望的上采样结果尺寸相匹配。import torch
import torch.nn.functional as F
# 示例输入和池化操作
input = torch.rand(1, 1, 4, 4, 4) # 随机生成的输入张量
input, indices = F.max_pool3d(input, kernel_size=2, stride=2, return_indices=True)
# 应用 max_unpool3d 进行上采样
output = F.max_unpool3d(input, indices, kernel_size=2, stride=2)
print(output)
在这个例子中,首先应用了 max_pool3d
来对输入数据进行下采样,并保存了最大值的索引。然后,使用 max_unpool3d
以及这些索引来上采样数据,尝试还原到接近其原始尺寸的形状。这对于三维数据的处理尤其有用,例如在医学图像分析或视频处理中。?
torch.nn.functional.lp_pool1d
是 PyTorch 中的一个函数,用于在一维输入信号上应用 Lp 池化(Lp-pooling)。Lp 池化是一种通用的池化操作,它包括平均池化和最大池化作为特例(分别对应于 L1 和 L∞ 池化)。
lp_pool1d
通过计算输入信号中一定区域内的所有元素的 Lp 范数来实现池化。Lp 范数是一种度量向量元素绝对值的方法,其中 p 是一个正实数。(minibatch, in_channels, iW)
的输入张量。kernel_size
。True
,将使用 ceil
而非 floor
来计算输出形状。input
的尺寸和类型符合预期。norm_type
可以根据具体的应用场景调整池化的行为。kernel_size
和 stride
可以控制输出的尺寸。import torch
import torch.nn.functional as F
# 示例输入,一个一维信号
input = torch.tensor([[[1, 2, 3, 4, 5, 6, 7]]], dtype=torch.float32)
# 应用 Lp 池化,L2 范数,窗口大小为3,步长为2
output = F.lp_pool1d(input, norm_type=2, kernel_size=3, stride=2)
print(output)
?在这个例子中,我们应用了 L2 范数的 Lp 池化,其中窗口大小为 3,步长为 2。这种类型的池化有助于在保留重要信号特征的同时降低数据维度。
torch.nn.functional.lp_pool2d
是 PyTorch 中的一个函数,用于在二维输入信号上实施 Lp 池化(Lp-pooling)。Lp 池化是一种更通用的池化方法,它包括了平均池化和最大池化作为其特例。
lp_pool2d
通过计算输入信号中的每个固定大小区域内所有元素的 Lp 范数来实现池化。这里的 Lp 范数是指向量元素绝对值的 p 次方和的 p 次方根。(minibatch, in_channels, iH, iW)
的输入张量。(kH, kW)
。(sH, sW)
。如果未指定,则默认为 kernel_size
。True
,将使用 ceil
而非 floor
来计算输出形状。norm_type
可以根据具体应用场景调整池化的行为。kernel_size
和 stride
可以控制输出数据的尺寸。import torch
import torch.nn.functional as F
# 示例输入,一个二维信号(例如图像)
input = torch.tensor([[[[1, 2, 3], [4, 5, 6], [7, 8, 9]]]], dtype=torch.float32)
# 应用 Lp 池化,L2 范数,池化区域大小为2x2
output = F.lp_pool2d(input, norm_type=2, kernel_size=2)
print(output)
在这个例子中,我们应用了 L2 范数的 Lp 池化,其中池化区域大小为 2x2。这种类型的池化有助于在保留重要图像特征的同时降低数据维度。
torch.nn.functional.adaptive_max_pool1d
是 PyTorch 中的一个函数,用于在一维输入信号上实施自适应最大池化操作。自适应池化是一种特殊类型的池化,它能够独立于输入尺寸,输出固定大小的特征图。
adaptive_max_pool1d
通过调整池化窗口的大小来确保输出特征图具有指定的目标尺寸。这意味着它可以处理各种尺寸的输入,而输出始终保持一致的尺寸。(minibatch, in_channels, iW)
的输入张量。False
。return_indices
为 True
,函数将返回最大值的索引,这对于某些特殊应用(如上采样操作)可能很有用。import torch
import torch.nn.functional as F
# 示例输入,一个一维信号
input = torch.tensor([[[1, 2, 3, 4, 5, 6, 7, 8, 9]]], dtype=torch.float32)
# 应用自适应最大池化,目标输出长度为5
output = F.adaptive_max_pool1d(input, output_size=5)
print(output)
在这个例子中,输入是一个长度为 9 的一维信号,而目标输出长度被设定为 5。adaptive_max_pool1d
会自动调整池化窗口的大小和步长,使得输出特征图的长度为 5。这对于需要固定尺寸输出的应用场景非常有用。?
torch.nn.functional.adaptive_max_pool2d
是 PyTorch 库中的一个函数,用于在二维输入信号上执行自适应最大池化操作。这种池化操作可以适应不同大小的输入,输出固定大小的特征图。
adaptive_max_pool2d
通过自动调整池化窗口的大小和步长,从而确保无论输入信号的尺寸如何,输出特征图都具有指定的目标尺寸。(minibatch, in_channels, iH, iW)
的输入张量。(oH, oW)
。False
。return_indices
为 True
,函数将返回最大值的索引,这对于某些特殊应用(如上采样操作)可能很有用。import torch
import torch.nn.functional as F
# 示例输入,一个二维信号(例如图像)
input = torch.rand(1, 1, 8, 8) # 随机生成一个 8x8 的输入张量
# 应用自适应最大池化,目标输出尺寸为 (4, 4)
output = F.adaptive_max_pool2d(input, output_size=(4, 4))
print(output)
在这个例子中,输入是一个 8x8 的二维信号,目标输出尺寸被设定为 4x4。adaptive_max_pool2d
会自动调整池化窗口的大小和步长,以确保输出特征图的尺寸为 4x4。这种方法在需要将不同尺寸的输入标准化到相同尺寸输出的场景中非常有用。?
torch.nn.functional.adaptive_max_pool3d
是 PyTorch 库中的一个函数,用于在三维输入信号上进行自适应最大池化操作。这种池化技术可以适应不同大小的输入,生成固定大小的输出特征图。
adaptive_max_pool3d
自动调整池化窗口的大小和步长,以确保输出特征图符合指定的目标尺寸,独立于输入信号的原始尺寸。(minibatch, in_channels, iD, iH, iW)
的输入张量。(oD, oH, oW)
。False
。return_indices
为 True
,函数会返回最大值的索引,这在某些特定应用中(例如在后续步骤中进行上采样操作)可能非常有用。import torch
import torch.nn.functional as F
# 示例输入,一个三维信号
input = torch.rand(1, 1, 8, 8, 8) # 随机生成一个 8x8x8 的输入张量
# 应用自适应最大池化,目标输出尺寸为 (4, 4, 4)
output = F.adaptive_max_pool3d(input, output_size=(4, 4, 4))
print(output)
?在这个例子中,输入是一个 8x8x8 的三维信号,目标输出尺寸被设定为 4x4x4。adaptive_max_pool3d
会自动调整池化窗口的大小和步长,以确保输出特征图的尺寸为 4x4x4。这种方法在需要将不同尺寸的输入标准化为相同尺寸输出的场景中非常有用。
torch.nn.functional.adaptive_avg_pool1d
是 PyTorch 库中的一个函数,用于对一维输入信号执行自适应平均池化操作。这种池化方法允许输入信号有不同的长度,但可以输出统一大小的特征表示。
adaptive_avg_pool1d
通过自动调整池化窗口的大小来生成指定长度的输出,无论输入信号的原始长度如何。(minibatch, in_channels, iW)
的输入张量。import torch
import torch.nn.functional as F
# 示例输入,一个一维信号
input = torch.tensor([[[1, 2, 3, 4, 5, 6, 7, 8, 9]]], dtype=torch.float32)
# 应用自适应平均池化,目标输出长度为5
output = F.adaptive_avg_pool1d(input, output_size=5)
print(output)
?在这个例子中,输入是一个长度为 9 的一维信号,而目标输出长度被设定为 5。adaptive_avg_pool1d
会自动调整池化窗口的大小,以确保输出特征图的长度为 5。这种方法在需要处理不同长度输入数据的应用场景中非常有用。
torch.nn.functional.adaptive_avg_pool2d
是 PyTorch 库中用于执行二维自适应平均池化操作的函数。这个操作允许对具有不同尺寸的输入图像执行池化操作,同时生成具有固定尺寸的输出。
adaptive_avg_pool2d
通过自动调整池化窗口的大小和步长,实现从不同尺寸的输入图像到固定尺寸输出的转换。(minibatch, in_channels, iH, iW)
的输入张量。(oH, oW)
。output_size
时,输出特征图将是一个正方形,其大小由该整数指定。import torch
import torch.nn.functional as F
# 示例输入,一个二维信号(例如图像)
input = torch.rand(1, 1, 8, 8) # 随机生成一个 8x8 的输入张量
# 应用自适应平均池化,目标输出尺寸为 (4, 4)
output = F.adaptive_avg_pool2d(input, output_size=(4, 4))
print(output)
?在这个例子中,输入是一个 8x8 的二维信号,目标输出尺寸被设定为 4x4。adaptive_avg_pool2d
会自动调整池化窗口的大小和步长,以确保输出特征图的尺寸为 4x4。这种方法在需要将不同尺寸的输入标准化为相同尺寸输出的场景中非常有用。
torch.nn.functional.adaptive_avg_pool3d
是 PyTorch 库中的一个函数,用于对三维输入信号执行自适应平均池化操作。这种操作允许对具有不同尺寸的三维数据(如体积图像或视频序列)进行池化处理,同时生成具有固定尺寸的输出。
adaptive_avg_pool3d
通过自动调整池化窗口的大小和步长,实现从不同尺寸的输入到固定尺寸输出的转换。(minibatch, in_channels, iD, iH, iW)
的输入张量。(oD, oH, oW)
。output_size
时,输出特征图将是一个立方体,其大小由该整数指定。import torch
import torch.nn.functional as F
# 示例输入,一个三维信号
input = torch.rand(1, 1, 8, 8, 8) # 随机生成一个 8x8x8 的输入张量
# 应用自适应平均池化,目标输出尺寸为 (4, 4, 4)
output = F.adaptive_avg_pool3d(input, output_size=(4, 4, 4))
print(output)
在这个例子中,输入是一个 8x8x8 的三维信号,目标输出尺寸被设定为 4x4x4。adaptive_avg_pool3d
会自动调整池化窗口的大小和步长,以确保输出特征图的尺寸为 4x4x4。这种方法在需要将不同尺寸的输入标准化为相同尺寸输出的场景中非常有用。?
torch.nn.functional.fractional_max_pool2d
是 PyTorch 库中的一个函数,用于对二维输入信号执行分数最大池化操作。这种池化操作与传统的最大池化不同,它允许使用随机或非整数步长,从而产生非标准尺寸的输出。
fractional_max_pool2d
通过使用随机或分数步长在输入上进行池化,以生成目标输出尺寸或与输入尺寸成比例的输出。(minibatch, in_channels, iH, iW)
的输入张量。(kH, kW)
。(oH, oW)
。也可以是单个整数,用于创建正方形输出。True
,将返回池化过程中最大值的索引,可用于后续的 max_unpool2d
操作。kernel_size
、output_size
或 output_ratio
,以达到期望的池化效果。max_unpool2d
进行反池化操作,需要设置 return_indices
为 True
。import torch
import torch.nn.functional as F
# 示例输入
input = torch.randn(20, 16, 50, 32)
# 应用分数最大池化,窗口大小为3,目标输出尺寸为 13x12
output = F.fractional_max_pool2d(input, kernel_size=3, output_size=(13, 12))
# 应用分数最大池化,窗口大小为3,输出尺寸为输入尺寸的一半
output_ratio = F.fractional_max_pool2d(input, kernel_size=3, output_ratio=(0.5, 0.5))
?在这些示例中,输入是一个具有随机值的张量,我们应用了分数最大池化来减小其尺寸。第一个例子直接指定了输出尺寸,而第二个例子使用了输出比例来决定输出尺寸。这种方法为特征提取提供了更多的灵活性。
torch.nn.functional.fractional_max_pool3d
是 PyTorch 库中的一个函数,用于在三维输入信号上实施分数最大池化操作。这种池化操作与传统的最大池化不同,它允许使用随机或非整数的步长,从而产生非标准尺寸的输出。
fractional_max_pool3d
通过使用随机或分数步长在输入上进行池化,以生成目标输出尺寸或与输入尺寸成比例的输出。(N, C, T_in, H_in, W_in)
或 (C, T_in, H_in, W_in)
的输入张量。(kT, kH, kW)
。(oT, oH, oW)
。也可以是单个整数,用于创建立方体输出。True
,将返回池化过程中最大值的索引,可用于后续的 max_unpool3d
操作。kernel_size
、output_size
或 output_ratio
,以达到期望的池化效果。max_unpool3d
进行反池化操作,需要设置 return_indices
为 True
。import torch
import torch.nn.functional as F
# 示例输入
input = torch.randn(20, 16, 50, 32, 16)
# 应用分数最大池化,窗口大小为3,目标输出尺寸为 13x12x11
output = F.fractional_max_pool3d(input, kernel_size=3, output_size=(13, 12, 11))
# 应用分数最大池化,窗口大小为3,输出尺寸为输入尺寸的一半
output_ratio = F.fractional_max_pool3d(input, kernel_size=3, output_ratio=(0.5, 0.5, 0.5))
?在这些示例中,输入是一个具有随机值的张量,我们应用了分数最大池化来减小其尺寸。第一个例子直接指定了输出尺寸,而第二个例子使用了输出比例来决定输出尺寸。这种方法为特征提取提供了更多的灵活性。
在 PyTorch 中,池化层函数是卷积神经网络(CNN)中的重要组成部分,用于降维、特征提取和防止过拟合。这些函数包括不同类型和维度的池化操作,如平均池化、最大池化和自适应池化,适用于处理一维、二维和三维数据。每种池化操作都有其特定的应用场景和参数设置,提供了灵活性以适应不同的深度学习需求。