2016-10-13 2 views
1

Я столкнулся с проблемой при попытке обучить предварительно обученную модель, загруженную из json config + weight.Keras: как установить фазу обучения после загрузки модели

Я использую следующий код (упрощенный):

from keras.utils.layer_utils import layer_from_config  
with open("config.json", "rb") as f: 
    config = json.loads(f.read()) 
    model = layer_from_config(config) 

model.load_weights("weights.net") 

history = model.fit(batch, target, verbose=1, 
        validation_data=(test_batch, test_target), shuffle=True) 

И я получил следующее исключение:

theano.gof.fg.MissingInputError: ("An input of the graph, used to compute DimShuffle{x,x}(keras_learning_phase), was not provided and not given a value.Use the Theano flag exception_verbosity='high',for more information on this error.", keras_learning_phase)

Я думаю, что это имеет смысл, так как у меня уволенные слои в модели, так что должно знать текущее обучение фаза. Как я могу настроить этап обучения «тренироваться»? Или может быть другая проблема здесь?

Заранее благодарен!

ответ

1

Позвольте мне ответить на этот вопрос сам.

Эта проблема относится только к версии keras 1.0.0, и она была исправлена ​​в 1.0.2. Таким образом, фрагмент кода, описанный выше, отлично работает над новой версией keras, не нужно явно устанавливать этап обучения.

Подробнее в github issue tread.