web-dev-qa-db-ja.com

Keras-1Dコンボリューション仕組み

この例から: 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))
11
B_Miner

畳み込みニューラルネットワーク(CNN)では、1Dおよび2Dフィルターは実際には1次元および2次元ではありません。説明の慣例です。

あなたの例では、各1Dフィルターは実際にはLx50フィルターです。ここで、Lはフィルター長のパラメーターです。畳み込みは1次元でのみ実行されます。それが1Dと呼ばれる理由かもしれません。したがって、適切なパディングを使用すると、各1Dフィルターの畳み込みにより400x1のベクトルが得られます。 Convolution1Dレイヤーは、最終的に400 * nb_filterの行列を出力します。

13
pyan