keras中的数据集

数据在深度学习中的重要性怎么说都不为过,无论是训练模型,还是性能调优,都离不开大量的数据。有人曾经断言中美在人工智能领域的竞赛,中国将胜出,其依据就是中国拥有更多的数据。像Google、amazon、腾讯、阿里巴巴之类的巨头,其产品属性天然拥有大量的数据,那对于个人和小型创业公司,数据从哪儿来呢?

除了自行搜集数据,还有一条捷径就是获得公开的数据集,这些数据集往往是研究机构或大公司出于研究的目的而创建的,提供免费下载,可以很好的弥补个人开发者和小型创业公司数据不足的问题。不过由于这些数据集由不同的组织创建,其格式也各不相同,往往需要针对不同的数据集编写解析代码。

keras作为一个高层次的深度学习框架,提供了友好的用户接口,其内置了一些公共数据集的支持。具体说来,keras.datasets模块包含了加载和获取流行的参考数据集的方法。通过这些数据集接口,开发者不需要考虑数据集格式上的不同,全部由keras统一处理,下面就来看看keras中集成的数据集。

注意

keras.datasets模块包含了从网络下载数据的功能,下载后的数据集保存于 ~/.keras/datasets/ 目录。因为这些数据集来源各有不同,有些需要翻墙才能访问。我将这些数据收集起来放到了百度网盘 https://pan.baidu.com/s/1sUV6oQ7mUplTCoXKulA9Sw,有需要的朋友可以自行下载,将下载的数据文件放到 ~/.keras/datasets/ 目录即可。

以下是keras.datasets包含的数据集清单

  1. 波士顿房价数据
  2. CIFAR10 (十种类别的图片集)
  3. CIFAR100 (100种类别的图片集)
  4. MNIST (手写数字图片集)
  5. Fashion-MNIST (10种时尚类别的图片集)
  6. IMDB电影点评数据
  7. 路透社新闻数据

1. 波士顿房价数据

本数据集取自由卡内基梅隆大学维护的StatLib库。这个数据集包含了19世纪70年代末波士顿郊区不同地点的房屋信息数据,每条数据包含13个属性,目标属性是某地点房屋的售价(单位为k$)。

这个数据集的数据较老,再加上房价与很多因素有关,不具有通用性。它可用于练习回归算法,对于实际项目的作用有限,如果用它来预测中国的房价,绝对谬之千里。

加载数据集的代码如下:

from keras.datasets import boston_housing(x_train, y_train), (x_test, y_test) = boston_housing.load_data()

2. CIFAR10

本数据集包含50,000个32x32彩色训练图像和10,000个测试图像,一共10个类别的标签。

加载数据集的代码:

from keras.datasets import cifar10
(x_train, y_train), (x_test, y_test) = cifar10.load_data()

返回一个二元组:

  • x_train和x_test: uint8数组类型的RGB图像数据,其形状为(num_samples, 32, 32, 3)。其中3代表RGB三个通道。
  • y_train和y_test: uint8数组类型的类别标签,类别编号为数字,类别标签值为0-9之间的数字,数组形状(num_samples, ).

3. CIFAR100

和CIFAR10数据集类似,只是标签类别扩充到100个,也就是有100个类别的图像。

4. MNIST

本数据集包含10个数字的60,000个28x28灰度图像,以及10,000个图像的测试集。

加载数据集的代码:

from keras.datasets import mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()

返回一个二元组:

  • x_train和x_test: uint8数组类型的灰度图像数据,其形状为(num_samples, 28, 28)。
  • y_train和y_test: uint8数组类型的类别标签,0-9之间的数字,数组形状(num_samples, ).

5. Fashion-MNIST

本数据集包含10个时尚类别的60,000个28x28灰度图像,以及10,000个图像的测试集。此数据集可用作MNIST的替代品。类别标签定义如下:

标签

描述

0

T恤/上衣

1

裤子

2

套头衫

3

连衣裙

4

外套

5

凉鞋

6

衬衣

7

运动鞋

8

包包

9

短靴

加载数据集的代码:

from keras.datasets import fashion_mnist
(x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()

返回的二元组和MNIST数据集类似。

6. IMDB电影点评数据

来自IMDB的25,000个电影评论的数据集,标记为正面评价和负面评价。数据集并不是直接包含单词字符串,而是已经过预处理,每个评论都被编码为一系列单词索引(整数)。出于方便起见,单词根据数据集中的总体词频进行索引,这样整数“3”就是数据中第3个最频繁的单词的编码。这样做的目的是允许快速过滤操作,例如:“仅考虑前10,000个最常见的单词,但去掉前20个最常见的单词”。

作为惯例,“0”不代表特定单词,

加载数据集的代码:

from keras.datasets import imdb
(x_train, y_train), (x_test, y_test) = imdb.load_data()

返回一个二元组:

  • x_train和x_test: 序列列表,整数类型的索引列表。
  • y_train和y_test: 整数标签列表(1或0)。

训练数据集的数据样例如下:

[1, 307, 5, 1301, 20, 1026, 2511, 87, 2775, 52, 116, 5, 31, 7, 4, 91, 1220, 102, 13, 28, 110, 11, 6, 137, 13, 115, 219, 141, 35, 221, 956, 54, 13, 16, 11, 2714, 61, 322, 423, 12, 38, 76, 59, 1803, 72, 8, 10508, 23, 5, 967, 12, 38, 85, 62, 358, 99]

这可能对人的阅读不太友好,但是方便计算机处理。这组数据集可用于二分类问题。

7. 路透社新闻数据

这是来自路透社的11,228条新闻线索的数据集,标记有46个主题。与IMDB数据集一样,每条新闻线索都被编码为一系列单词索引(相同的约定)。

加载数据集的代码:

from keras.datasets import reuters
(x_train, y_train), (x_test, y_test) = reuters.load_data()

返回一个二元组:

  • x_train和x_test: 序列列表,整数类型的索引列表。
  • y_train和y_test: 整数标签列表(0到45)。

这组数据集可用于二分类问题。

总结

从上面的代码可以看到,keras提供的接口非常简洁,仅仅调用各数据集的load_data()方法,开发者无需处理数据下载、数据保存、数据解析等等细节,可以极大的方便开发者将精力集中于业务开发。目前keras集成的数据集还比较有限,以后也许会有更多的公共数据集集成过来。

参考:

  1. Datasets - Keras Documentation
  2. Datasets within Keras

原文发布于微信公众号 - 云水木石(ourpoeticlife)

原文发表时间:2018-08-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券