Проблема при прогнозировании через мультипроцесс с Tensorflow - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть 4 (или более) модели (одинаковая структура, но разные тренировочные данные).Теперь я хочу объединить их, чтобы сделать прогноз.Я хочу предварительно загрузить модели и затем предсказать одно входное сообщение (по одному сообщению за раз) параллельно через многопроцессорность.Однако программа всегда останавливается на шаге «session.run».Я не мог понять, почему.

Я попытался передать все аргументы функции в каждом процессе, как показано в коде ниже.Я также попытался использовать объект Queue и поместить все данные (кроме объекта модели) в очередь.Я также попытался установить номер процесса равным 1. Это не имело никакого значения.

with Manager() as manager:
    first_level_test_features=manager.list()
    procs =[]
    for id in range(4):
        p = Process(target=predict, args=(id, (message, models, configs, vocabs, emoji_dict,first_level_test_features)))
        procs.append(p)
        p.start()

    for p in procs:
        p.join()

Я не получил никакого сообщения об ошибке, так как он просто застрял там.Я ожидаю, что программа может запустить несколько процессов, и каждый процесс использует проход модели, чтобы сделать прогноз.

1 Ответ

0 голосов
/ 19 сентября 2019

Я не уверен, как будет работать совместное использование сеансов в разных процессах, и, возможно, это ваша проблема.Учитывая то, как работает TensorFlow, я бы посоветовал реализовать вызов ensemble в виде графической операции, чтобы он мог выполняться через один вызов session.run, при этом TF обрабатывал распараллеливание вычислений, где это возможно.

На практикеЕсли у вас есть символические тензоры, представляющие предсказания моделей, вы можете использовать операцию TF для их агрегирования (tf.concat, tf.reduce_mean, tf.add_n ..., в зависимости от того, что подходит вашему дизайну) и в итоге получить один символический тензор, представляющийпредсказание ансамбля.

Надеюсь, это поможет;если нет, пожалуйста, предоставьте более подробную информацию о том, каковы ваши настройки, в частности, какую форму имеют ваши модели.

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