Convolution1D與Convolution2D區別


以下是Convolution1D的例子:

# apply a convolution 1d of length 3 to a sequence with 10 timesteps,
# with 64 output filters
model = Sequential()
model.add(Convolution1D(64, 3, border_mode='same', input_shape=(10, 32)))
# now model.output_shape == (None, 10, 64)

# add a new conv1d on top
model.add(Convolution1D(32, 3, border_mode='same'))
# now model.output_shape == (None, 10, 32)

以下是Convolution2D的例子:

# apply a 3x3 convolution with 64 output filters on a 256x256 image:
model = Sequential()
model.add(Convolution2D(64, 3, 3, border_mode='same', input_shape=(3, 256, 256)))
# now model.output_shape == (None, 64, 256, 256)

# add a 3x3 convolution on top, with 32 output filters:
model.add(Convolution2D(32, 3, 3, border_mode='same'))
# now model.output_shape == (None, 32, 256, 256)

1.Convolution1D主要用於nlp,Convolution2D主要用於cv。實際上,Convolution1D也可以用於cv,Convolution2D也可以用於nlp,只是那個時候不是標准的卷積方式,而是經過一定變形的卷積。

2.可以看到Convolution1D的卷積只有3這一個參數,Convolution2D卻有兩個參數3(即長度為3,寬度為3的卷積)。表面上Convolution1D沒有給出卷積的大小,Convolution2D給出了。實際上,在Convolution1D中,只要給出了句子中word的長度,寬度就是word中的dimension,寬度自動把整個tensor的寬度包裹住。

3.Convolution1D的input_shape是長度為10,寬度為32的tensor。Convolution2D的input_shape是3個channel,長度為256,寬度為256的tensor。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM