在Python中,我们可以使用numpy库将多分类训练数据集制成NPZ格式。首先,我们需要将图片数据转换为适合神经网络输入的格式,例如将图片缩放到相同的大小,并将其归一化到0-1之间。然后,我们可以将这些数据保存为.npy文件,最后将其压缩为.npz文件。
import numpy as np # 导入numpy库,用于处理数组和矩阵运算
from PIL import Image # 导入PIL库的Image模块,用于处理图像
import os # 导入os库,用于处理文件和目录操作
def load_images(folder):
images = [] # 创建一个空列表,用于存储图像数据
labels = [] # 创建一个空列表,用于存储标签数据
for filename in os.listdir(folder): # 遍历指定文件夹中的所有文件
img = Image.open(os.path.join(folder, filename)) # 打开当前文件,并将其转换为Image对象
img = img.resize((32, 32)) # 将图像缩放到32x32大小
img_array = np.array(img) / 255.0 # 将图像数据转换为numpy数组,并将像素值归一化到0-1之间
images.append(img_array) # 将处理后的图像数据添加到images列表中
labels.append(int(filename.split('_')[0])) # 从文件名中提取标签信息,并将其添加到labels列表中
return np.array(images), np.array(labels) # 将images和labels列表转换为numpy数组,并返回
def save_as_npz(images, labels, output_file):
np.savez(output_file, images=images, labels=labels) # 将images和labels数组保存为一个npz文件
folder = 'path/to/your/image/folder' # 指定包含图像文件的文件夹路径
images, labels = load_images(folder) # 调用load_images函数,加载图像数据和标签数据
output_file = 'output.npz' # 指定输出的npz文件路径
save_as_npz(images, labels, output_file) # 调用save_as_npz函数,将图像数据和标签数据保存为npz文件