1、问题。在使用siamese网络构建pair时,大约生成 3亿*2*250 的三维list,处理list期间大约占120G内存,如果直接np.array()会报memoryerror,服务器内存为380G,swap空间为32G,OS为Ubuntu16.04,python为2.7.11,numpy为1.13.1。
2、解决方案。拆解pair为pair left和pair right。
pair left:3亿* 250的二维list,约占60G内存,转为np期间约占300G内存,存储npy大约30G,期间需要注意del list和np用于释放内存。
pair right:3亿* 250的二维list,约占60G内存,转为np期间约占300G内存,存储npy大约30G,期间需要注意del list和np用于释放内存。
pair label:3亿* 1的二维list,处理流程同上,相对较小。
3、参考。
python下numpy数组的最大取值范围?这里max其实并非上限。
使用gc、objgraph干掉python内存泄露与循环引用!
4、问题。使用np.save()处理pair right报错,IOError: 74795622750 requested and 8801504232 written,
但pair left可执行。
5、解决方案。可能由于storage TEMPDIR空间不够的原因。调整del顺序之后,继续尝试运行。
6、参考。
IOError: 74795622750 requested and 8801504232 written。

博客围绕使用siamese网络构建pair时遇到的问题展开。构建三维list处理时占120G内存,直接转np.array报错,通过拆解为pair left、right和label处理,并注意释放内存。此外,使用np.save()处理pair right报错,可能因TEMPDIR空间不足,调整del顺序后再尝试。

7万+

被折叠的 条评论
为什么被折叠?



