如何减少内存使用量?

时间:2018-04-26 05:57:20

标签: python-3.x deep-learning keras

我正在尝试在我的数据集上生成预测的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()

1 个答案:

答案 0 :(得分:1)

首先,为什么要为每个预测重新加载模型? 如果只加载模型一次然后进行预测,代码会快得多。 此外,如果您同时加载多张图片,并且您批量预测也会大幅提升速度。

你得到的内存错误是什么? 一个来自tensorflow(或你正在使用的后端)还是来自python的一个? 我最好的猜测是load_model在同一个tensorflow会话中反复加载相同的模型,直到资源耗尽。 如上所述,解决方案只是在开始时加载模型一次。