keras 为什么函数model.predict()不释放RAM内存?

iyr7buue  于 2023-03-12  发布在  其他
关注(0)|答案(1)|浏览(222)

predict()函数不能释放内存。循环的每一个语句都会占用越来越多的内存。我正在Ubuntu 22.04的Conda env上尝试。
Keras模型是通过谷歌的teachablemachine创建的。
谢谢!
下面是我的代码:

import keras # TensorFlow is required for Keras to work
import cv2  # Install opencv-python
import numpy as np

np.set_printoptions(suppress=True)

model = keras.models.load_model('ml_files/model_lid.h5',compile=False)

camera = cv2.VideoCapture(2)

while True:
    ret, image = camera.read()

    image = cv2.resize(image, (224, 224), interpolation=cv2.INTER_AREA)

    cv2.imshow("Webcam Image", image)

    image = np.asarray(image, dtype=np.float32).reshape(1, 224, 224, 3)

    image = (image / 127.5) - 1

    model.predict(image)

    keyboard_input = cv2.waitKey(1)

    if keyboard_input == 27:
        break
 
    del image

    keras.backend.clear_session()

camera.release()
cv2.destroyAllWindows()

当我注解model.predict()时,RAM是稳定的,甚至keras.backend.clear_session()也无法清除它。

xoshrz7s

xoshrz7s1#

这对我来说也是一场斗争。有几件事你可以试试:
1.每次使用gc.collect()调用后使用垃圾回收
1.使用model(image, training=False)调用预测

相关问题