def train_networks(self, networks):
"""
train each networks on cluster server
:param networks: network lists
:return: networks
"""
try :
tasks = []
#i = inspect()
#if (i.active() == None):
if (self.debug_mode):
# for debug you can run all tasks on django process
for network in networks:
if(network['flag'] == True ) :
continue
result = train(network.get('nn_id'), str(network.get('nn_wf_ver_id')))
key = '_'.join([network['nn_id'], str(network['nn_wf_ver_id'])])
network['acc'] = result[key].get('accuracy')
network['flag'] = True
else :
# You can use cluster servers for faster hyper parameter searching
# using cluster server with celery for genetic algorithm
for network in networks :
if (network['flag'] == True):
continue
tasks.append(train.subtask((network.get('nn_id'), str(network.get('nn_wf_ver_id')))))
results = group(tasks).apply_async()
results = results.join()
for result in results :
for network in networks :
key = '_'.join([network['nn_id'], str(network['nn_wf_ver_id'])])
if(key in list(result.keys()) and result[key] is not None and result[key].get('accuracy') is not None) :
network['acc'] = result[key].get('accuracy')
network['flag'] = True
return networks
except Exception as e :
logging.error("Error on training : {0} ".format(e))
评论列表
文章目录