2017-02-21 75 views
1

私は次元(224,224,3)の入力画像を持つkeras機能APIを使用しています。同様の問題は、シーケンシャルモデルで発生しているようだが、私は、機能的なAPIを使用して、次のモデルがあります:Keras入力データがありません

input = Input(shape=(224, 224, 3,)) 
shared_layers = Dense(16)(input) 
model = KerasModel(input=input, output=shared_layers) 
model.compile(loss='binary_crossentropy', optimizer='sgd', metrics='accuracy']) 

私は私の発電機が

yield ({'input_1': image}, {'output': classification}) 

imageが入力(224、でありmodel.fit_generatorを呼び出しています224、3)画像で、classificationは{-1,1}です。

モデルを当てはめるには、私はエラーを取得する

ValueError: No data provided for "dense_1". Need data for each key in: ['dense_1'] 

一つ奇妙なことは、私がdense_1に辞書のinput_1ターゲットを切り替えた場合、エラーがinput_1の入力が欠落に切り替わりますが、戻って行くことです両方のキーがデータジェネレータにある場合は、dense_1が不足しています。

これは私がfit_generatorを呼び出すか、ジェネレータからバッチを取得してtrain_on_batchを呼び出しても発生します。

何が起こっているのか知っていますか?私が知ることから、これはthe documentationと同じでなければなりませんが、入力サイズは異なります。

Full traceback: 
Traceback (most recent call last): 
    File "pymask.py", line 303, in <module> 
    main(sys.argv) 
    File "pymask.py", line 285, in main 
    keras.callbacks.ProgbarLogger() 
    File "/home/danielunderwood/virtualenvs/keras/lib/python3.6/site-packages/keras/engine/training.py", line 1557, in fit_generator 
    class_weight=class_weight) 
    File "/home/danielunderwood/virtualenvs/keras/lib/python3.6/site-packages/keras/engine/training.py", line 1314, in train_on_batch 
    check_batch_axis=True) 
    File "/home/danielunderwood/virtualenvs/keras/lib/python3.6/site-packages/keras/engine/training.py", line 1029, in _standardize_user_data 
    exception_prefix='model input') 
    File "/home/danielunderwood/virtualenvs/keras/lib/python3.6/site-packages/keras/engine/training.py", line 52, in standardize_input_data 
    str(names)) 
ValueError: No data provided for "input_1". Need data for each key in: ['input_1'] 

答えて

0

これは私がケラスの出力の仕方を誤解していたためです。 output引数で指定されたレイヤーは、Modelにデータからの出力が必要です。私はデータ辞書内のoutputキーが自動的にoutput引数で指定されたレイヤーに移動すると誤解しました。

+0

私は同じ問題を抱えていますが、あなたの答えを理解できませんでした。あなたが行った変更を私に指摘してもらえますか? –

+1

@AntonioSesto私はそれを言いたくはありませんが、私の答えが意味するものについては完全にはわかりません。私はgitとスラックログを見て、あまり見つけられませんでした。私は、私がそこにいると思っていたキーとして '' output''を使っていたのですが、代わりに '' shared_layers''というキーを持つ出力のレイヤーでなければなりませんでした。それが価値あるものであれば、私はこのケースで私の特定のモデルの問題のためにテラス層でテラス層に切り替えることになった。 – danielunderwood

関連する問題