Keras conv1d层参数:过滤器和内核大小

Keras conv1d层参数:过滤器和内核大小,keras,convolution,Keras,Convolution,我对keras的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 convolutio

我对keras的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.
但这似乎与我在许多教程中看到的标准术语无关,比如《s-Guide-to-Understanding-Convolutional-Neural-Networks》和《s-Guide-to-Understanding-Convolutional-Neural-Networks》

使用使用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'))
假设嵌入层输出一个维度为50(行,每行是一个句子中的一个单词)x300(列,单词向量维度)的矩阵,conv1d层如何转换该矩阵


非常感谢

您说得对,
内核大小
定义了滑动窗口的大小

过滤器
参数就是您将拥有多少个不同的窗口。(它们都具有相同的长度,即
内核大小
)。您希望产生多少不同的结果或渠道

当您使用
filters=100
kernel\u size=4
时,您将创建100个不同的过滤器,每个过滤器的长度为4。结果将产生100种不同的卷积

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


Conv1D层需要以下尺寸:

(batchSize, length, channels)
我认为使用它的最好方法是让单词的数量在长度维度(就像单词按顺序组成一个句子),通道是嵌入的输出维度(定义一个单词的数字)

因此:

卷积层将通过100个不同的过滤器,每个过滤器将沿着
长度
维度滑动(逐字,4人一组),考虑到定义单词的所有通道

输出的形状如下:

(number of sentences, 50 words, 100 output dimension or filters)   
过滤器的形状如下:

(4 = length, 300 = word vector dimension, 100 output dimension of the convolution)  

过滤器是如何定位的?假设我们有一个向量[0..99],内核大小=10,过滤器=3。据我所知,过滤器会相互重叠,所以它们会像[0..9],[1..10],[2..11],我们刚刚用完了过滤器,只覆盖了向量中的12个第一个值。我说得对吗?不,你描述了由单个过滤器执行的顺序操作。相同的过滤器沿整个向量移动。筛选器1将转到[0..9]、[1..10]、[2..11]。。。直到[90..99]。过滤器1旁边的过滤器2也将转到[0..9]、[1..10]、[2..11]。。。直到[90..99]。与其他过滤器一样,过滤器3也将遵循相同的路径。右侧,第一层输出100个“通道”。但是第二个只输出50个通道。第二层中的过滤器恰好是这样的过滤器,它不仅从一个通道中提取3个元素,而且从所有100个通道中提取3个元素,并用300个元素一次完成卷积的每一步。@DanielMöller过滤器是随机初始化的吗?如果我的理解是正确的,在每次迭代之后,过滤器的值都会更改,以便更能代表过滤器需要过滤掉的内容。问题是,经过X次迭代(模型已收敛,训练已完成),给定输出的大多数过滤器是否相同?如果是这样的话,有很多过滤器有什么好处?@Gevo12321,是的,过滤器是随机初始化的。因此,每个过滤器遵循不同的演变。不,过滤器的结果不一样。考虑到所有更进一步的层次,它们往往是最好的结果,直到最后。它们形成了一个巨大的可能性组合来表示复杂的事物。单个筛选器无法单独完成此操作。
(4 = length, 300 = word vector dimension, 100 output dimension of the convolution)