私は、kerasのconv1dレイヤーのこれら2つのパラメーターに非常に混乱しています: 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.
しかし、これは https://adeshpande3.github.io/adeshpande3.github.io/A-Beginner 's-Guide-Toなどの多くのチュートリアルで見られる標準的な用語とは関係がないようです。 -Understanding-Convolutional-Neural-Networks /および https://machinelearningmastery.com/sequence-classification-lstm-recurrent-neural-networks-python-keras/
Kerasを使用する2番目のチュートリアルリンクを使用すると、実際には「kernel_size」は、入力フィーチャスペースのスライディングウィンドウを定義する従来の「フィルター」の概念に関連していると思います。しかし、conv1dの「フィルター」パラメーターはどうでしょうか。それは何をするためのものか?
たとえば、次のコードスニペットでは:
model.add(embedding_layer)
model.add(Dropout(0.2))
model.add(Conv1D(filters=100, kernel_size=4, padding='same', activation='relu'))
埋め込み層が次元50(行、各行は文の単語)x 300(列、単語ベクトル次元)のマトリックスを出力すると仮定すると、conv1dレイヤーはどのようにそのマトリックスを変換しますか?
どうもありがとう
kernel_size
はスライディングウィンドウのサイズを定義すると言うのは正しいことです。
filters
パラメーターは、使用するウィンドウの数です。 (それらはすべて同じ長さで、kernel_size
です)。生成するさまざまな結果またはチャネルの数。
filters=100
とkernel_size=4
を使用すると、それぞれ長さ4の100の異なるフィルターを作成します。結果は100の異なる畳み込みをもたらします。
また、各フィルターには、すべての入力チャンネルを考慮するのに十分なパラメーターがあります。
Conv1Dレイヤーは次の寸法を想定しています。
(batchSize, length, channels)
私はそれを使用する最良の方法は、長さ次元の単語数を持っていることであり(順番に単語が文を形成したかのように)、チャネルは埋め込みの出力次元(1つの単語を定義する数)であると思います。
そう:
batchSize = number of sentences
length = number of words in each sentence
channels = dimension of the embedding's output.
畳み込み層は100個の異なるフィルターを通過し、各フィルターはlength
次元(Word by Word、4グループ)に沿ってスライドし、Wordを定義するすべてのチャネルを考慮します。
出力の形は次のとおりです。
(number of sentences, 50 words, 100 output dimension or filters)
フィルターの形状は次のとおりです。
(4 = length, 300 = Word vector dimension, 100 output dimension of the convolution)