Python 无法将自定义数据集加载到cnn预训练以进行特征提取
您好,我是所有这些的新手,我正在尝试用我的自定义数据集为经过预训练的CNN VGG16提供信息,然后用numpy实现每个图像的特征提取。但是我犯了这个错误:'numpy.ndarray'对象没有属性'load\u img'真的有什么帮助吗Python 无法将自定义数据集加载到cnn预训练以进行特征提取,python,cnn,Python,Cnn,您好,我是所有这些的新手,我正在尝试用我的自定义数据集为经过预训练的CNN VGG16提供信息,然后用numpy实现每个图像的特征提取。但是我犯了这个错误:'numpy.ndarray'对象没有属性'load\u img'真的有什么帮助吗 from keras.applications.vgg16 import VGG16 from keras.preprocessing import image from keras.applications.vgg16 import preprocess_i
from keras.applications.vgg16 import VGG16
from keras.preprocessing import image
from keras.applications.vgg16 import preprocess_input
import numpy as np
import matplotlib.pyplot as plt
import os
model = VGG16(weights='imagenet', include_top=False)
dir_images = "C:/Users/.../Desktop/db"
imgs = os.listdir(dir_images)
for imgnm in imgs:
image = plt.imread(os.path.join(dir_images, imgnm))
img = image.load_img(image, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
x = preprocess_input(x)
features = model.predict(x)
#np.save('features.csv', features)
您正在覆盖
keras的模块image
。使用matplotlib加载的实际图像进行预处理
那就换线吧
image = plt.imread(os.path.join(dir_images, imgnm))
去做其他类似的事情
arr_image = plt.imread(os.path.join(dir_images, imgnm))
然后这个错误就会消失
但是请注意,image.load\u img
将路径作为输入,而不是类型为ndarray
的实际图像,因此您应该在循环中使用load\u img
,并删除matplotlib加载。您正在通过自己加载的实际图像对keras的模块image
进行预处理matplotlib
那就换线吧
image = plt.imread(os.path.join(dir_images, imgnm))
去做其他类似的事情
arr_image = plt.imread(os.path.join(dir_images, imgnm))
然后这个错误就会消失
但是请注意,image.load\u img
将路径作为输入,而不是类型为ndarray
的实际图像,因此您应该改为在循环中使用load\u img
并移除matplotlib加载。您已经使用plt.imread打开了图像,因此每次都要用新图像覆盖变量图像。稍后您想再次加载图像,但它已作为numpy数组打开,这会导致错误。您需要重写第4-7行以使其正常工作。您已经使用plt.imread打开了映像,因此每次都要使用新映像覆盖变量映像。稍后您想再次加载图像,但它已作为numpy数组打开,这会导致错误。你必须重写第4-7行才能让它工作。