1
私はケラスを使い慣れていません。文書に対して畳み込みを試みています。各文書は、形状が[40 * 4000](各文書には40文、各文には20語があるため、単語の埋め込み次元は200です)の行列で表されます。私は3つの言葉の上に畳み込みを行うたいKeras {ValueError}:入力0はレイヤーconv2d_2と互換性がありません
、これは(正確に同じではありませんが、あなたはあなたのマシン上でこのコードを実行することができます)私のコードです:
import keras
from keras.layers import Input, Embedding, Dense, merge, Conv2D
from keras.layers.core import Reshape
tokens_input = Input(name='input', shape=(40, 20), dtype='int32')
x = Embedding(25000 + 1, 200, name="embedding")(tokens_input)
x = Reshape((40, -1),
name="reshape")(x)
cur_conv = Conv2D(20, kernel_size=(3*200, 1),
strides=(200, 1), padding='valid', activation='relu')(x)
しかし、私は、このエラーメッセージが表示されます:入力0でありますconv2d_1との互換性がありません:予想されるndim = 4、見つかったndim = 3
問題を解決しましたが、私はConv2Dのkerasドキュメントを読んで、パラメータkernel_size 2D畳み込みウィンドウ(** https://keras.io/layers/convolutional/)の**幅と高さ**、実際には、**高さと幅**、つまり行と列を指定するkernel_sizeと思う、私は正しい? – Joey
@Joey入力形状に指定された幅と高さは入力データに対応し、畳み込みフィルタには対応しません。畳み込みフィルタよりもはるかに大きなイメージを持つことができます。 –
私はそれをはっきり言っていないかもしれません。私はConv2D ** kernel_size **のパラメタを意味しています。ドキュメントにはフィルタの幅と高さ**が指定されていますが、フィルタの高さと幅**、つまり行フィルタのcols。 – Joey