keras无法多次调用model.predict

在用keras循环预测各个主体时,经常会内存溢出。但是单个主体是没有错误的。发现我在对对象重新赋值后内存并没有释放。随着循环次数增加最后内存溢出的


        model = keras.models.load_model('F:/DB1/model/Away10reluBNCNN1D/3468910-1/DB1_s'+ str(j) + '1Seg205m.h5')
        Y_test = to_categorical(np.array(Y_test))
        Y_predict = model.predict([Xtest1, Xtest2,Xtest3, Xtest4,Xtest5, Xtest6,Xtest7, Xtest8,Xtest9, Xtest10])

        # # 返回每行中概率最大的元素的列坐标(热编码转为普通标签)
        y_pred = Y_predict.argmax(axis=1)
        y_true = Y_test.argmax(axis=1)

解决方案:

从别人博客看到的keras无法多次调用model.predict_classes-python黑洞网

1.尝试从函数外部的文件中加载模型,并将模型对象作为函数的参数def predictOne(imgPath, model)。这也将更快,因为不需要每次需要预测时就从磁盘加载权重。

def predictOne(imgPath):

    model = load_model("withImageMagic.h5")
    image = read_image(imgPath)
    test_sample = preprocess(image)
    predicted_class = model.predict_classes(([test_sample]))
    return predicted_class

2.

如果要继续在函数内加载模型,请导入后端:

from keras import backend as K

接着

K.clear_session() 

在加载模型之前。