[英]Why does nn.Conv1d work on 2d feature [b, c, h, w]?
我想知道為什么 conv1d 適用於 2d 功能(批次、通道、高度、寬度)。
一個 nn.Conv1d(channel, channel, kernel_size=(1,1)) 在我放置 2d 特征時起作用,但給出的結果與 nn.Conv2d(channel, channel, kernel_size=1) 不同。
我想知道為什么 conv1d 有效,以及一維卷積中的二維 kernel 大小是什么意思。
“我想知道為什么 conv1d 有效,以及一維卷積中的二維 kernel 大小是什么意思”
它沒有任何理由不工作。 在引擎蓋下,所有這些“卷積”的意思是“點積”,現在它可以是矩陣和向量、矩陣和矩陣、向量和向量等。簡單地說,1D 和 2D 卷積之間的真正區別是自由度沿着輸入的空間維度移動。 這意味着如果您查看1D 卷積,它只能沿一個方向移動,即輸入的時間維度(注意 kernel 可以是向量,矩陣無關緊要)。 另一方面, 2D 卷積可以自由地沿輸入的 2 維(高度和寬度)移動,即空間維度。 如果它仍然看起來令人困惑,請查看下面的 GIF。
注意:這是一個一維卷積,kernel 大小為3x3
,看看它是如何只向下移動作為時間維度的輸入。
注意:這是一個 2D 卷積,kernel 大小為3x3
,看看它是如何沿着輸入的寬度和高度移動的,這是空間維度。
我認為現在很清楚 1D 和 2D conv 之間的實際區別是什么,以及為什么它們都會為相同的輸入產生不同的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.