2017-02-21 3 views
1

Я использую функциональный API keras с входными изображениями размерности (224, 224, 3). У меня есть следующие модели с использованием функционального 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']) 

Я зову model.fit_generator, где мой генератор имеет

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

image является входом (224, 224, 3) и classification находится в {-1,1}.

На подгонки модели, я получаю сообщение об ошибке

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

Одна странная вещь, что если я переключаю input_1 Цель Dict в dense_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

@ AnntonioSesto Ненавижу говорить об этом, но я не совсем уверен в том, что означает мой ответ. Я оглянулся назад через джит и провалил журналы и не смог найти слишком много. Я заметил, что проблема заключалась в том, что я использовал '' output'' в качестве ключа, который, как я думал, был бы там, но ключ вместо этого должен был быть слоем вывода, который вместо этого имел бы ключ '' shared_layers''. Для чего это стоит, я также переключился на тензорный поток с тензорным слоем, а не с керами из-за проблем с моей конкретной моделью в этом случае. – danielunderwood

Смежные вопросы