欢迎访问宙启技术站
智能推送

通过load_data()函数在Python中加载CIFAR-10图像数据集

发布时间:2023-12-25 21:02:50

在Python中加载CIFAR-10图像数据集是一个常见的任务,CIFAR-10数据集是一个包含10个不同类别图像的常用计算机视觉数据集。这些类别包括飞机、汽车、鸟、猫、鹿、狗、青蛙、马、船和卡车。这个数据集广泛用于训练和测试图像分类算法。

要加载CIFAR-10数据集,我们可以使用Python中的一些库和函数。下面是一个加载CIFAR-10数据集的示例代码:

import pickle
import numpy as np

def load_data():
    # 将CIFAR-10数据集分为训练集和测试集
    training_data = []
    training_labels = []
    testing_data = []
    testing_labels = []

    for i in range(1, 6):
        # 加载训练集
        with open(f'cifar-10-batches-py/data_batch_{i}', 'rb') as f:
            data = pickle.load(f, encoding='bytes')
            training_data.append(data[b'data'])
            training_labels.append(data[b'labels'])

        # 加载测试集
        if i == 5:
            with open(f'cifar-10-batches-py/test_batch', 'rb') as f:
                data = pickle.load(f, encoding='bytes')
                testing_data.append(data[b'data'])
                testing_labels.append(data[b'labels'])

    # 将列表转换为numpy数组
    training_data = np.concatenate(training_data, axis=0)
    training_labels = np.concatenate(training_labels, axis=0)
    testing_data = np.concatenate(testing_data, axis=0)
    testing_labels = np.concatenate(testing_labels, axis=0)

    # 对数据进行预处理,将像素值从[0, 255]归一化到[0, 1]
    training_data = training_data / 255.0
    testing_data = testing_data / 255.0

    return training_data, training_labels, testing_data, testing_labels

# 加载CIFAR-10数据集
train_data, train_labels, test_data, test_labels = load_data()

# 输出数据集的维度
print("训练集维度:", train_data.shape)
print("训练集标签维度:", train_labels.shape)
print("测试集维度:", test_data.shape)
print("测试集标签维度:", test_labels.shape)

在这个例子中,我们首先定义了一个load_data()函数,该函数负责加载CIFAR-10数据集并返回训练集和测试集的数据和标签。

load_data()函数中,我们使用pickle库来加载CIFAR-10数据集文件。训练集由5个文件组成,每个文件包含一部分训练数据和标签。测试集由一个文件组成。

我们使用一个循环来逐个加载文件并将数据和标签添加到相应的列表中。然后,我们使用np.concatenate()函数将列表转换为numpy数组,并将数据进行归一化处理。

最后,我们返回训练集和测试集的数据和标签。

在示例代码的末尾,我们使用load_data()函数加载CIFAR-10数据集,并输出数据集的维度。

这个例子展示了如何在Python中加载CIFAR-10图像数据集。您可以使用这个例子作为参考,加载和处理CIFAR-10数据集,并将其应用于各种计算机视觉任务。