この例から: https://github.com/fchollet/keras/blob/master/examples/imdb_cnn.py
以下にこのスニペットがあります。埋め込み層は、例ごとに400 x50の行列をバッチで出力します。私の質問は、1D畳み込みがどのように機能するかです。 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および2Dフィルターは実際には1次元および2次元ではありません。説明の慣例です。
あなたの例では、各1Dフィルターは実際にはLx50フィルターです。ここで、Lはフィルター長のパラメーターです。畳み込みは1次元でのみ実行されます。それが1Dと呼ばれる理由かもしれません。したがって、適切なパディングを使用すると、各1Dフィルターの畳み込みにより400x1のベクトルが得られます。 Convolution1Dレイヤーは、最終的に400 * nb_filter
の行列を出力します。