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。