Python 如何通过从不同线程调用predict()来使用两个不同的keras模型进行预测

Python 如何通过从不同线程调用predict()来使用两个不同的keras模型进行预测,python,multithreading,tensorflow,keras,Python,Multithreading,Tensorflow,Keras,我有一个非常复杂的系统,但我用下面的简化代码重现了错误 import numpy as np import cv2 from tensorflow.keras.models import load_model import threading import tensorflow as tf class Predictor(object): def __init__(self): self.model_1 = load_model('model_final_no_lr.

我有一个非常复杂的系统,但我用下面的简化代码重现了错误

import numpy as np
import cv2
from tensorflow.keras.models import load_model
import threading
import tensorflow as tf


class Predictor(object):
    def __init__(self):
        self.model_1 = load_model('model_final_no_lr.h5')
        self.model_2 = load_model('model_final_lr.h5')

    def cv2_to_keras(self, img):
        img = img[..., ::-1]
        img = cv2.resize(img, (32, 32))
        img = np.expand_dims(img, axis=0)
        return img

    def predict1(self, img):
        img = self.cv2_to_keras(img)
        predictions = self.model_1.predict(img)
        label = predictions[0][0]
        return label

    def predict2(self, img):
        img = self.cv2_to_keras(img)
        predictions = self.model_2.predict(img)
        label = predictions[0][0]
        return label

p = Predictor()
images = []
images.append(cv2.imread('aug_lr/test/l/112_0_5126.jpeg'))
images.append(cv2.imread('aug_lr/test/r/35_0_8519.jpeg'))

def tred1():
    image = images[1]
    klas1 = p.predict1(image)
    print '1', klas1
def tred2():
    image = images[2]
    klas2 = p.predict2(image)
    print '2', klas2

t1 = threading.Thread(target=tred1)
t2 = threading.Thread(target=tred2)

t1.start()
t2.start()

t1.join()
t2.join()
运行此命令后,每次从线程调用predict()时,都会出现以下错误:

ValueError:张量张量(“激活_4/Sigmoid:0”,形状=(?,1), dtype=float32)不是此图的元素


我对tensorflow和keras都并没有一个清晰的理解,所以若这是不可能的话,任何解释都是非常感谢的。顺便说一句,我正在使用Python 2.7。

您能添加完整的回溯吗?