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

image

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章