尝试使用keras提供的imagenet_utils.preprocess_input(x)方法,并引发错误:
File "C:\Dev\workspace\venvs\venv36\lib\site-packages\keras_applications\imagenet_utils.py", line 186, in preprocess_input
data_format = backend.image_data_format()
AttributeError: 'NoneType' object has no attribute 'image_data_format'
我发现了这篇文章(Keras : Create MobileNet_V2 model "AttributeError"),两者之间是否有联系?
我正在使用Python 3.6,Keras 2.2.4和Tensorflow后端1.12运行此脚本
我正在尝试使用已经预训练的模型,尤其是VGG16模型,并复制了在多个博客中找到的代码示例。 例如此处:https://blog.keras.io/building-a-simple-keras-deep-learning-rest-api.html
代码从imagenet_utils.preprocess_input方法引发异常,因为此基础代码为:
backend, _, _, _ = get_submodules_from_kwargs(kwargs)
返回后端=无,因此代码无法继续执行...
这就是为什么我在调用方法以查看是否为None之前打印后端。似乎某处将其替换为“无”?
import keras
import numpy as np
from keras.applications import VGG16
from keras_applications import imagenet_utils
from keras_preprocessing.image import load_img, img_to_array
if __name__ == '__main__':
model = VGG16(weights="imagenet")
print("backend: {}".format(keras.backend.image_data_format()))
img = load_img('./images/whatever.jpg', target_size=(224, 224))
x = img_to_array(img)
x = np.expand_dims(x, axis=0)
print("backend: {}".format(keras.backend.image_data_format()))
# Seems there is this bug to solve in 2.2.4
x = imagenet_utils.preprocess_input(x) # Will throw an error 'AttributeError: 'NoneType' object has no attribute 'image_data_format''
predictions = model.predict(x)
top_preds = imagenet_utils.decode_predictions(predictions)
print(top_preds)
我应该向Keras团队提出问题吗? 我想念什么吗?
答案 0 :(得分:0)
如果有些人遇到相同的问题,我终于找到了“错误”所在。 读完this github issue与我的极为相似之后,我更改了导入内容:
从keras_applications导入VGG16现在变为从keras.applications导入VGG16
现在从keras.applications导入imagenet_utils