Многопроцессорность в Python для обучения нейронных сетей одновременно - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть генетический алгоритм, который выполняет поиск гиперпараметра для нейронной сети. У меня есть 10 поколений, и в каждом поколении генерируется 20 нейронных сетей. Но сейчас для каждого поколения я тренирую по одной сети за раз. Поэтому это занимает много времени. Вместо этого я попытался сделать многопроцессорную работу, где все 20 нейронных сетей обучаются параллельно в каждом поколении. Однако, когда я делаю это, моя информация нейронной сети не обновляется. Вот что я сделал для обучения 20 нейронных сетей одна за другой:

def train_networks(networks, dataset):
    """Train each network.
    Args:
        networks (list): Current population of networks
        dataset (str): Dataset to use for training/evaluating
    """


    print('training each network')
    pbar = tqdm(total=len(networks))
    for network in networks:
        print('training network - inside loop')
        network.train(dataset)
        pbar.update(1)
    pbar.close()
    print('done training')

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

def train_networks(networks, dataset):
    """Train each network.
    Args:
        networks (list): Current population of networks
        dataset (str): Dataset to use for training/evaluating
    """


    for network in networks:
        p = multiprocessing.Process(target=network.train,args=(dataset,))
        p.start()
        p.join()

Но это не должно работать. Как я могу изменить свой код так, чтобы я обучал все 20 сетей параллельно. Помощь будет оценена.

...