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)
| 归档时间: |
|
| 查看次数: |
17396 次 |
| 最近记录: |