Я пытаюсь предсказать классы, используя две разные модели.
Эти модели сохраняются и загружаются с использованием файлов .json и .h5.
Проблема, с которой я сталкиваюсь, заключается в том, что в 50% случаев все работает нормально, обе модели созданы правильно и способны выполнять свои прогнозы.
Половина времени, кажется, что-то не так с созданием модели (ей), потому что тогда, когда я пытаюсь что-то предсказать, это дает мне такую ошибку
InvalidArgumentError: You must feed a value for placeholder tensor 'input_1_1' with dtype float and shape [?,10693]
[[{{node input_1_1}} = Placeholder[dtype=DT_FLOAT, shape=[?,10693], _device="/job:localhost/replica:0/task:0/device:CPU:0"]()]]
Запуск обеих моделей по отдельности / не одновременно работает отлично. Никаких проблем вообще.
После некоторого поиска в Google я обнаружил, что Keras ведет глобальный график моделей, и это может вызвать ошибку. Мне кажется, что я попробовал большинство предложений, которые нашел в Интернете, но я все еще не могу решить проблему наличия в программе двух разных моделей одновременно.
Таким образом, основываясь на данном аргументе, я хочу либо предсказать, используя модель1, либо модель2:
def predict_using_cnn(text, model, tokenizer, to_predict):
if to_predict == 'functiegroep':
with graph.as_default():
sequences_test = tokenizer.texts_to_sequences([text])
X_test = pad_sequences(sequences_test, maxlen=6616) # TODO fix this hardcoded thingy
y_pred = model.predict(X_test)
return build_response(y_pred, to_predict)
elif to_predict == 'kernfunctie':
with graph.as_default():
sequences_test = tokenizer.texts_to_sequences([text])
X_test = pad_sequences(sequences_test, maxlen=10693) # TODO fix this hardcoded thingy
y_pred = model.predict(X_test)
return build_response(y_pred, to_predict)
Это то место, где иногда оно входит в первый оператор if, думая, что ему нужен ввод 10693, который является другой моделью. Таким образом, программа, кажется, смешивает эти вещи наугад.
Обе модели загружаются с использованием одной и той же функции (конечно, они сохраняются в двух разных переменных)
def load_cnn_model(model_name):
print("loading" + str(model_name))
json_file = open(str(model_name) + '.json', 'r')
loaded_model_json = json_file.read()
json_file.close()
model = model_from_json(loaded_model_json)
model.load_weights(str(model_name) + '.h5')
return model
Все, что поможет мне решить эту проблему, очень ценится!