数据集(benchmark)、常用数据集的解析(cifar-10、)

What is the class of this image ?

主要是以下常见的数据集,用以衡量算法的分类准确率:

  • mnist、cifar-10、cifar-100stl-10
  • svhn、ILSVRC2012 task 1

1. cifar-10

CIFAR-10 and CIFAR-100 datasets

  • cifar-10-batches-py(Python 接口)

    import os
    import pickle
    import numpy as np
    
    def load_CIFAR10_batch(filename):
        with open(filename, 'rb') as f:
            data = pickle.load(f, encoding='latin1')
            X = data['data']
            y = data['labels']
            X = X.reshape(-1, 3, 32, 32).transpose(0, 2, 3, 1).astype(np.float32)
            y = np.array(y)
            return X, y
    
    
    def load_CIFAR10(root):
        xs, ys = [], []
        for n in range(1, 6):
            filename = os.path.join(root, 'data_batch_{}'.format(n))
            X, y = load_CIFAR10_batch(filename)
            xs.append(X)
            ys.append(y)
        Xtr = np.concatenate(xs)
        Ytr = np.concatenate(ys)
        Xte, Yte = load_CIFAR10_batch(os.path.join(root, 'test_batch'))
        return Xtr, Ytr, Xte, Yte

    对于描述数据信息的信息(batches.meta),仍然可以使用 pickle.load 的形式加载,加载的结果仍然是一个字典类型:

    with open('batches.meta', 'rb') as f:
        data = pickle.load(f, encoding='latin1')
    print(data)
    
    {'label_names': ['airplane',
      'automobile',
      'bird',
      'cat',
      'deer',
      'dog',
      'frog',
      'horse',
      'ship',
      'truck'],
     'num_cases_per_batch': 10000,
     'num_vis': 3072}
  • cifar-10-batches-mat(matlab 接口)

    最方便的方式是调用 matlab 内置已封装好的 api,helperCIFAR10Data.download/load,或者使用 edit helperCIFAR10Data查看其实现;

    function [train_x, train_y, test_x, test_y] = load_cifar(filepath)
    
        train_x = []; train_y = [];
        for i = 1:5
            filename = fullfile(filepath, sprintf('data_batch_%d.mat', i));
            [batch_train, batch_labels] = load_batch_as_4d_tensor(filename, true);
            train_x = cat(4, train_x, batch_train);
            train_y = [train_y; batch_labels];
        end
        filename = fullfile(filepath, 'test_batch.mat');
        [test_x, test_y] = load_batch_as_4d_tensor(filename, true);
    end
    
    function [train_x, train_y] = load_batch_as_4d_tensor(filename, to_categorical)
    % 这里的 x_train 是 4 维的 tensor, 32*32*3*num
        if  ~exist('to_categorical', 'var') || isempty(to_categorical)
            to_categorical = false;
        end
        load(filename);
        train_x = reshape(data', 32, 32, 3, []);
        train_x = permute(train_x, [2, 1, 3, 4]);       % 互换第一维和第二维
        train_y = labels;
        if to_categorical
            metafile = fullfile(fileparts(filename), 'batches.meta.mat');
            load(metafile);
            train_y = categorical(train_y, 0:9, label_names);
        end
    
    end
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五道口纳什

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值