CIFAR-10 dataset 的下载与使用

基本信息

CIFAR-10 是一个包含60000张图片的数据集。其中每张照片为32*32的彩色照片,每个像素点包括RGB三个数值,数值范围 0 ~ 255。

所有照片分属10个不同的类别,分别是 'airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck'

其中五万张图片被划分为训练集,剩下的一万张图片属于测试集。

下载数据集

打开下面的链接进入官网下载

http://www.cs.toronto.edu/~kriz/cifar.html

下载完成后先解压缩,之后会得到如下几个文件

data_batch_1 ~ data_batch_5 是划分好的训练数据,每个文件里包含10000张图片,test_batch 是测试集数据,也包含10000张图片。他们的结构是一样的,下面就用 data_batch_1 作为例子进行说明。

读取数据

import pickle

def load_file(filename):
    with open(filename, 'rb') as fo:
        data = pickle.load(fo, encoding='latin1')
    return data

首先定义读取数据的函数,这几个文件都是通过 pickle 产生的,所以在读取的时候也要用到这个包。

这里面返回的data是一个字典,先看看这个字典里面有哪些键吧。

data = load_file('test_batch')
print(data.keys())

输出结果

dict_keys(['batch_label', 'labels', 'data', 'filenames'])
  • batch_label 

  对应的值是一个字符串,用来表明当前文件的一些基本信息。  

  如果是 data_batch_1 这个文件,里面的值就是

training batch 1 of 5

  如果是 test_batch 这个文件,里面的值就是

testing batch 1 of 1
  • labels

  对应的值是一个长度为10000的列表,每个数字取值范围 0~9,代表当前图片所属类别

  • data

  10000 * 3072 的二维数组,每一行代表一张图片的像素值。(32*32*3=3072)

  • filenames

  长度为10000的列表,里面每一项是代表图片文件名的字符串。


 

batches.meta 文件可以用相同的方法读取,里面存的是一些基本信息。

  • num_cases_per_batch

  10000

  • label_names
['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']
  • num_vis

  3072

 

转载于:https://www.cnblogs.com/irran/p/cifar-10.html

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您的问题是关于MindSpore框架中ResNet50模型在CIFAR-10数据集上的应用。 ResNet50是一个深度卷积神经网络模型,用于图像分类任务。CIFAR-10是一个经典的图像分类数据集,包含10个类别的60000张32x32的彩色图像。 在MindSpore框架中,您可以使用ResNet50模型对CIFAR-10数据集进行训练和测试。首先,您需要准备好CIFAR-10数据集并将其转换为MindSpore支持的数据格式。然后,您可以使用MindSpore提供的ResNet50模型进行训练和测试。 以下是一个示例代码片段,演示如何在MindSpore中使用ResNet50模型对CIFAR-10数据集进行训练和测试: ``` import mindspore.nn as nn import mindspore.ops.operations as P from mindspore import Model from mindspore import Tensor from mindspore import context from mindspore import dataset as ds from mindspore.train.callback import ModelCheckpoint, CheckpointConfig, LossMonitor from mindspore.train.serialization import load_checkpoint, load_param_into_net from mindspore.nn.metrics import Accuracy # Define the ResNet50 model class ResNet50(nn.Cell): def __init__(self, num_classes=10): super(ResNet50, self).__init__() self.resnet50 = nn.ResNet50(num_classes=num_classes) def construct(self, x): x = self.resnet50(x) return x # Load the CIFAR-10 dataset data_home = "/path/to/cifar-10/" train_data = ds.Cifar10Dataset(data_home, num_parallel_workers=8, shuffle=True) test_data = ds.Cifar10Dataset(data_home, num_parallel_workers=8, shuffle=False) # Define the hyperparameters learning_rate = 0.1 momentum = 0.9 epoch_size = 200 batch_size = 32 # Define the optimizer optimizer = nn.Momentum(filter(lambda x: x.requires_grad, resnet50.get_parameters()), learning_rate, momentum) # Define the loss function loss_fn = nn.SoftmaxCrossEntropyWithLogits(sparse=True, reduction='mean') # Define the model net = ResNet50() # Define the model checkpoint config_ck = CheckpointConfig(save_checkpoint_steps=1000, keep_checkpoint_max=10) ckpt_cb = ModelCheckpoint(prefix="resnet50", directory="./checkpoints/", config=config_ck) # Define the training dataset train_data = train_data.batch(batch_size, drop_remainder=True) # Define the testing dataset test_data = test_data.batch(batch_size, drop_remainder=True) # Define the model and train it model = Model(net, loss_fn=loss_fn, optimizer=optimizer, metrics={"Accuracy": Accuracy()}) model.train(epoch_size, train_data, callbacks=[ckpt_cb, LossMonitor()], dataset_sink_mode=True) # Load the trained model and test it param_dict = load_checkpoint("./checkpoints/resnet50-200_1000.ckpt") load_param_into_net(net, param_dict) model = Model(net, loss_fn=loss_fn, metrics={"Accuracy": Accuracy()}) result = model.eval(test_data) print("Accuracy: ", result["Accuracy"]) ``` 注意:在上述示例代码中,我们使用的是ResNet50网络的一个变体,该变体适用于CIFAR-10数据集的图像大小。如果您想使用标准的ResNet50网络,您需要调整输入图像的大小。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值