如何把kesciCIFAR10数据集加载到Tensorflow中(文末附数据集)

工欲善其事必先利其器,然而每次处理数据集总会遇到数据集加载的问题。本文实现了kesci中CIFAR10数据集加载到Tensorflow中。话不多说,文末附代码。

数据集介绍

背景说明

CIFAR-10数据集是由CIFAR(Candian Institute For Advanced Research) 收集整理的一个用于机器学习和图像识别问题的数据集。
这个数据集共有60000张32 * 32的涵盖10个分类的彩色图片。详情链接
Image Name

如何在线使用数据集

Python用户,创建项目后,输入 !ls ../input/cifar10/ 查看数据集路径
R用户,创建项目后,输入 !list.files('../input/cifar10/') 查看数据集路径

数据说明

  • 数据集的整体特征
数据集名称数据类型实例数图像宽图像高相关任务
CIFAR10数据集图片数据60,0003232分类任务

数据集包含了6个文件,其中5个位训练集文件,1个为测试集文件。
每个文件都是一个由cPickle生成的Python "pickled"对象。
可以使用官方提供的'unpickle()'函数来加载此类文件,函数返回一个字典(dictionary)。

  • 文件列表

    • 训练集部分: 50,000张图片
      • data_batch_1:训练集batch_1,含10000张32 * 32的点阵图
      • data_batch_2:训练集batch_2,含10000张32 * 32的点阵图
      • data_batch_3:训练集batch_3,含10000张32 * 32的点阵图
      • data_batch_4:训练集batch_4,含10000张32 * 32的点阵图
      • data_batch_5:训练集batch_5,含10000张32 * 32的点阵图
    • 测试集部分:
      • test_batch:测试集test_batch,含10000张32 * 32的点阵图
    • 类别名字
      • batches.meta:包含一个Python字典对象,条目内容如下:
        • label_names: 是一个包含10个元素的列表,赋予了类别列表中数字类别真正意义上的名字。比如,
          • label_names[0] == "airplane" 飞机✈️
          • label_names[1] == "automobile"汽车🚗
          • label_names[2] == "bird"鸟🐦
          • label_names[3] == "cat"猫🐈
          • 等等。
  • unpickle() 函数(数据说明中给出一个加载函数unpickle(),这里针对这个函数进行修改
def unpickle(file):
      import pickle
      with open(file, 'rb') as fo:
              dict = pickle.load(fo, encoding='bytes')
      return dict
  • 返回的一个字典包含以下元素:

    • data: 一个10000x3072的numpy数组,数据类型为uint8。数组的每一行存储了一个32x32的彩色图片(RGB)。前1024个的条目包含红色(Red)通道的数值,接下来的1024个的条目包含绿色(Green)通道的数值, 最后的1024个的条目包含蓝色(Blue)通道的数值。图像以行为主顺序存储,因此数组的前32个条目是图像第一行的红色通道值。
    • label: 范围为0-9的10000个数字的列表。索引i处的数字表示数组数据中第i个图像的标签。

最后附上代码:

# 预处理数据
def unpickle(file):
      import pickle
      with open(file, 'rb') as fo:
              dict = pickle.load(fo, encoding='bytes')
      return dict

def load_dataset():
    
    train_path = '/home/ATM006/data/cifar10/data_batch_'
    train_data = []
    train_labels = []
    for i in range(1, 6):
        train_data_tmp = unpickle(train_path + str(i))[b'data']
        for item in train_data_tmp:
            train_data.append(item)
            
        train_labels += unpickle(train_path + str(i))[b'labels']
        
    train_set_x_orig = np.array(train_data)
    train_set_y_orig = np.array(train_labels)
   
    
    test_data = unpickle('/home/ATM006/data/cifar10/test_batch')
    test_set_x_orig = np.array(test_data[b'data'][:])
    test_set_y_orig = np.array(test_data[b'labels'][:])
    

    train_set_y_orig = train_set_y_orig.reshape((1, train_set_y_orig.shape[0]))
    test_set_y_orig = test_set_y_orig.reshape((1, test_set_y_orig.shape[0]))
    
    classes = np.array([0])

    return train_set_x_orig, train_set_y_orig, test_set_x_orig, test_set_y_orig, classes

# Loading the dataset
X_train_orig, Y_train_orig, X_test_orig, Y_test_orig, classes = load_dataset()

 

数据集

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值