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。您能添加完整的回溯吗?