我正在尝试在我的数据集上生成预测的pickle文件。但是在执行代码6小时后,PC一次又一次地耗尽内存。我想知道是否有人可以帮我这个?
from keras.models import load_model
import sys
sys.setrecursionlimit(10000)
import pickle
import os
import cv2
import glob
dirlist = []
imgdirs = os.listdir('/chars/')
imgdirs.sort(key=float)
for imgdir in imgdirs:
imglist = []
for imgfile in glob.glob(os.path.join('/chars/', imgdir, '*.png')):
img = cv2.imread(imgfile)
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
model = load_model('mymodel.h5')
predictions=model.predict(img)
print('predicted model:', predictions)
imglist.append(predictions)
dirlist.append(imglist)
q = open("predict.pkl","wb")
pickle.dump(dirlist,q)
q.close()
答案 0 :(得分:1)
首先,为什么要为每个预测重新加载模型? 如果只加载模型一次然后进行预测,代码会快得多。 此外,如果您同时加载多张图片,并且您批量预测也会大幅提升速度。
你得到的内存错误是什么? 一个来自tensorflow(或你正在使用的后端)还是来自python的一个? 我最好的猜测是load_model在同一个tensorflow会话中反复加载相同的模型,直到资源耗尽。 如上所述,解决方案只是在开始时加载模型一次。