TensorFlow可以“預裝”數據集了,新功能Datasets出爐

郭一璞 發自 凹非寺

量子位 報道 | 公眾號 QbitAI

訓練機器學習模型的時候,需要先找數據集、下載、裝數據集……太麻煩了,比如MNIST這種全世界都在用的數據集,能不能來個一鍵裝載啥的?

Google也這麼想。

TensorFlow可以“預裝”數據集了,新功能Datasets出爐

今天,TensorFlow推出了一個新的功能,叫做TensorFlow Datasets,可以以tf.data和NumPy的格式將公共數據集裝載到TensorFlow裡。

目前已經有29個數據集可以通過TensorFlow Datasets裝載:

音頻類

nsynth

圖像類

cats_vs_dogs

celeb_a

celeb_a_hq

cifar10

cifar100

coco2014

colorectal_histology

colorectal_histology_large

diabetic_retinopathy_detection

fashion_mnist

image_label_folder

imagenet2012

lsun

mnist

omniglot

open_images_v4

quickdraw_bitmap

svhn_cropped

tf_flowers

結構化數據集

titanic

文本類

imdb_reviews

lm1b

squad

翻譯類

wmt_translate_ende

wmt_translate_enfr

視頻類

bair_robot_pushing_small

moving_mnist

starcraft_video

未來還會增加更多數據集,你也可以自己添加數據集。

具體怎麼裝

必須是TensorFlow1.12以上版本才可以安裝,某些數據集需要額外的庫。

1pip install tensorflow-datasets
2
3# Requires TF 1.12+ to be installed.
4# Some datasets require additional libraries; see setup.py extras_require
5pip install tensorflow
6# or:
7pip install tensorflow-gpu

每個數據集都作為DatasetBuilder公開,已知:

1.從哪裡下載數據集,如何提取數據並寫入標準格式;

2.如何從disk加載;

3.各類要素名稱、類型等信息。

這些DatasetBuilder都能直接實例化或者用tfds.builder字符串讀取:

 1import tensorflow_datasets as tfds
2
3# Fetch the dataset directly
4mnist = tfds.image.MNIST()
5# or by string name
6mnist = tfds.builder('mnist')
7
8# Describe the dataset with DatasetInfo
9assert mnist.info.features['image'].shape == (28, 28, 1)
10assert mnist.info.features['label'].num_classes == 10
11assert mnist.info.splits['train'].num_examples == 60000
12
13# Download the data, prepare it, and write it to disk
14mnist.download_and_prepare()
15

16# Load data from disk as tf.data.Datasets
17datasets = mnist.as_dataset()
18train_dataset, test_dataset = datasets['train'], datasets['test']
19assert isinstance(train_dataset, tf.data.Dataset)
20
21# And convert the Dataset to NumPy arrays if you'd like
22for example in tfds.as_numpy(train_dataset):
23 image, label = example['image'], example['label']
24 assert isinstance(image, np.array)

你也可以用tfds.load執行一系列的批量示例、轉換操作,然後再調用。

1import tensorflow_datasets as tfds
2
3datasets = tfds.load("mnist")
4train_dataset, test_dataset = datasets["train"], datasets["test"]
5assert isinstance(train_dataset, tf.data.Dataset)

數據集版本控制

當數據集自身版本更新時,已經開始訓練的數據不會變化,TensorFlow官方會採取增加新版本的方式把新的數據集放上來。

具體配置

有不同變體的數據集用BuilderConfigs進行配置,比如大型電影評論數據集(Large Movie Review Dataset),可以對輸入文本進行不同的編碼。

內置配置與數據集文檔一起列出,可以通過字符串進行尋址。

 1# See the built-in configs 

2configs = tfds.text.IMDBReviews.builder_configs
3assert "bytes" in configs
4
5# Address a built-in config with tfds.builder
6imdb = tfds.builder("imdb_reviews/bytes")
7# or when constructing the builder directly
8imdb = tfds.text.IMDBReviews(config="bytes")
9# or use your own custom configuration
10my_encoder = tfds.features.text.ByteTextEncoder(additional_tokens=['hello'])
11my_config = tfds.text.IMDBReviewsConfig(
12 name="my_config",
13 version="1.0.0",
14 text_encoder_config=tfds.features.text.TextEncoderConfig(encoder=my_encoder),
15)
16imdb = tfds.text.IMDBReviews(config=my_config)

也可以用你自己的配置,通過tfds.core.BuilderConfigs,進行以下步驟:

1.把你自己的配置對象定義為的子類 tfds.core.BuilderConfig。比如叫“MyDatasetConfig”;

2.在數據集公開的列表中定義BUILDER_CONFIGS類成員,比如“MyDatasetMyDatasetConfig”;

3.使用self.builder_config在MyDataset配置數據生成,可能包括在_info()或更改下載數據訪問中設置不同的值。

關於文本數據集

平常遇到文本數據集都比較難搞,但是有了TensorFlow Datasets就會好辦一些,包含很多文本任務,三種文本編碼器:

1.ByteTextEncoder,用於字節/字符級編碼;

2.TokenTextEncoder,用於基於詞彙文件的單詞級編碼;

3.SubwordTextEncoder,用於子詞級編碼,具有字節級回退,以使其完全可逆,比如可以把“hello world”分為[“he”,“llo”,“”,“wor”,“ld”],然後進行整數編碼。

以上這些都支持Unicode。

編碼器和詞庫可以這樣訪問:

 1imdb = tfds.builder("imdb_reviews/subwords8k")
2
3# Get the TextEncoder from DatasetInfo
4encoder = imdb.info.features["text"].encoder
5assert isinstance(encoder, tfds.features.text.SubwordTextEncoder)
6
7# Encode, decode
8ids = encoder.encode("Hello world")
9assert encoder.decode(ids) == "Hello world"
10
11# Get the vocabulary size
12vocab_size = encoder.vocab_size

TensorFlow官方明確表示,TensorFlow和TensorFlow Datasets在文本支持方面將會進一步改進。

傳送門

最後,下面是TensorFlow官方提供的各類文檔資料教程鏈接:

TensorFlow博客原文

https://medium.com/tensorflow/introducing-tensorflow-datasets-c7f01f7e19f3

TensorFlow官方文檔

https://www.tensorflow.org/datasets

GitHub

https://github.com/tensorflow/datasets

Colab教程

https://colab.research.google.com/github/tensorflow/datasets/blob/master/docs/overview.ipynb

Enjoy yourself~

誠摯招聘

量子位正在招募編輯/記者,工作地點在北京中關村。期待有才氣、有熱情的同學加入我們!相關細節,請在量子位公眾號(QbitAI)對話界面,回覆“招聘”兩個字。

量子位 QbitAI · 頭條號簽約作者

վ'ᴗ' ի 追蹤AI技術和產品新動態


分享到:


相關文章: