Как уменьшить использование памяти? - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь сгенерировать файл прогноза для моего набора данных.Но после выполнения кода в течение 6 часов ПК снова и снова выходит из памяти.Интересно, может ли кто-нибудь помочь мне с этим?

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 голосов
/ 26 апреля 2018

Прежде всего, почему вы перезагружаете свою модель для каждого прогноза?Код будет намного быстрее, если вы загрузите свою модель только один раз, а затем сделаете прогноз.Кроме того, если вы загружаете несколько снимков одновременно и прогнозируете в пакетном режиме, это также приведет к значительному увеличению скорости.

Какую ошибку нехватки памяти вы получаете?Один из тензорного потока (или какой бэкэнд вы используете) или один из питона?Моим лучшим предположением будет то, что load_model загружает одну и ту же модель снова и снова в одном сеансе тензорного потока, пока ваш ресурс не будет исчерпан.Решение, как указано выше, состоит в том, чтобы просто загрузить модель в начале.

...