Neural network Keras-1D卷积它是如何工作的

Neural network Keras-1D卷积它是如何工作的,neural-network,convolution,keras,Neural Network,Convolution,Keras,从这个例子中: 下面是这个片段。嵌入层为批次中的每个示例输出400 x 50矩阵。我的问题是一维卷积是如何工作的?它如何在400 x 50矩阵中工作 # we start off with an efficient embedding layer which maps # our vocab indices into embedding_dims dimensions model.add(Embedding(max_features, embedding

从这个例子中:

下面是这个片段。嵌入层为批次中的每个示例输出400 x 50矩阵。我的问题是一维卷积是如何工作的?它如何在400 x 50矩阵中工作

# we start off with an efficient embedding layer which maps
# our vocab indices into embedding_dims dimensions
model.add(Embedding(max_features,
                    embedding_dims,
                    input_length=maxlen,
                    dropout=0.2))

# we add a Convolution1D, which will learn nb_filter
# word group filters of size filter_length:
model.add(Convolution1D(nb_filter=nb_filter,
                        filter_length=filter_length,
                        border_mode='valid',
                        activation='relu',
                        subsample_length=1))

在卷积神经网络(CNN)中,一维和二维滤波器实际上不是一维和二维的。这是描述的惯例


在您的示例中,每个1D过滤器实际上是一个Lx50过滤器,其中L是过滤器长度的参数。卷积仅在一维中执行。这可能就是为什么它被称为1D。因此,通过适当的填充,每个1D滤波器卷积得到一个400x1向量。卷积1D层最终将输出一个400*
nb_filter

矩阵,来自信号处理的背景。我也花了一段时间才理解它的概念,社区中的许多人似乎都是这样

解释得很好。正如许多论坛上经常用文字解释的那样,我制作了一个小动画,希望对大家有所帮助

请参见下面的输入张量、过滤器(或权重)和输出张量。您还可以将输出张量的大小视为所用过滤器数量的函数(用不同的颜色表示)

请注意,要在输入和过滤器之间执行标量乘法,应该对过滤器进行转置。也有不同的实现(Karas、Tensorflow、Pytorch…),但我认为这个动画可以很好地描述正在发生的事情


希望它能帮助一些人。

我们能将其概念化为在每一步创建一个L单词的点积(第一个L,然后滑动,包括单词2:2+L等),其中点积用于每次完全嵌入L单词(50个值)吗?是,卷积的每个输出值实际上是L*50嵌入值与滤波器的点积。