Windows下TensorFlow模型训练多进程问题解决:Generatorenqueuer类start方法失效
在Windows下,由于'multiprocessing'模块的限制,'Generatorenqueuer'类的'start'方法中的多进程部分无法正常执行。这是因为以下代码在'workers = 0'时无法正常执行:
for _ in range(workers):
if self._use_multiprocessing:
# Reset random seed else all children processes
# share the same seed
np.random.seed(self.seed)
thread = multiprocessing.Process(target=data_generator_task)
thread.daemon = True
if self.seed is not None:
self.seed += 1
else:
thread = threading.Thread(target=data_generator_task)
self._threads.append(thread)
thread.start()
要解决这个问题,可以将'workers'参数设置为1,即将'workers = 0'改为'workers = 1'。
修改后的代码如下:
if os.name is 'nt':
workers = 1
这样就可以避免多进程部分的代码无法执行的问题,保证训练过程的正常进行。
原文地址: https://www.cveoy.top/t/topic/fpx7 著作权归作者所有。请勿转载和采集!