Keras не может правильно загрузить модель при использовании backend.set_session

Минимальная версия моей проблемы представлена ​​следующим образом

import numpy as np
from keras import backend as K
from keras.models import load_model

model = load_model('model_1.h5')
K.set_session(tf.Session())
state = np.matrix(np.array([1,1,1,1,1]))
model.predict(state)

здесь model_1.h5 - это сохраненная модель, построенная Керасом. Код выше показывает ошибки

Attempting to use uninitialized value dense_2/kernel

Однако, если мы сначала set_session, как следует

K.set_session(tf.Session())
model = load_model('model_1.h5')
state = np.matrix(np.array([1,1,1,1,1]))
model.predict(state)

Дальше все работает нормально.

В моей реальной проблеме я пишу класс deploy, который принимает загруженную модель в качестве входных данных. При инициализации этого класса я также использую set_session для установки параметров использования графического процессора. Таким образом, когда я инициирую deploy, set_session всегда запускается сразу после загруженной модели (аналогично первому примеру, приведенному выше), что вызывает ошибку, показанную выше. Есть ли способ исправить такие проблемы?

Вы настраиваете созданный сеанс в своем классе? Что, если вы сначала создадите, настроите и установите сеанс, а затем создадите экземпляр своего класса? Это работает для вашего сценария?

today 11.09.2018 21:49

Не могли бы Вы уточнить ? Я не совсем понимаю ваше мнение.

JunjieChen 12.09.2018 02:52

Я имею в виду, вы изменяете атрибуты вашего вновь созданного сеанса? Не могли бы вы сначала создать сеанс, установить его, а затем загрузить свою модель и передать ее своему классу?

today 12.09.2018 08:16
0
3
323
0

Другие вопросы по теме