您的位置:首页 > 其它

mxnet中im2rec.py的小问题

2016-07-23 00:00 351 查看
摘要: 在使用im2rec.py时出现EOFerror的解决方法

在windows下使用mxnet自带的转为.lst为.rec文件的工具im2rec.py时会出现pickle的EOFerror,原因是multiprocessing模块的不兼容,只要修改im2rec.py中的下面代码就好:

try:
import multiprocessing
q_in = [multiprocessing.Queue() for i in range(args.num_thread)]
q_out = multiprocessing.Queue(1024)
for i in range(len(image_list)):
q_in[i % len(q_in)].put(image_list[i])
read_process = [multiprocessing.Process(target=read_worker, args=(q_in[i], q_out)) \
for i in range(args.num_thread)]
for p in read_process:
p.start()
write_process = multiprocessing.Process(target=write_worker, args=(q_out,args.prefix))
write_process.start()
for p in read_process:
p.join()
q_out.put(('finish', '', []))
write_process.join()
except ImportError:
print('multiprocessing not available, fall back to single threaded encoding')
import Queue
q_out = Queue.Queue()
record = mx.recordio.MXRecordIO(args.prefix+'.rec', 'w')
cnt = 0
pre_time = time.time()
for item in image_list:
image_encode(item, q_out)
if q_out.empty():
continue
_, s, _ = q_out.get()
record.write(s)
cnt += 1
if cnt % 1000 == 0:
cur_time = time.time()
print 'time:', cur_time - pre_time, ' count:', cnt
pre_time = cur_time

把try里面的内容和except里面的调换,调换以后可以把except里面的内容删除,加一个break
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mxnet