Я использую предварительно подготовленную модель keras, и при вызове ResNet50 (weights = 'imagenet) возникла ошибка. У меня есть следующий код в колбах сервере:ValueError: Тензор 'A' должен быть с того же графика, что и Tensor 'B'
def getVGG16Prediction(img_path):
model = VGG16(weights='imagenet', include_top=True)
img = image.load_img(img_path, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)
pred = model.predict(x)
return sort(decode_predictions(pred, top=3)[0])
def getResNet50Prediction(img_path):
model = ResNet50(weights='imagenet') #ERROR HERE
img = image.load_img(img_path, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)
preds = model.predict(x)
return decode_predictions(preds, top=3)[0]
при вызове в в главного, он отлично работает
if __name__ == "__main__":
STATIC_PATH = os.getcwd()+"/static"
print(getVGG16Prediction(STATIC_PATH+"/18.jpg"))
print(getResNet50Prediction(STATIC_PATH+"/18.jpg"))
однако, ValueError поднимается, когда я называю его из функции колбы POST:
@app.route("/uploadMultipleImages", methods=["POST"])
def uploadMultipleImages():
uploaded_files = request.files.getlist("file[]")
weight = request.form.get("weight")
for file in uploaded_files:
path = os.path.join(STATIC_PATH, file.filename)
file.save(os.path.join(STATIC_PATH, file.filename))
result = getResNet50Prediction(path)
полная ошибка выглядит следующим образом:
ValueError: Tensor("cond/pred_id:0", dtype=bool) must be from the same graph as Tensor("batchnorm/add_1:0", shape=(?, 112, 112, 64), dtype=float32)
Любые комментарии или предложения очень ценятся. Спасибо.
Благодарим вас за ответ gidim. Я попытался определить его как глобальную переменную, и я получил еще одну ошибку - если бы вы могли посмотреть: http://stackoverflow.com/questions/41991756/valueerror-tensor-is-not-an-element-of-this -граф Спасибо. – matchifang