3

KerasのSimpleRNNのテキストから練習しようとしています。 KerasでKeras SimpleRNNでinput_shapeが3-dに指定されたときのエラー

以下のように、私はSimpleRNNのための非常にシンプルなパラメータを指定:私はinput_shapeは(nb_samples、タイムステップ、input_dim)、私のtrain_x.shape

と同じでなければならないことを理解し

model = Sequential() 
model.add(SimpleRNN(output_dim=1, input_shape=(1,1,1)) 

だから私は次のエラーを受け取ったことに驚いた。

Traceback (most recent call last): 
    File "C:/Users/xxx/xxxx/xxx/xxx.py", line 262, in <module> 
    model.add(SimpleRNN(output_dim=vocab_size, input_shape=train_x.shape)) 
    File "C:\Anaconda3\envs\py34\lib\site-packages\keras\models.py", line 275, in add 
    layer.create_input_layer(batch_input_shape, input_dtype) 
    File "C:\Anaconda3\envs\py34\lib\site-packages\keras\engine\topology.py", line 367, in create_input_layer 
    self(x) 
    File "C:\Anaconda3\envs\py34\lib\site-packages\keras\engine\topology.py", line 467, in __call__ 
    self.assert_input_compatibility(x) 
    File "C:\Anaconda3\envs\py34\lib\site-packages\keras\engine\topology.py", line 408, in assert_input_compatibility 
    str(K.ndim(x))) 
Exception: Input 0 is incompatible with layer simplernn_1: expected ndim=3, found ndim=4 

わからないkerasが唯一の3が指定されたときに "ndim = 4見つかった" なぜ!

明確にするために、私の

train_x.shape =(73、84、400)

vocab_size = 400

。 input_shapeが3d以上で与えられている限り、エラーが発生することに気付きました。

何か助けていただければ幸いです! :)

答えて

2

モデルの入力形状にn_samplesを含めることは想定されていません。したがって、レイヤーの入力シェイプのサイズタプルを指定する必要があります(または、図形の最初の要素をNoneに設定する必要があります)。 Kerasは入力形状にNoneを自動的に追加し、結果はndim=4となります。 詳細についてはhereをご覧ください。

また、あなたのinput_dim=400は(あなたが語彙中の単語のワンホットコーディング表現を使用すると仮定した場合)ことが表示されますし、あなたのトレーニングデータが73テキスト(かなり小さな)84の各々が有する長さで構成されています。だからおそらく設定する必要がありますinput_shape=(84,400).

+0

うんうん!あなたが正しいです!これを理解するために私をしばらくかかった!ご協力いただきありがとうございます!! – snowflake

+0

@snowflake問題を解決した場合は、回答を受け入れることを検討してください。 –

関連する問題