ImportError: cannot import name ‘load_img‘ from ‘keras.preprocessing.image‘(D:\anaconda3\envs\...)

问题描述:

使用 CNN 模型对单个图片进行分类预测时,加载图片出现错误。ImportError: cannot import name 'load_img' from 'keras.preprocessing.image' (D:\anaconda3\envs\learn_ai\lib\site-packages\keras\preprocessing\image.py)

ImportError: cannot import name ‘load_img‘ from ‘keras.preprocessing.image‘(D:\anaconda3\envs\...)_第1张图片

问题分析:

首先查看自己的 keras 版本

import keras
print(keras.__version__)

再查看 image.py 源文件,并没有 load_img(), img_to_array() 两个方法,原因在于 keras 2.6 版本之后就发生了变化,类中的有些方法被迁移到其它地方或者被删除了。

但经过查找会发现这两个方法是 images_utils 的方法属性。

ImportError: cannot import name ‘load_img‘ from ‘keras.preprocessing.image‘(D:\anaconda3\envs\...)_第2张图片

查阅文档发现 image_utils 是 keras.utils 的方法属性。

解决办法:

将 from keras.preprocessing.image import img_to_array 改为 from keras.utils import image_utils

使用 image_utils 的 load_img(), img_to_array() 两个方法即可。

# load single image
# from keras.preprocessing.image import img_to_array
from keras.utils import image_utils
pic_dog = 'dog.jpg'
pic_dog = image_utils.load_img(pic_dog,target_size=(50,50))
pic_dog = image_utils.img_to_array(pic_dog)
pic_dog = pic_dog/255
pic_dog = pic_dog.reshape(1,50,50,3)
# result = model.predict_classes(pic_dog)
result = (model.predict(pic_dog) > 0.5).astype("int32")
print(result)

成功解决! 

你可能感兴趣的:(DeepLearning,keras,深度学习,python)