Keras conv1d图层参数:filters和kernel_size

Ziq*_*iqi 25 convolution keras

我对keras的conv1d层中的这两个参数感到非常困惑:https://keras.io/layers/convolutional/#conv1d

文件说:

filters: Integer, the dimensionality of the output space (i.e. the number output of filters in the convolution).
kernel_size: An integer or tuple/list of a single integer, specifying the length of the 1D convolution window.
Run Code Online (Sandbox Code Playgroud)

但是,这似乎并没有涉及到的标准术语我在很多教程看到诸如https://adeshpande3.github.io/adeshpande3.github.io/A-Beginner的-引导到理解,卷积Neural- Networks /和https://machinelearningmastery.com/sequence-classification-lstm-recurrent-neural-networks-python-keras/

使用第二个使用Keras的教程链接,我想实际上'kernel_size'与传统的'filter'概念相关,后者定义了输入特征空间上的滑动窗口.但是conv1d中的'filter'参数怎么样?它有什么作用?

例如,在以下代码段中:

model.add(embedding_layer)
model.add(Dropout(0.2))
model.add(Conv1D(filters=100, kernel_size=4, padding='same', activation='relu'))
Run Code Online (Sandbox Code Playgroud)

假设嵌入层输出一个维度为50的矩阵(行,每行是一个句子中的一个单词)x 300(列,单词向量维度),conv1d层如何转换该矩阵?

非常感谢

Dan*_*ler 37

你说是kernel_size定义滑动窗口的大小是对的.

filters参数是你将有多少不同的窗口有.(所有这些都具有相同的长度,即kernel_size).您想要生成多少个不同的结果或渠道.

当您使用filters=100和时kernel_size=4,您将创建100个不同的过滤器,每个过滤器的长度为4.结果将带来100个不同的卷积.

此外,每个过滤器都有足够的参数来考虑所有输入通道.


Conv1D层需要这些尺寸:

(batchSize, length, channels)
Run Code Online (Sandbox Code Playgroud)

我想最好的方法是使用长度维度中的单词数量(好像单词按顺序形成一个句子),并且通道是嵌入的输出维度(定义一个单词的数字).

所以:

batchSize = number of sentences    
length = number of words in each sentence   
channels = dimension of the embedding's output.    
Run Code Online (Sandbox Code Playgroud)

卷积层将通过100个不同的滤波器,每个滤波器将沿着length维度(逐字逐个地,以4个为一组)滑动,考虑定义该字的所有通道.

输出形状如下:

(number of sentences, 50 words, 100 output dimension or filters)   
Run Code Online (Sandbox Code Playgroud)

过滤器的形状如下:

(4 = length, 300 = word vector dimension, 100 output dimension of the convolution)  
Run Code Online (Sandbox Code Playgroud)

  • 不,您描述了单个过滤器执行的顺序操作.相同的滤波器沿整个矢量传播.滤波器1将[0..9],[1..10],[2..11] ......直到[90..99].滤波器2旁边的滤波器2也将[0..9],[1..10],[2..11] ......直到[90..99].并且过滤器3也在其他过滤器旁边,将遵循相同的路径. (4认同)
  • @ Gevo12321,是的,过滤器是随机初始化的。因此,每个过滤器遵循不同的演变。不,过滤器趋向于获得相同的结果。考虑到所有后续层,它们往往会达到最佳结果。它们构成了代表复杂事物的可能性的巨大组合。单个过滤器无法单独执行此操作。 (3认同)
  • 正确,第一层输出100个“通道”。但是第二个仅输出50个通道。碰巧第二层中的滤镜将是不仅从通道中获取3个元素,而且从所有100个通道中获取3个元素的滤镜,并且一次对300个元素进行卷积。 (2认同)