首页 > 解决方案 > 导入自己的数据,如 MNIST 或 CIFAR10 load_data()

问题描述

我有一个包含图像的文件夹(大约 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 的初学者,所以我不太了解这些系统之上的机制:感谢您的帮助

标签: pythonarraysdeep-learning

解决方案


此时对象np.array是形状,然后你用它 重新塑造它,这是你不想要的。只需删除那两行l,b,cnp_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)

推荐阅读