??????? 在使用Conv1d函數(shù)時,pytorch默認你的數(shù)據(jù)是一維的,比如一句話“深度學習”可以用一個一維數(shù)組 ['深', '度', '學', '習'] 表示,這個數(shù)據(jù)就是一維的。圖片是二維數(shù)據(jù),它有長寬兩個維度。
??????? 因此在使用 Conv1d 函數(shù)時,輸入是一個三位數(shù)組,三個維度分別表示? (批量,通道,長度)
??????? 使用 Conv2d 函數(shù)時,輸入是一個四維數(shù)組,四個維度分別是(批量,通道,行,列),這里不詳細介紹Conv2d。
??????? (批量即 batch_size)
??????? 用如下例子介紹Conv1d(input_channel=3, output_channel=4, kernel_size=1),輸入的例子數(shù)據(jù)為一句話,這句話有5個單詞,假設每個單詞都由三個字母組成,就相當于每個單詞有3個通道,假設這句話是 ['abc', 'def', 'ghi', 'jkl', 'mno'],這些數(shù)據(jù)放在圖1所示的矩陣里,可見長度為5,通道數(shù)為3。

???????? output_channel=4,即有四個卷積核,每個卷積核的通道數(shù)和輸入的通道數(shù)相同,這里是3,如圖2所示,第一個元素'abc'的三個通道'a', 'b', 'c'輸入第一個卷積核,得到紅色數(shù)字,第二個單詞經(jīng)過卷積核得到黃色數(shù)字,排成一列得到第一個通道,四個卷積核得到輸出的四個通道。
????????如果一個batch里有很多句話,那么分別對每句話進行上述計算即可。

??????? 測試代碼:
??????? 輸入數(shù)據(jù)的 batch_size=10,通道數(shù)為3,長度為5。卷積核大小為1,卷積核通道數(shù)和輸入數(shù)據(jù)的通道數(shù)一致。輸出數(shù)據(jù)通道數(shù)為7,卷積核的數(shù)量和輸出數(shù)據(jù)的通道數(shù)一致。
??????? 因為卷積核大小為1,所以輸出長度與輸入長度一致,卷積不影響批量數(shù)(batch_size),因此輸出數(shù)據(jù)的(批量,通道,長度)應為(10, 7, 5)
from torch import nn
conv1 = nn.Conv1d(in_channels=3, out_channels=7, kernel_size=1)
input = torch.randn(10, 3, 5)
out = conv1(input)
print(out.size())
運行后的輸出如下圖所示,可見分析正確。文章來源:http://www.zghlxwxcb.cn/news/detail-691182.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-691182.html
到了這里,關(guān)于pytorch中nn.Conv1d功能介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!