У меня есть генетический алгоритм, который выполняет поиск гиперпараметра для нейронной сети. У меня есть 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 сетей параллельно. Помощь будет оценена.