如何解决第一次折叠后,并没有开始并行安装深度网络
我将使用深度神经网络在10倍交叉验证中实施直接预测策略以对时间序列进行预测。使用直接策略进行预测对于在H个不同的时间范围内训练H模型是必要的。 由于这种预测策略在执行时间上非常昂贵,因此我想利用远程计算机的所有内核来适应各种模型。这是我感兴趣的代码的一部分:
import multiprocessing
from os import path
from lib import custom_callbacks as cbacks
def fit_model(x_train,y_train,experiment_model,model_map,epochs,config,cp_dir,output_log_keras,idx=0):
from keras.callbacks import EarlyStopping
from keras.callbacks import CSVLogger
from keras.callbacks import ModelCheckpoint
print('Worker %s in fitting model' % str(idx))
# MODEL
# CALLBACKS -> EARLY STOPPING
es = EarlyStopping(monitor='loss',min_delta=float(config['MODEL']['min_delta']),mode='min',patience=int(config['MODEL']['patience']),verbose=1,restore_best_weights=True)
# CALLBACKS -> CSV LOGGER
csv_logger = csv_logger = CSVLogger(output_log_keras + 'model_step_' + str(idx + 1),append=True,separator=';')
# CALLBACK -> SAVE CHECK POINT
path_to_save_cp = path.join(cp_dir,'model_step_' + str(idx + 1))
save_cp = ModelCheckpoint(path_to_save_cp,monitor='loss',verbose=0,save_best_only=False,save_weights_only=False)
# CALLBACK -> TIME HISTORY
time_callback = cbacks.TimeEpochs()
# MODEL________________
model = getattr(experiment_model,model_map[config['MODEL']['model']])()
model.compile(
loss={
'PL_output': config['COMPILE']['PL_loss'],'IAT_output': config['COMPILE']['IAT_loss'],'PD_output': config['COMPILE']['PD_loss']
},loss_weights={
'PL_output': float(config['COMPILE']['PL_weight']),'IAT_output': float(config['COMPILE']['IAT_weight']),'PD_output': float(config['COMPILE']['PD_weight'])
},optimizer='adam',metrics=['accuracy'])
print(model.summary())
history = model.fit(x_train,epochs=epochs,batch_size=32,callbacks=[es,time_callback,csv_logger,save_cp])
def fit_model_parallel(x_train,lookahead,n_features,output_log_keras):
jobs = []
for i in range(lookahead):
y_train_list = [y_train[:,j * lookahead + i] for j in range(n_features)]
p = multiprocessing.Process(target=fit_model,args=(x_train,y_train_list,i))
jobs.append(p)
p.start()
for job in jobs:
job.join()
问题在于拟合的模型不是从第二折开始,此外,我没有返回任何错误。好像进程陷入僵局,但我不知道如何。问题出在哪里?
更新1 :我更正了CSVLogger回调的输出文件名,为每个受过训练的模型分配了一个文件,因为最初它可能是唯一的并发源,但是问题仍然存在>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。