我可能会迟到,但我发布我的答案是为了帮助其他访问此问题以寻找答案的人。在这个答案中,我将解释数据集类型、如何生成此类数据集以及如何加载这些文件。
文件格式是什么
这些数据集已经是vectorized 和Numpy format 中的数据集。检查here (Keras Datasets Documentation) 以获取参考。这些数据集以.npz 文件格式存储。检查here(MNIST digits classification dataset)。这是从文档中复制的代码块以供参考。
tf.keras.datasets.mnist.load_data(path="mnist.npz")
生成 .npz 文件后,您可以像使用 mnist 默认数据集一样使用它。
如何生成 .npz 文件
以下是如何从文件夹中的所有图像生成这样的数据集
#generate and save file
from PIL import Image
import os
import numpy as np
path_to_files = "./images/"
vectorized_images = []
for _, file in enumerate(os.listdir(path_to_files)):
image = Image.open(path_to_files + file)
image_array = np.array(image)
vectorized_images.append(image_array)
# save as DataX or any other name. But the same element name is to be used while loading it back.
np.savez("./mnistlikedataset.npz",DataX=vectorized_images)
如果您想使用保存多个元素,您可以通过对代码进行适当的其他更改来执行类似的操作。
np.savez("./mnistlikedataset.npz",DataX=vectorized_images_x,DataY=vectorized_images_Y)
如何加载数据文件
#load and use file
import numpy as np
path = "./mnistlikedataset.npz"
with np.load(path) as data:
#load DataX as train_data
train_data = data['DataX']
print(train_data)
类似于保存多个元素,如果您想从文件中加载多个元素,您可以通过其他适当的更改来执行类似的操作
with np.load(path) as data:
train_data = data['DataX']
print(train_data)
test_data = data['DataY']
print(test_data)