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() 

在加载模型之前。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值