I nicht die solution.My Bildform ist 128 * 128 * 3 finden konnte, hat es drei Kanäle, aber es verursacht auch den FehlerPython numpy Valueerror wenn I-Bilddaten zu laden und sie auf einen Array
File "E:/ML/keras_test/vgg.py", line 30, in load_data data[i,:,:,:] = arr
ValueError: could not broadcast input array from shape (128,128) into shape (128,128,3)
Mein Code unten ein:
def load_data(path):
data = np.empty((12755,128,128,3),dtype="uint8")
label = np.empty((12755,),dtype="uint8")
imgs = []
imgs_name = []
for each_person in os.listdir(path):
temp = os.path.join(path,each_person)
for each_image in os.listdir(temp):
imgs.append(temp + "\\" + each_image)
imgs_name.append(each_image)
num = len(imgs)
for i in range(num):
img = Image.open(imgs[i])
arr = np.asarray(img,dtype="uint8")
print arr.shape
data[i,:,:,:] = arr
label[i] = int(imgs_name[i].split('.')[0])
print 'load_data is ok!' + str(data.shape[0])
return data,label
aber mein Bild hat wirklich RGB channel.And wenn ich arr.shape verwenden, um es zu überprüfen.Ich bin sicher, dass jedes Bild hat drei Kanal – sky
Mein Bild hat drei Kanäle, dann sollte es 16384 * 3 array.So ich creat eine Anordnung, die die Form (12755, 128, 128, ...) hat. Aber ich weiß nicht, warum es diesen Fehler haben wird? – sky
Sie wollen also die 3 Kanäle behalten ... Ich habe Sie missverstanden. Versuchen Sie, die Form des Zielarrays zu erklären. – davidshen84