以下是当前代码:
def load_data():
files = glob.glob('../manga-resized/sliced_images/*.png')
L = []
target_dist = []
i = 0
for fl in files:
image = color.rgb2lab(io.imread(fl))
L.append(image[:,:,:1])
ab = np.vstack(image[:,:,1:])
#print 'ab shape: ',ab.shape
#print 'KNN prediction shape: ',KNN.predict_proba(ab).shape
target_dist.append(KNN.predict_proba(ab))
i+=1
print i
print "finished creating L and target_dist"
X = np.asarray(L)
y = np.asarray(target_dist)
# remember to .transpose these later to 0,3,1,2
print 'X shape: ',X.shape,'y shape: ',y.shape
return X,y
目前我在i = 391之后收到Killed:9消息。我的电脑有16GB的RAM,但我觉得我在某种程度上做得非常低效。最终我希望用近100万个文件来做到这一点,更不用说400了。我觉得这应该是可能的,因为我知道人们用大于400个文件数据集进行训练。那么我怎么搞砸了?是否有一些内存泄漏?我以为那些在python中不可能发生。被杀的任何其他原因:9错误?
感谢
编辑:这是ulimit -a
的结果Alexs-MBP-6:manga-learn alex$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) unlimited
max memory size (kbytes, -m) unlimited
open files (-n) 256
pipe size (512 bytes, -p) 1
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 709
virtual memory (kbytes, -v) unlimited
这是打印内存使用量的输出 - 在文件221之后。
https://bpaste.net/show/26109a193e43。很明显,可用内存正在减少,但是当它被杀死时仍然存在:9
编辑2: 我在其他地方看到np.asarray非常低效。另外,当我从配方中取出这部分时,它确实很好并且不会被杀死。我已经看过np.fromiter等替代品,但那些只覆盖1D数组 - 而不是需要返回的两个4维数组,X和y。有谁知道正确的numpy方式来填充这些数组?
答案 0 :(得分:0)
信号9是外部终止信号。
您可以在资源受限的环境中运行此ff,例如,ulimit -a
将处理时间限制为1秒。在我的Mac上尝试这个,它礼貌地报告" Cputime限制超过&#34 ;;我不知道它会在linux中报告什么。
在运行程序的环境中从命令行尝试point_distance
以查看是否有任何内容。