2016-05-07 1 views
7

私の入力形状は100x100であるはずです。それは文を表します。各単語は100次元のベクトルであり、文章中に最大100語ある。CNNに電話をかけているとき、私にはわからないケラスからの苦情があります。

私はCNNに8つの文章を送ります。私の入力の形が100x100x8でなければならないかどうかは分かりません。

Convolution2D(10, 3, 3, border_mode='same', 
         input_shape=(100, 100)) 

は文句その後、次の行:

入力0は、層convolution2d_1と互換性がありません:期待ndim = 4は、これは私には意味がありませんndim = 3

を見つけました私の入力次元は2です。私はinput_shapeを(100,100,8)に変更することでそれを得ることができます。しかし、 "期待されたndim = 4"ビットはちょうど私には意味をなさない。

なぜ10xフィルタを持つ3x3の畳み込みレイヤーが100x100の入力を受け付けないのかわかりません。

「期待されたndim = 4」についての不満もあります。私は自分のアクティベーション層に問題があります。そこにそれは文句を言う:

softmaxを2Dまたは3Dではないテンソルに適用することはできません。ここでは、ndim = 4

誰でもここで何が起こっているのか、それを修正する方法を説明できますか?どうもありがとう。

答えて

2

2D畳み込みレイヤの欠落したディメンションは、「チャネル」ディメンションです。

画像データの場合は、グレースケール画像では1、カラー画像では3です。

あなたのケースでは、Kerasが文句を言うことがないように、1チャンネルの2D畳み込み、または100チャンネルの1D畳み込みを使用できます。

参考:http://keras.io/layers/convolutional/#convolution2d

2

私は同じ問題を抱えていたと私はchannelinput_shapeへの引数のための1つの次元を追加、それを解決しました。

私はあなたを理解するように私には、以下のソリューションを提案:

Convolution2D(10, 3, 3, border_mode='same', input_shape=(100, 100, 1)) 
関連する問題