обучить две модели керас параллельно python - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь создать функцию, которая может обучать две модели Keras параллельно. Моя функция выглядит примерно так:

def fit_function(index):
    'some code here'
     print('statrt fitting model1..')
     model_1.fit(X[index],y[index],epochs=1)
     print('statrt fitting model2..')
     model_2.fit(X[index],y[index],epochs=1)
     return

Кроме того, я использую многопроцессорную библиотеку в python:

import multiprocessing
if __name__ == '__main__':
    jobs = []
    for i in range(0,n):
        p = multiprocessing.Process(target=fit_function, args=(i,))
        jobs.append(p)
        p.start()
        p.join()

, после запуска этого она печатает: 'statrt Fitting Model1 ..' что означает, что он входит в функцию, но после этого вывода он ничего не делает! Программа не останавливается и не дает результатов.

Какую часть я делаю неправильно? Буду очень признателен, если вы поможете мне.

1 Ответ

1 голос
/ 23 апреля 2020

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

Вот минимальный пример параллельной тренировки классификатора с различными данными. Здесь я предполагаю, что вам нужно несколько версий модели так, как вы ее кодировали.

from sklearn import svm
X = [ [[0, 0], [1, 1]], [[0, 0], [1, 1]] ]
y = [[0, 1], [1, 0] ]


def fit_function(index, return_models):
  print('statrt fitting model1..')
  print(index)
  clf = svm.SVC()
  clf.fit(X[index], y[index])
  return_models[index] = clf

import multiprocessing
if __name__ == '__main__':
  print(f'Number of cpus: {multiprocessing.cpu_count()}')
  jobs = []
  n = multiprocessing.cpu_count()

  manager = multiprocessing.Manager()
  return_models = manager.dict()

  for i in range(0,n):
    p = multiprocessing.Process(target=fit_function, args=(i, return_models))
    jobs.append(p)
    p.start()
    p.join()

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