我有一个包含图像的文件夹(大约4500张),我想加载它们以填充我已经编写的GAN,所以我想像CIFAR10或MNIST load_data()函数一样在X_train中加载图像。

我已经尝试过此功能(文件夹中的所有数据都带有标签0 ..):

def get_data(path):
    all_images_as_array=[]
    label=[]
    for filename in os.listdir(path):
        label.append(0)
        img=Image.open(path + filename)
        np_array = np.asarray(img)
        l,b,c = np_array.shape
        np_array = np_array.reshape(l*b*c,)
        all_images_as_array.append(np_array)
    return np.array(all_images_as_array), np.array(label)


但它返回一个形状数组:

(4364, 3072)


编辑:我认为3072是因为图像是32 * 32 * 3 ...

我想要一个与MNIST或CIFAR10返回的形状相同的数组load_data():

(NumberOfImages, 32, 32, 3)


如何更改我的功能?

谢谢

PS:对不起,我是Python的初学者,所以我不太了解这些系统的机制:谢谢您的帮助

最佳答案

此时对象np.array的形状为l,b,c np_array = np.asarray(img)
然后,您可以使用np_array = np_array.reshape(l*b*c,)重塑形状,这是您不想要的。只需删除这两行

同样,由于标签始终为0,因此无需将其附加在循环中,只需将其返回即可。

def get_data(path):
    all_images_as_array=[]
    for filename in os.listdir(path):
        img=Image.open(path + filename)
        np_array = np.asarray(img)
        all_images_as_array.append(np_array)

    all_images = np.array(all_images_as_array)
    return all_images, np.zeros_like(all_images)

关于python - 导入自己的数据,例如MNIST或CIFAR10 load_data(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59583965/

10-10 14:23