Как динамически переключать бэкэнд keras, вызывая метод класса? - PullRequest
0 голосов
/ 08 июля 2020

Я пытаюсь создать API для трех моделей нейронных сетей. Первые 2 используют бэкэнд Theano, а последняя модель требует TensorFlow. Я пытаюсь динамически переключать серверную часть таким образом, чтобы, когда я вызываю класс для первой сети, в которой я загружаю модель, чтобы получить прогнозы, я хочу, чтобы бэкэнд Keras переключился на Theano, и аналогично, когда я вызываю вторую модель, она переключается на Теано. Но когда я вызываю третью модель, я хочу, чтобы бэкэнд сменился на TensorFlow. Я попытался использовать следующий код

from keras import backend as K
def car_categories_gate(self, image_path):
            # import keras.backend
            # K = keras.backend.backend()
            if K.backend() == 'tensorflow':
                os.environ['KERAS_BACKEND'] = 'theano'
                K.set_image_data_format("channels_first")
                print(K.backend())
            print("Gate 1 running")

, чтобы вы могли видеть, что когда я вызываю метод класса car_categories_gate(), он не меняет серверную часть. Я искал больше об этом и выяснил, что мне нужно перезагрузить модуль, поэтому я попробовал import importlib; importlib.reload(K) после того, как установил формат данных изображения для перезагрузки модуля K. Но когда я использую это, я получаю другую ошибку:

RuntimeError: Mixed dnn version. The header is version 7401 while the library is version 7600.

Я не использую ноутбук, это просто файл .py. Есть ли простой способ динамически изменять серверную часть всякий раз, когда я вызываю метод класса? любая помощь будет принята с благодарностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...