以下是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。