2017-02-19 6 views
3

я использовал образец кода здесь: https://github.com/fchollet/keras/issues/2295Keras не load_model работать после обучения

Я не могу загрузить свою модель после обучения его в keras. Я получаю следующее сообщение об ошибке:

ValueError: Optimizer weight shape (3, 3, 512, 512) not compatible with provided weight shape (256, 43)

Я попытался с помощью HDFView и удаление весов Оптимизатор и перегрузки. Но тогда я получаю ошибку:

ValueError: ('shapes (10,4224) and (1128,256) not aligned: 4224 (dim 1) != 1128 (dim 0)', (10, 4224), (1128, 256)) 
Apply node that caused the error: Dot22(Reshape{2}.0, lstm_2_W_i) 
Toposort index: 249 
Inputs types: [TensorType(float32, matrix), TensorType(float32, matrix)] 
Inputs shapes: [(10, 4224), (1128, 256)] 
Inputs strides: [(16896, 4), (1024, 4)] 
Inputs values: ['not shown', 'not shown'] 
Outputs clients: [[Elemwise{Add}[(0, 0)](Dot22.0, InplaceDimShuffle{x,0}.0)]] 

Я также попытался сохранением архитектуры в формат JSON и сохранение веса отдельно, а затем загружается, но даже это не удается.

ответ

1

Я смог разработать обходное решение. Мне удалось загрузить обученную модель, используя следующие шаги:

  1. Создать последовательную модель. Пример: model = Sequential() model.add(...) model.add(...) model.compile(...) model.fit(...)

  2. После обучения сохранить только модели весов с помощью model.save_weights() Пример: model.save_weights(SaveLocation)

  3. Для загрузки весов модели, создать модель программно так же, как в шаге 1, но не используйте функцию model.compile. Пример: model = Sequential() model.add(...) model.add(...) model.load_weights(weightFile)

  4. Веса теперь загружены успешно.

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