目錄
torch.nn.functional子模塊Pooling層詳解
avg_pool1d
用法與用途
參數(shù)
注意事項
示例代碼
avg_pool2d
用法與用途
參數(shù)
注意事項
示例代碼
avg_pool3d
用法與用途
參數(shù)
注意事項
示例代碼
max_pool1d
用法與用途
參數(shù)
注意事項
示例代碼
max_pool2d
用法與用途
參數(shù)
注意事項
示例代碼
max_pool3d
用法與用途
參數(shù)
注意事項
示例代碼
max_unpool1d
用法與用途
參數(shù)
注意事項
示例代碼
max_unpool2d
用法與用途
參數(shù)
注意事項
示例代碼
max_unpool3d
用法與用途
參數(shù)
注意事項
示例代碼
lp_pool1d
用法與用途
參數(shù)
注意事項
示例代碼
lp_pool2d
用法與用途
參數(shù)
注意事項
示例代碼
adaptive_max_pool1d
用法與用途
參數(shù)
注意事項
示例代碼
adaptive_max_pool2d
用法與用途
參數(shù)
注意事項
示例代碼
adaptive_max_pool3d
用法與用途
參數(shù)
注意事項
示例代碼
adaptive_avg_pool1d
用法與用途
參數(shù)
注意事項
示例代碼
adaptive_avg_pool2d
用法與用途
參數(shù)
注意事項
示例代碼
adaptive_avg_pool3d
用法與用途
參數(shù)
注意事項
示例代碼
fractional_max_pool2d
用法與用途
參數(shù)
注意事項
示例代碼
fractional_max_pool3d
用法與用途
參數(shù)
注意事項
示例代碼
總結(jié)
torch.nn.functional子模塊Pooling層詳解
avg_pool1d
torch.nn.functional.avg_pool1d
是 PyTorch 庫中的一個函數(shù),用于在一維輸入信號上應用平均池化。平均池化是一種降低數(shù)據(jù)維度、提取特征的常用操作,特別適用于信號處理和時間序列數(shù)據(jù)。
用法與用途
-
用法:
avg_pool1d
主要用于減小數(shù)據(jù)的尺寸,同時保留重要信息。通過在輸入數(shù)據(jù)上滑動一個固定大小的窗口,并計算窗口內(nèi)的平均值來實現(xiàn)。 - 用途: 在深度學習中,這個操作常用于降低特征圖的維度,減少參數(shù)數(shù)量,從而減少計算量和防止過擬合。
參數(shù)
-
input: 形狀為
(minibatch, in_channels, iW)
的輸入張量。 -
kernel_size: 窗口的大小,可以是單個數(shù)字或元組
(kW,)
。 -
stride: 窗口的步長,可以是單個數(shù)字或元組
(sW,)
。默認值是kernel_size
。 -
padding: 輸入兩側(cè)的隱式零填充數(shù)量,可以是單個數(shù)字或元組
(padW,)
。默認值是 0。 -
ceil_mode: 當為
True
時,使用ceil
而不是floor
來計算輸出形狀。默認值是False
。 -
count_include_pad: 當為
True
時,將零填充包括在平均計算中。默認值是True
。
注意事項
- 確保輸入數(shù)據(jù)的維度與函數(shù)要求相符。
- 調(diào)整
kernel_size
和stride
可以改變輸出數(shù)據(jù)的大小和特征。 -
ceil_mode
的選擇會影響輸出的尺寸,可能導致不同的結(jié)果。
示例代碼
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)
這段代碼首先創(chuàng)建了一個一維的張量作為輸入,然后應用了大小為3、步長為2的平均池化。輸出結(jié)果將是每個窗口內(nèi)元素的平均值。?
avg_pool2d
torch.nn.functional.avg_pool2d
是 PyTorch 庫中的一個函數(shù),用于在二維輸入信號上實施平均池化操作。這種操作廣泛應用于圖像處理和計算機視覺領域,特別是在卷積神經(jīng)網(wǎng)絡中,用于降低特征圖的空間維度,同時保留關(guān)鍵信息。
用法與用途
-
用法:
avg_pool2d
通過在輸入數(shù)據(jù)上應用一個固定大小的窗口,并計算該窗口內(nèi)所有元素的平均值,從而實現(xiàn)數(shù)據(jù)降維和特征提取。 -
用途: 在深度學習中,尤其是卷積神經(jīng)網(wǎng)絡中,
avg_pool2d
用于減小特征圖的空間尺寸,有助于減少模型參數(shù)和計算量,同時幫助防止過擬合。
參數(shù)
-
input: 形狀為
(minibatch, in_channels, iH, iW)
的輸入張量。 -
kernel_size: 池化區(qū)域的大小,可以是單個數(shù)字或元組
(kH, kW)
。 -
stride: 池化操作的步長,可以是單個數(shù)字或元組
(sH, sW)
。默認值是kernel_size
。 -
padding: 在輸入的兩側(cè)添加的隱式零填充數(shù)量,可以是單個數(shù)字或元組
(padH, padW)
。默認值是 0。 -
ceil_mode: 當設置為
True
時,計算輸出形狀時將使用ceil
而非floor
方法。默認值是False
。 -
count_include_pad: 當設置為
True
時,平均計算中將包括零填充。默認值是True
。 -
divisor_override: 如果指定,將用作除數(shù),否則將使用池化區(qū)域的大小。默認值是
None
。
注意事項
- 確保輸入張量的維度與函數(shù)要求相匹配。
- 通過調(diào)整
kernel_size
和stride
可以控制輸出特征圖的大小。 -
ceil_mode
和count_include_pad
的設置會影響池化操作的結(jié)果。 -
divisor_override
參數(shù)允許自定義池化過程中的除數(shù),可以用于特殊的池化策略。
示例代碼
import torch
import torch.nn.functional as F
# 示例輸入,一個二維信號(例如圖像)
input = torch.tensor([[[[1, 2, 3], [4, 5, 6], [7, 8, 9]]]], dtype=torch.float32)
# 應用平均池化,池化區(qū)域大小為2x2,步長為2
output = F.avg_pool2d(input, kernel_size=2, stride=2)
print(output)
在這個例子中,我們創(chuàng)建了一個二維張量作為輸入,然后應用了大小為2x2、步長為2的平均池化。輸出結(jié)果將是每個池化區(qū)域內(nèi)元素的平均值。?
avg_pool3d
torch.nn.functional.avg_pool3d
是 PyTorch 中的一個函數(shù),用于在三維輸入信號上執(zhí)行平均池化操作。這種操作在處理三維數(shù)據(jù)(如體積圖像或視頻序列)時非常有用,它可以減小數(shù)據(jù)的尺寸,同時保留關(guān)鍵信息。
用法與用途
-
用法:
avg_pool3d
通過在輸入數(shù)據(jù)上應用一個固定大小的三維窗口,并計算該窗口內(nèi)所有元素的平均值來實現(xiàn)降維和特征提取。 -
用途: 在處理三維數(shù)據(jù)(如體積圖像、視頻序列或時間序列的多個通道)時,
avg_pool3d
用于減少數(shù)據(jù)的空間或時間維度,有助于降低模型的參數(shù)數(shù)量和計算成本,并幫助防止過擬合。
參數(shù)
-
input: 形狀為
(minibatch, in_channels, iT, iH, iW)
的輸入張量。 -
kernel_size: 池化區(qū)域的大小,可以是單個數(shù)字或三元組
(kT, kH, kW)
。 -
stride: 池化操作的步長,可以是單個數(shù)字或三元組
(sT, sH, sW)
。默認值是kernel_size
。 -
padding: 在輸入的所有方向上添加的隱式零填充數(shù)量,可以是單個數(shù)字或三元組
(padT, padH, padW)
。默認值是 0。 -
ceil_mode: 當設置為
True
時,計算輸出形狀時將使用ceil
而非floor
方法。 -
count_include_pad: 當設置為
True
時,平均計算中將包括零填充。 -
divisor_override: 如果指定,將用作除數(shù),否則將使用池化區(qū)域的大小。默認值是
None
。
注意事項
- 確保輸入數(shù)據(jù)的維度與函數(shù)要求相符。
- 通過調(diào)整
kernel_size
、stride
和padding
,可以控制輸出數(shù)據(jù)的大小和特征。 -
ceil_mode
、count_include_pad
和divisor_override
的設置會影響池化操作的結(jié)果。
示例代碼
import torch
import torch.nn.functional as F
# 示例輸入,一個三維信號
input = torch.rand(1, 1, 10, 10, 10) # 隨機生成的輸入張量
# 應用平均池化,池化區(qū)域大小為2x2x2,步長為2
output = F.avg_pool3d(input, kernel_size=2, stride=2)
print(output)
這段代碼創(chuàng)建了一個三維的隨機張量作為輸入,然后應用了大小為2x2x2、步長為2的平均池化。輸出結(jié)果將是每個池化區(qū)域內(nèi)元素的平均值。這種操作在處理具有時間維度的數(shù)據(jù)或更高維度的圖像數(shù)據(jù)時特別有用。?
max_pool1d
torch.nn.functional.max_pool1d
是 PyTorch 中用于一維輸入信號的最大池化操作的函數(shù)。最大池化是一種常見的特征提取操作,它在處理時間序列數(shù)據(jù)或一維信號時非常有用。
用法與用途
-
用法:
max_pool1d
通過在輸入數(shù)據(jù)上應用一個固定大小的窗口,并從該窗口內(nèi)選擇最大值,從而實現(xiàn)特征降維和突出重要特征。 - 用途: 在信號處理和一維時間序列數(shù)據(jù)分析中,最大池化用于減少數(shù)據(jù)的尺寸,同時保留關(guān)鍵特征,例如在音頻處理和自然語言處理中。
參數(shù)
-
input: 形狀為
(minibatch, in_channels, iW)
的輸入張量。minibatch
維度是可選的。 -
kernel_size: 滑動窗口的大小??梢允菃蝹€數(shù)字或元組
(kW,)
。 -
stride: 滑動窗口的步長??梢允菃蝹€數(shù)字或元組
(sW,)
。默認值是kernel_size
。 -
padding: 在兩邊添加的隱含負無窮大的填充。其值必須在
0
和kernel_size / 2
之間。 -
dilation: 滑動窗口內(nèi)元素的步長。必須大于
0
。 -
ceil_mode: 如果為
True
,將使用ceil
而非floor
來計算輸出形狀。這確保了輸入張量的每個元素都被滑動窗口覆蓋。 -
return_indices: 如果為
True
,將返回最大值的位置索引。這在以后使用torch.nn.functional.max_unpool1d
時非常有用。
注意事項
- 確保輸入數(shù)據(jù)的維度與函數(shù)要求相符。
- 適當選擇
kernel_size
和stride
可以影響輸出數(shù)據(jù)的尺寸和特征。 -
padding
、dilation
和ceil_mode
的設置會影響池化操作的結(jié)果。 -
return_indices
選項可以用于在后續(xù)操作中恢復池化前的數(shù)據(jù)結(jié)構(gòu)。
示例代碼
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)
這段代碼創(chuàng)建了一個一維的張量作為輸入,然后應用了大小為3、步長為2的最大池化。輸出結(jié)果將是每個窗口內(nèi)的最大值。這種操作在提取時間序列數(shù)據(jù)的關(guān)鍵特征時特別有效。?
max_pool2d
torch.nn.functional.max_pool2d
是 PyTorch 庫中的一個函數(shù),用于在二維輸入信號上實施最大池化操作。最大池化是一種常用的特征提取操作,尤其在處理圖像或二維數(shù)據(jù)時非常有用。
用法與用途
-
用法:
max_pool2d
通過在輸入數(shù)據(jù)上應用一個固定大小的二維窗口,并從該窗口內(nèi)選擇最大值,來實現(xiàn)特征降維和突出重要特征。 - 用途: 在圖像處理和計算機視覺領域,最大池化用于減少數(shù)據(jù)的空間尺寸,同時保留重要特征,例如在卷積神經(jīng)網(wǎng)絡中用于特征圖的降維。
參數(shù)
-
input: 形狀為
(minibatch, in_channels, iH, iW)
的輸入張量。minibatch
維度是可選的。 -
kernel_size: 池化區(qū)域的大小??梢允菃蝹€數(shù)字或元組
(kH, kW)
。 -
stride: 池化操作的步長??梢允菃蝹€數(shù)字或元組
(sH, sW)
。默認值是kernel_size
。 -
padding: 在兩邊添加的隱含負無窮大的填充。其值必須在
0
和kernel_size / 2
之間。 -
dilation: 滑動窗口內(nèi)元素的步長。必須大于
0
。 -
ceil_mode: 如果為
True
,將使用ceil
而非floor
來計算輸出形狀。這確保了輸入張量的每個元素都被滑動窗口覆蓋。 -
return_indices: 如果為
True
,將返回最大值的位置索引。這在以后使用torch.nn.functional.max_unpool2d
時非常有用。
注意事項
- 確保輸入數(shù)據(jù)的維度與函數(shù)要求相符。
- 適當選擇
kernel_size
和stride
可以影響輸出數(shù)據(jù)的尺寸和特征。 -
padding
、dilation
和ceil_mode
的設置會影響池化操作的結(jié)果。 -
return_indices
選項可以用于在后續(xù)操作中恢復池化前的數(shù)據(jù)結(jié)構(gòu)。
示例代碼
import torch
import torch.nn.functional as F
# 示例輸入,一個二維信號(例如圖像)
input = torch.tensor([[[[1, 2, 3], [4, 5, 6], [7, 8, 9]]]], dtype=torch.float32)
# 應用最大池化,池化區(qū)域大小為2x2,步長為2
output = F.max_pool2d(input, kernel_size=2, stride=2)
print(output)
?這段代碼創(chuàng)建了一個二維的張量作為輸入,然后應用了大小為2x2、步長為2的最大池化。輸出結(jié)果將是每個池化區(qū)域內(nèi)的最大值。這種操作在提取圖像中的關(guān)鍵特征時特別有效。
max_pool3d
torch.nn.functional.max_pool3d
是 PyTorch 庫中的一個函數(shù),用于對三維輸入信號進行最大池化操作。這種操作在處理三維數(shù)據(jù)(如體積圖像、視頻序列)時非常有用,能夠減小數(shù)據(jù)的尺寸,同時突出重要特征。
用法與用途
-
用法:
max_pool3d
通過在輸入數(shù)據(jù)上應用一個固定大小的三維窗口,并從該窗口內(nèi)選擇最大值,來實現(xiàn)特征降維和突出重要特征。 - 用途: 在處理三維數(shù)據(jù),如體積圖像、三維醫(yī)學圖像或視頻序列時,最大池化用于減少數(shù)據(jù)的空間或時間維度,有助于降低模型的參數(shù)數(shù)量和計算成本,并幫助防止過擬合。
參數(shù)
-
input: 形狀為
(minibatch, in_channels, iD, iH, iW)
的輸入張量。minibatch
維度是可選的。 -
kernel_size: 池化區(qū)域的大小??梢允菃蝹€數(shù)字或元組
(kT, kH, kW)
。 -
stride: 池化操作的步長??梢允菃蝹€數(shù)字或元組
(sT, sH, sW)
。默認值是kernel_size
。 -
padding: 在所有方向上添加的隱含負無窮大的填充。其值必須在
0
和kernel_size / 2
之間。 -
dilation: 滑動窗口內(nèi)元素的步長。必須大于
0
。 -
ceil_mode: 如果為
True
,將使用ceil
而非floor
來計算輸出形狀。這確保了輸入張量的每個元素都被滑動窗口覆蓋。 -
return_indices: 如果為
True
,將返回最大值的位置索引。這在以后使用torch.nn.functional.max_unpool3d
時非常有用。
注意事項
- 確保輸入數(shù)據(jù)的維度與函數(shù)要求相符。
- 適當選擇
kernel_size
和stride
可以影響輸出數(shù)據(jù)的尺寸和特征。 -
padding
、dilation
和ceil_mode
的設置會影響池化操作的結(jié)果。 -
return_indices
選項可以用于在后續(xù)操作中恢復池化前的數(shù)據(jù)結(jié)構(gòu)。
示例代碼
import torch
import torch.nn.functional as F
# 示例輸入,一個三維信號
input = torch.rand(1, 1, 10, 10, 10) # 隨機生成的輸入張量
# 應用最大池化,池化區(qū)域大小為2x2x2,步長為2
output = F.max_pool3d(input, kernel_size=2, stride=2)
print(output)
這段代碼創(chuàng)建了一個三維的隨機張量作為輸入,然后應用了大小為2x2x2、步長為2的最大池化。輸出結(jié)果將是每個池化區(qū)域內(nèi)的最大值。這種操作在提取三維數(shù)據(jù)的關(guān)鍵特征時特別有效。?
max_unpool1d
torch.nn.functional.max_unpool1d
是 PyTorch 庫中用于計算 MaxPool1d
的部分逆操作的函數(shù)。這個函數(shù)主要用于將通過 MaxPool1d
操作減小的一維數(shù)據(jù)重新上采樣(即還原)到接近原始尺寸的形狀。
用法與用途
-
用法:
max_unpool1d
通過使用MaxPool1d
操作中保存的最大值的索引(indices
),將數(shù)據(jù)“展開”回更接近原始尺寸的形狀。這個過程常用于卷積神經(jīng)網(wǎng)絡(CNN)中的上采樣階段。 - 用途: 在卷積神經(jīng)網(wǎng)絡的可視化、深度學習模型的解碼階段或者在進行精確位置恢復的任務中,這個函數(shù)特別有用。
參數(shù)
-
input: 經(jīng)過
MaxPool1d
操作后的輸入張量。 -
indices: 在
MaxPool1d
操作中得到的最大值索引,用于指導上采樣過程。 - kernel_size: 最初池化操作中使用的窗口大小。可以是單個數(shù)字或元組。
-
stride: 最初池化操作中使用的步長??梢允菃蝹€數(shù)字或元組。如果未指定,則默認為
kernel_size
。 - padding: 最初池化操作中使用的填充量。
- output_size: 期望的輸出尺寸。如果未指定,則根據(jù)其他參數(shù)自動計算。
注意事項
- 確保
input
和indices
來自相同的MaxPool1d
操作。 - 正確設置
kernel_size
、stride
和padding
,以確保上采樣結(jié)果的正確性。 - 如果指定了
output_size
,需要確保它與期望的上采樣結(jié)果尺寸相匹配。
示例代碼
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
來對輸入數(shù)據(jù)進行下采樣,并保存了最大值的索引。然后,使用 max_unpool1d
以及這些索引來上采樣數(shù)據(jù),嘗試還原到接近其原始尺寸的形狀。
max_unpool2d
torch.nn.functional.max_unpool2d
是 PyTorch 中的一個函數(shù),它實現(xiàn)了 MaxPool2d
操作的部分逆過程。這種函數(shù)主要用于將經(jīng)過 MaxPool2d
減小的二維數(shù)據(jù)重新上采樣(即還原)到接近原始尺寸的形狀。
用法與用途
-
用法:
max_unpool2d
使用MaxPool2d
操作時保留的最大值的索引(indices
),將數(shù)據(jù)“展開”回更接近原始尺寸的形狀。這個過程常用于卷積神經(jīng)網(wǎng)絡(CNN)中的上采樣階段。 - 用途: 在卷積神經(jīng)網(wǎng)絡的可視化、深度學習模型的解碼階段或者在進行精確位置恢復的任務中,這個函數(shù)特別有用。
參數(shù)
-
input: 經(jīng)過
MaxPool2d
操作后的輸入張量。 -
indices: 在
MaxPool2d
操作中得到的最大值索引,用于指導上采樣過程。 - kernel_size: 最初池化操作中使用的窗口大小。可以是單個數(shù)字或元組。
-
stride: 最初池化操作中使用的步長。可以是單個數(shù)字或元組。如果未指定,則默認為
kernel_size
。 - padding: 最初池化操作中使用的填充量。
- output_size: 期望的輸出尺寸。如果未指定,則根據(jù)其他參數(shù)自動計算。
注意事項
- 確保
input
和indices
來自相同的MaxPool2d
操作。 - 正確設置
kernel_size
、stride
和padding
,以確保上采樣結(jié)果的正確性。 - 如果指定了
output_size
,需要確保它與期望的上采樣結(jié)果尺寸相匹配。
示例代碼
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
來對輸入數(shù)據(jù)進行下采樣,并保存了最大值的索引。然后,使用 max_unpool2d
以及這些索引來上采樣數(shù)據(jù),嘗試還原到接近其原始尺寸的形狀。
max_unpool3d
torch.nn.functional.max_unpool3d
是 PyTorch 庫中的一個函數(shù),用于實現(xiàn) MaxPool3d
操作的部分逆過程。這個函數(shù)主要應用于將經(jīng)過 MaxPool3d
操作降維的三維數(shù)據(jù)重新上采樣(即還原)到更接近原始尺寸的形狀。
用法與用途
-
用法:
max_unpool3d
利用在MaxPool3d
操作中獲得的最大值的索引(indices
),將數(shù)據(jù)“展開”回原來更大的尺寸。這在卷積神經(jīng)網(wǎng)絡(CNN)的上采樣階段特別有用。 -
用途: 在深度學習模型的解碼階段、進行三維數(shù)據(jù)的重建或精確位置恢復任務中,
max_unpool3d
非常有用。例如,在處理三維醫(yī)學圖像或視頻數(shù)據(jù)時,它可以用于還原數(shù)據(jù)的空間結(jié)構(gòu)。
參數(shù)
-
input: 經(jīng)過
MaxPool3d
操作后的輸入張量。 -
indices: 在
MaxPool3d
操作中得到的最大值索引,用于指導上采樣過程。 - kernel_size: 最初池化操作中使用的窗口大小??梢允菃蝹€數(shù)字或元組。
-
stride: 最初池化操作中使用的步長??梢允菃蝹€數(shù)字或元組。如果未指定,則默認為
kernel_size
。 - padding: 最初池化操作中使用的填充量。
- output_size: 期望的輸出尺寸。如果未指定,則根據(jù)其他參數(shù)自動計算。
注意事項
- 確保
input
和indices
來自相同的MaxPool3d
操作。 - 正確設置
kernel_size
、stride
和padding
,以確保上采樣結(jié)果的正確性。 - 如果指定了
output_size
,需要確保它與期望的上采樣結(jié)果尺寸相匹配。
示例代碼
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
來對輸入數(shù)據(jù)進行下采樣,并保存了最大值的索引。然后,使用 max_unpool3d
以及這些索引來上采樣數(shù)據(jù),嘗試還原到接近其原始尺寸的形狀。這對于三維數(shù)據(jù)的處理尤其有用,例如在醫(yī)學圖像分析或視頻處理中。?
lp_pool1d
torch.nn.functional.lp_pool1d
是 PyTorch 中的一個函數(shù),用于在一維輸入信號上應用 Lp 池化(Lp-pooling)。Lp 池化是一種通用的池化操作,它包括平均池化和最大池化作為特例(分別對應于 L1 和 L∞ 池化)。
用法與用途
-
用法:
lp_pool1d
通過計算輸入信號中一定區(qū)域內(nèi)的所有元素的 Lp 范數(shù)來實現(xiàn)池化。Lp 范數(shù)是一種度量向量元素絕對值的方法,其中 p 是一個正實數(shù)。 - 用途: Lp 池化在信號處理和一維時間序列數(shù)據(jù)分析中特別有用,它提供了一種比平均池化和最大池化更靈活的方法來提取特征。
參數(shù)
-
input: 形狀為
(minibatch, in_channels, iW)
的輸入張量。 - norm_type: Lp 范數(shù)的 p 值。常見的選擇包括 1(L1 范數(shù),相當于平均池化)和 ∞(L∞ 范數(shù),相當于最大池化)。
- kernel_size: 池化窗口的大小??梢允菃蝹€數(shù)字。
-
stride: 池化操作的步長??梢允菃蝹€數(shù)字。如果未指定,則默認為
kernel_size
。 -
ceil_mode: 如果為
True
,將使用ceil
而非floor
來計算輸出形狀。
注意事項
- 確保
input
的尺寸和類型符合預期。 - 選擇合適的
norm_type
可以根據(jù)具體的應用場景調(diào)整池化的行為。 - 正確設置
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 范數(shù),窗口大小為3,步長為2
output = F.lp_pool1d(input, norm_type=2, kernel_size=3, stride=2)
print(output)
?在這個例子中,我們應用了 L2 范數(shù)的 Lp 池化,其中窗口大小為 3,步長為 2。這種類型的池化有助于在保留重要信號特征的同時降低數(shù)據(jù)維度。
lp_pool2d
torch.nn.functional.lp_pool2d
是 PyTorch 中的一個函數(shù),用于在二維輸入信號上實施 Lp 池化(Lp-pooling)。Lp 池化是一種更通用的池化方法,它包括了平均池化和最大池化作為其特例。
用法與用途
-
用法:
lp_pool2d
通過計算輸入信號中的每個固定大小區(qū)域內(nèi)所有元素的 Lp 范數(shù)來實現(xiàn)池化。這里的 Lp 范數(shù)是指向量元素絕對值的 p 次方和的 p 次方根。 - 用途: Lp 池化在圖像處理和計算機視覺領域中非常有用,因為它提供了一種比平均池化和最大池化更靈活的方法來提取特征。
參數(shù)
-
input: 形狀為
(minibatch, in_channels, iH, iW)
的輸入張量。 - norm_type: Lp 范數(shù)的 p 值。常見選擇包括 1(L1 范數(shù),相當于平均池化)和 ∞(L∞ 范數(shù),相當于最大池化)。
-
kernel_size: 池化區(qū)域的大小??梢允菃蝹€數(shù)字或元組
(kH, kW)
。 -
stride: 池化操作的步長??梢允菃蝹€數(shù)字或元組
(sH, sW)
。如果未指定,則默認為kernel_size
。 -
ceil_mode: 如果為
True
,將使用ceil
而非floor
來計算輸出形狀。
注意事項
- 確保輸入數(shù)據(jù)的尺寸和類型符合預期。
- 選擇合適的
norm_type
可以根據(jù)具體應用場景調(diào)整池化的行為。 - 正確設置
kernel_size
和stride
可以控制輸出數(shù)據(jù)的尺寸。
示例代碼
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 范數(shù),池化區(qū)域大小為2x2
output = F.lp_pool2d(input, norm_type=2, kernel_size=2)
print(output)
在這個例子中,我們應用了 L2 范數(shù)的 Lp 池化,其中池化區(qū)域大小為 2x2。這種類型的池化有助于在保留重要圖像特征的同時降低數(shù)據(jù)維度。
adaptive_max_pool1d
torch.nn.functional.adaptive_max_pool1d
是 PyTorch 中的一個函數(shù),用于在一維輸入信號上實施自適應最大池化操作。自適應池化是一種特殊類型的池化,它能夠獨立于輸入尺寸,輸出固定大小的特征圖。
用法與用途
-
用法:
adaptive_max_pool1d
通過調(diào)整池化窗口的大小來確保輸出特征圖具有指定的目標尺寸。這意味著它可以處理各種尺寸的輸入,而輸出始終保持一致的尺寸。 - 用途: 在處理不同長度的一維信號(如音頻片段、時間序列數(shù)據(jù))時,自適應最大池化特別有用,因為它允許神經(jīng)網(wǎng)絡在不同長度的輸入上運行,而不需要對輸入數(shù)據(jù)進行手動調(diào)整。
參數(shù)
-
input: 形狀為
(minibatch, in_channels, iW)
的輸入張量。 - output_size: 目標輸出尺寸,是一個單獨的整數(shù)。這個值指定了輸出特征圖的長度。
-
return_indices: 是否返回池化過程中最大值的索引。默認值為
False
。
注意事項
- 自適應池化不需要指定池化窗口的大小和步長,因為它會根據(jù)輸入和目標輸出尺寸自動確定這些參數(shù)。
- 如果設置
return_indices
為True
,函數(shù)將返回最大值的索引,這對于某些特殊應用(如上采樣操作)可能很有用。
示例代碼
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
會自動調(diào)整池化窗口的大小和步長,使得輸出特征圖的長度為 5。這對于需要固定尺寸輸出的應用場景非常有用。?
adaptive_max_pool2d
torch.nn.functional.adaptive_max_pool2d
是 PyTorch 庫中的一個函數(shù),用于在二維輸入信號上執(zhí)行自適應最大池化操作。這種池化操作可以適應不同大小的輸入,輸出固定大小的特征圖。
用法與用途
-
用法:
adaptive_max_pool2d
通過自動調(diào)整池化窗口的大小和步長,從而確保無論輸入信號的尺寸如何,輸出特征圖都具有指定的目標尺寸。 - 用途: 在處理不同尺寸的圖像或其他二維數(shù)據(jù)時,自適應最大池化特別有用。它允許神經(jīng)網(wǎng)絡在不同尺寸的輸入上運行,而不需要手動調(diào)整輸入數(shù)據(jù)的尺寸。
參數(shù)
-
input: 形狀為
(minibatch, in_channels, iH, iW)
的輸入張量。 -
output_size: 目標輸出尺寸??梢允菃蝹€整數(shù)(生成正方形的輸出)或雙整數(shù)元組
(oH, oW)
。 -
return_indices: 是否返回池化過程中最大值的索引。默認值為
False
。
注意事項
- 自適應池化不需要顯式指定池化窗口的大小和步長,因為它根據(jù)輸入和目標輸出尺寸自動確定這些參數(shù)。
- 如果設置
return_indices
為True
,函數(shù)將返回最大值的索引,這對于某些特殊應用(如上采樣操作)可能很有用。
示例代碼
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
會自動調(diào)整池化窗口的大小和步長,以確保輸出特征圖的尺寸為 4x4。這種方法在需要將不同尺寸的輸入標準化到相同尺寸輸出的場景中非常有用。?
adaptive_max_pool3d
torch.nn.functional.adaptive_max_pool3d
是 PyTorch 庫中的一個函數(shù),用于在三維輸入信號上進行自適應最大池化操作。這種池化技術(shù)可以適應不同大小的輸入,生成固定大小的輸出特征圖。
用法與用途
-
用法:
adaptive_max_pool3d
自動調(diào)整池化窗口的大小和步長,以確保輸出特征圖符合指定的目標尺寸,獨立于輸入信號的原始尺寸。 - 用途: 在處理三維數(shù)據(jù)(如體積圖像、視頻序列等)時,自適應最大池化尤其有用,因為它允許網(wǎng)絡處理不同尺寸的輸入數(shù)據(jù),同時保證輸出特征圖的一致性。
參數(shù)
-
input: 形狀為
(minibatch, in_channels, iD, iH, iW)
的輸入張量。 -
output_size: 目標輸出尺寸??梢允菃蝹€整數(shù)(生成立方體形狀的輸出)或三整數(shù)元組
(oD, oH, oW)
。 -
return_indices: 是否返回池化過程中最大值的索引。默認值為
False
。
注意事項
- 自適應池化不需要顯式地指定池化窗口的大小和步長,因為這些參數(shù)會根據(jù)輸入和目標輸出尺寸自動確定。
- 如果設置
return_indices
為True
,函數(shù)會返回最大值的索引,這在某些特定應用中(例如在后續(xù)步驟中進行上采樣操作)可能非常有用。
示例代碼
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
會自動調(diào)整池化窗口的大小和步長,以確保輸出特征圖的尺寸為 4x4x4。這種方法在需要將不同尺寸的輸入標準化為相同尺寸輸出的場景中非常有用。
adaptive_avg_pool1d
torch.nn.functional.adaptive_avg_pool1d
是 PyTorch 庫中的一個函數(shù),用于對一維輸入信號執(zhí)行自適應平均池化操作。這種池化方法允許輸入信號有不同的長度,但可以輸出統(tǒng)一大小的特征表示。
用法與用途
-
用法:
adaptive_avg_pool1d
通過自動調(diào)整池化窗口的大小來生成指定長度的輸出,無論輸入信號的原始長度如何。 - 用途: 在處理長度不一的一維信號時(如音頻片段或時間序列數(shù)據(jù)),自適應平均池化特別有用。它使得神經(jīng)網(wǎng)絡可以接收不同長度的輸入數(shù)據(jù),同時生成固定大小的輸出。
參數(shù)
-
input: 形狀為
(minibatch, in_channels, iW)
的輸入張量。 - output_size: 目標輸出尺寸。這是一個整數(shù),指定了輸出特征表示的長度。
注意事項
- 自適應池化不需要指定池化窗口的具體大小和步長,因為它會根據(jù)輸入尺寸和輸出尺寸自動計算這些值。
- 這種方法非常適用于輸入數(shù)據(jù)長度變化較大的場景,可以幫助標準化輸出尺寸,便于后續(xù)處理。
示例代碼
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
會自動調(diào)整池化窗口的大小,以確保輸出特征圖的長度為 5。這種方法在需要處理不同長度輸入數(shù)據(jù)的應用場景中非常有用。
adaptive_avg_pool2d
torch.nn.functional.adaptive_avg_pool2d
是 PyTorch 庫中用于執(zhí)行二維自適應平均池化操作的函數(shù)。這個操作允許對具有不同尺寸的輸入圖像執(zhí)行池化操作,同時生成具有固定尺寸的輸出。
用法與用途
-
用法:
adaptive_avg_pool2d
通過自動調(diào)整池化窗口的大小和步長,實現(xiàn)從不同尺寸的輸入圖像到固定尺寸輸出的轉(zhuǎn)換。 - 用途: 在處理尺寸不一的圖像數(shù)據(jù)時,這種方法非常有用,例如在深度學習中處理不同尺寸的輸入圖像,而不需要預先調(diào)整其尺寸。
參數(shù)
-
input: 形狀為
(minibatch, in_channels, iH, iW)
的輸入張量。 -
output_size: 目標輸出尺寸。可以是單個整數(shù)(生成正方形的輸出)或者雙整數(shù)元組
(oH, oW)
。
注意事項
- 當使用單個整數(shù)作為
output_size
時,輸出特征圖將是一個正方形,其大小由該整數(shù)指定。 - 使用雙整數(shù)元組時,可以更精確地控制輸出特征圖的高度和寬度。
- 自適應池化方法不需要手動指定池化窗口的大小和步長,因為它會根據(jù)輸入和輸出尺寸自動計算這些參數(shù)。
示例代碼
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
會自動調(diào)整池化窗口的大小和步長,以確保輸出特征圖的尺寸為 4x4。這種方法在需要將不同尺寸的輸入標準化為相同尺寸輸出的場景中非常有用。
adaptive_avg_pool3d
torch.nn.functional.adaptive_avg_pool3d
是 PyTorch 庫中的一個函數(shù),用于對三維輸入信號執(zhí)行自適應平均池化操作。這種操作允許對具有不同尺寸的三維數(shù)據(jù)(如體積圖像或視頻序列)進行池化處理,同時生成具有固定尺寸的輸出。
用法與用途
-
用法:
adaptive_avg_pool3d
通過自動調(diào)整池化窗口的大小和步長,實現(xiàn)從不同尺寸的輸入到固定尺寸輸出的轉(zhuǎn)換。 - 用途: 在處理體積圖像、三維醫(yī)學成像數(shù)據(jù)或視頻序列等三維數(shù)據(jù)時,這種方法非常有用,因為它允許網(wǎng)絡處理不同尺寸的輸入數(shù)據(jù),同時保證輸出特征圖的一致性。
參數(shù)
-
input: 形狀為
(minibatch, in_channels, iD, iH, iW)
的輸入張量。 -
output_size: 目標輸出尺寸。可以是單個整數(shù)(生成立方體形狀的輸出)或三整數(shù)元組
(oD, oH, oW)
。
注意事項
- 當使用單個整數(shù)作為
output_size
時,輸出特征圖將是一個立方體,其大小由該整數(shù)指定。 - 使用三整數(shù)元組時,可以更精確地控制輸出特征圖的深度、高度和寬度。
- 自適應池化方法不需要手動指定池化窗口的大小和步長,因為它會根據(jù)輸入和輸出尺寸自動計算這些參數(shù)。
示例代碼
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
會自動調(diào)整池化窗口的大小和步長,以確保輸出特征圖的尺寸為 4x4x4。這種方法在需要將不同尺寸的輸入標準化為相同尺寸輸出的場景中非常有用。?
fractional_max_pool2d
torch.nn.functional.fractional_max_pool2d
是 PyTorch 庫中的一個函數(shù),用于對二維輸入信號執(zhí)行分數(shù)最大池化操作。這種池化操作與傳統(tǒng)的最大池化不同,它允許使用隨機或非整數(shù)步長,從而產(chǎn)生非標準尺寸的輸出。
用法與用途
-
用法:
fractional_max_pool2d
通過使用隨機或分數(shù)步長在輸入上進行池化,以生成目標輸出尺寸或與輸入尺寸成比例的輸出。 - 用途: 在深度學習中,尤其是在圖像處理和計算機視覺任務中,分數(shù)最大池化可以用于創(chuàng)建更加豐富和多樣的特征表示,有助于提高模型的泛化能力。
參數(shù)
-
input: 形狀為
(minibatch, in_channels, iH, iW)
的輸入張量。 -
kernel_size: 池化區(qū)域的大小??梢允菃蝹€整數(shù)(對于正方形的池化窗口)或元組
(kH, kW)
。 -
output_size: 目標輸出尺寸,形式為
(oH, oW)
。也可以是單個整數(shù),用于創(chuàng)建正方形輸出。 - output_ratio: 如果希望輸出尺寸作為輸入尺寸的比例,可以使用這個參數(shù)。它必須是范圍在 (0, 1) 內(nèi)的數(shù)字或元組。
-
return_indices: 如果為
True
,將返回池化過程中最大值的索引,可用于后續(xù)的max_unpool2d
操作。
注意事項
- 分數(shù)最大池化的隨機性可能導致不同的運行結(jié)果有所不同。
- 確保選擇合適的
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)
# 應用分數(shù)最大池化,窗口大小為3,目標輸出尺寸為 13x12
output = F.fractional_max_pool2d(input, kernel_size=3, output_size=(13, 12))
# 應用分數(shù)最大池化,窗口大小為3,輸出尺寸為輸入尺寸的一半
output_ratio = F.fractional_max_pool2d(input, kernel_size=3, output_ratio=(0.5, 0.5))
?在這些示例中,輸入是一個具有隨機值的張量,我們應用了分數(shù)最大池化來減小其尺寸。第一個例子直接指定了輸出尺寸,而第二個例子使用了輸出比例來決定輸出尺寸。這種方法為特征提取提供了更多的靈活性。
fractional_max_pool3d
torch.nn.functional.fractional_max_pool3d
是 PyTorch 庫中的一個函數(shù),用于在三維輸入信號上實施分數(shù)最大池化操作。這種池化操作與傳統(tǒng)的最大池化不同,它允許使用隨機或非整數(shù)的步長,從而產(chǎn)生非標準尺寸的輸出。
用法與用途
-
用法:
fractional_max_pool3d
通過使用隨機或分數(shù)步長在輸入上進行池化,以生成目標輸出尺寸或與輸入尺寸成比例的輸出。 - 用途: 在深度學習中,尤其是在三維數(shù)據(jù)處理(如體積圖像或視頻序列)中,分數(shù)最大池化可以用于創(chuàng)建更加豐富和多樣化的特征表示,有助于提高模型的泛化能力。
參數(shù)
-
input: 形狀為
(N, C, T_in, H_in, W_in)
或(C, T_in, H_in, W_in)
的輸入張量。 -
kernel_size: 池化區(qū)域的大小??梢允菃蝹€整數(shù)(對于立方體的池化窗口)或元組
(kT, kH, kW)
。 -
output_size: 目標輸出尺寸,形式為
(oT, oH, oW)
。也可以是單個整數(shù),用于創(chuàng)建立方體輸出。 - output_ratio: 如果希望輸出尺寸作為輸入尺寸的比例,可以使用這個參數(shù)。它必須是范圍在 (0, 1) 內(nèi)的數(shù)字或元組。
-
return_indices: 如果為
True
,將返回池化過程中最大值的索引,可用于后續(xù)的max_unpool3d
操作。
注意事項
- 分數(shù)最大池化的隨機性可能導致不同的運行結(jié)果有所不同。
- 確保選擇合適的
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)
# 應用分數(shù)最大池化,窗口大小為3,目標輸出尺寸為 13x12x11
output = F.fractional_max_pool3d(input, kernel_size=3, output_size=(13, 12, 11))
# 應用分數(shù)最大池化,窗口大小為3,輸出尺寸為輸入尺寸的一半
output_ratio = F.fractional_max_pool3d(input, kernel_size=3, output_ratio=(0.5, 0.5, 0.5))
?在這些示例中,輸入是一個具有隨機值的張量,我們應用了分數(shù)最大池化來減小其尺寸。第一個例子直接指定了輸出尺寸,而第二個例子使用了輸出比例來決定輸出尺寸。這種方法為特征提取提供了更多的靈活性。文章來源:http://www.zghlxwxcb.cn/news/detail-791348.html
總結(jié)
在 PyTorch 中,池化層函數(shù)是卷積神經(jīng)網(wǎng)絡(CNN)中的重要組成部分,用于降維、特征提取和防止過擬合。這些函數(shù)包括不同類型和維度的池化操作,如平均池化、最大池化和自適應池化,適用于處理一維、二維和三維數(shù)據(jù)。每種池化操作都有其特定的應用場景和參數(shù)設置,提供了靈活性以適應不同的深度學習需求。文章來源地址http://www.zghlxwxcb.cn/news/detail-791348.html
到了這里,關(guān)于PyTorch 各種池化層函數(shù)全覽與用法演示的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!