Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ValueError:无法将输入数组从形状(128128,3)广播到形状(128128)_Python_Numpy_Image Processing_Machine Learning - Fatal编程技术网

Python ValueError:无法将输入数组从形状(128128,3)广播到形状(128128)

Python ValueError:无法将输入数组从形状(128128,3)广播到形状(128128),python,numpy,image-processing,machine-learning,Python,Numpy,Image Processing,Machine Learning,嗨,我正在构建一个图像分类器,这是我代码的一小部分 在这一部分中,我尝试将“img_data_list”作为一个数组,并将该数组转换为np.array,但是 (img_数据=np.数组(img_数据列表)) 这行代码给了我一个错误 (无法将输入数组从形状(128128,3)广播到形状(128128))我不知道为什么会发生这种情况 for dataset in data_dir_list: img_list=os.listdir(data_path+'/'+ dataset) p

嗨,我正在构建一个图像分类器,这是我代码的一小部分 在这一部分中,我尝试将“img_data_list”作为一个数组,并将该数组转换为np.array,但是 (img_数据=np.数组(img_数据列表)) 这行代码给了我一个错误 (无法将输入数组从形状(128128,3)广播到形状(128128))我不知道为什么会发生这种情况

for dataset in data_dir_list:
    img_list=os.listdir(data_path+'/'+ dataset)

    print ('Loaded the images of dataset-'+'{}\n'.format(dataset))

    for img in img_list:
        image_path = os.path.join(data_path, dataset, img)

        input_img=cv2.imread(image_path)

        if input_img is not None:
            input_img_resize=cv2.resize(input_img,(128,128))
            img_data_list.append(input_img_resize)

        else:
            print(img+' image didnt read')

img_data = np.array(img_data_list)
img_data = img_data.astype('float32')
img_data /= 255

我没有使用cv2,但在其他地方看到了这个问题。如果列表中的任何一个图像没有预期的大小(224,3),则可能会出现上述问题

另一个类似的SO职位:


您可以重新生成数据并重试吗?

我发现解决方案删除数据集中的一些图像后,这些图像已损坏。分类器工作正常

当您有一个具有@Rahul Pant所说的预期形状的图像时,会发生这种情况,可能不是(224224,3),因为您只检查了第0个元素形状。我在一个图像数组中遇到了这个错误,我能够用这个代码修复它

print(len(img_data_list)) #to check the lenght of the list with elements having different shape

for item in img_data_list:
  if item.shape!=(224,224,3):
    img_data_list.remove(item)

print(len(img_data_list)) #you'll know how many corrupt sized images you had

对不起,我是这方面的新手,我不明白我的意思是我不知道该做什么我的意思是如何做对不起,我没有正确地阅读你的问题。我知道一点Numpy,但我不知道cv2。我不明白
img\u data=np.array(img\u data\u list)
怎么会给你那个错误消息。哪个数组具有(128128,3)形状?cv2是一个用于读取、调整图像大小等的库,img_数据列表是(128128,3)。您可以检查
input_img=cv2.imread(image_path,0)
?[[123 175 188][124 176 189][124 176 189]…,[255 255][255 255][255 255]]我没有看到任何令人满意的答案是的,我同意这不是一个答案,但想添加作为评论。但我的个人资料不允许。我可以问一下,你是如何发现这些损坏的图像的吗?我想我可能也有同样的问题。CNN工作得很好,直到我在加载图像和一些我们需要的图像时尝试添加更多数据我们没有加载,我可以在我的终端上看到这个东西,所以我从终端上得到了图像的名称。谢谢。