TypeError:无法在烧瓶中使用柔性类型执行reduce



我需要一个人来帮助我完成这个烧瓶项目

我正在做一个分类程序,对阿尔茨海默氏症进行分类,我需要在第82行和第87行中解决这个问题

@app.route('/predict', methods=['GET', 'POST'])
def predict():
if request.method == 'POST':
# Get the image from post request
img = base64_to_pil(request.json)
# Save the image to ./uploads
img.save("image.png")
image_width, image_height = 224, 224
img = image.load_img("image.png", target_size=(image_width, image_height))
# Make prediction
classes = {'MildDemented': 0,'ModerateDemented': 1,'NonDemented': 2,'VeryMildDemented': 3}
new_dict = {value:key for (key,value) in classes.items()}
preds = new_dict[np.argmax(model_predict(img))]
# Process your result for human
pred_proba = "{:.3f}".format(np.amax(preds))    # Max probability
result = str(preds)              # Convert to string
# result = result.replace('_', ' ').capitalize()

# Serialize the result, you can add additional fields
return jsonify(result=result, probability=pred_proba)
return None

错误

Traceback (most recent call last):
File "C:Usersgoudamyenvlibsite-packagesflaskapp.py", line 2073, in wsgi_app
response = self.full_dispatch_request()
File "C:Usersgoudamyenvlibsite-packagesflaskapp.py", line 1518, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:Usersgoudamyenvlibsite-packagesflaskapp.py", line 1516, in full_dispatch_request
rv = self.dispatch_request()
File "C:Usersgoudamyenvlibsite-packagesflaskapp.py", line 1502, in dispatch_request
return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
File "c:/Users/gouda/Desktop/graduation project/keras-flask-deploy-webapp-master/app.py", line 82, in predict
pred_proba = float("{:.3f}".format(np.max(preds)))    # Max probability
File "<__array_function__ internals>", line 5, in amax
File "C:Usersgoudamyenvlibsite-packagesnumpycorefromnumeric.py", line 2705, in amax
return _wrapreduction(a, np.maximum, 'max', axis, None, out,
File "C:Usersgoudamyenvlibsite-packagesnumpycorefromnumeric.py", line 87, in _wrapreduction
return ufunc.reduce(obj, axis, dtype, out, **passkwargs)
TypeError: cannot perform reduce with flexible type
127.0.0.1 - - [2021-12-18 02:02:39] "POST /predict HTTP/1.1" 500 426 3.283108

阅读回溯,我发现错误发生在:

pred_proba = float("{:.3f}".format(np.max(preds)))    # Max probability

这是与发布的代码最清晰匹配的回溯行。从那里回来工作,我可以用重现错误

In [785]: classes = {'MildDemented': 0,'ModerateDemented': 1,'NonDemented': 2,'V
...: eryMildDemented': 3}
...: new_dict = {value:key for (key,value) in classes.items()}
In [786]: new_dict
Out[786]: 
{0: 'MildDemented',
1: 'ModerateDemented',
2: 'NonDemented',
3: 'VeryMildDemented'}
In [787]: new_dict[1]
Out[787]: 'ModerateDemented'
In [788]: np.amax(new_dict[1])
Traceback (most recent call last):
File "<ipython-input-788-776c7a8af82b>", line 1, in <module>
np.amax(new_dict[1])
File "<__array_function__ internals>", line 5, in amax
File "/usr/local/lib/python3.8/dist-packages/numpy/core/fromnumeric.py", line 2754, in amax
return _wrapreduction(a, np.maximum, 'max', axis, None, out,
File "/usr/local/lib/python3.8/dist-packages/numpy/core/fromnumeric.py", line 86, in _wrapreduction
return ufunc.reduce(obj, axis, dtype, out, **passkwargs)
TypeError: cannot perform reduce with flexible type

换句话说,您正在尝试将np.amax应用于包含一个字符串的数组。绳子上的最大值没有意义!

最新更新