谷歌开源机器学习数据集,可在TensorFlow直接调用

\n

吴恩达说过,公共数据集为机器学习研究这枚火箭提供了动力,但将这些数据集放入机器学习管道就已经够难的了。编写供下载的一次性脚本,准备他们要用的源格式和复杂性不一的数据集,相信这种痛苦每个程序员都有过切身体会。

\n
\n
\n

但现在,你再也不会被这种痛苦困扰了。谷歌今天开源了一个机器学习数据集,可在TensorFlow直接调用,这为开发人员省去了不少麻烦。

\n
\n

照例先放数据集:
\nGitHub:https://github.com/tensorflow/datasets

\n

今天,我们很高兴地推出TensorFlow数据集,它将作为tf.data.Datasets和NumPy数组向公众开放。它可以完成从获取源数据,到准备磁盘上的通用格式的所有琐碎工作,并使用tf.data API构建高性能输入管道,这些管道支持 TensorFlow 2.0,并可与tf.keras模型一起使用。我们推出了29个流行的研究数据集,如MNIST、Street View House Numbers、包含10亿数据的语言模型基准和大型电影评论数据集,并将在未来几个月推出更多数据集;我们也希望你可以加入并贡献数据集

\n

tl;dr

\n
# Install: pip install tensorflow-datasets\nimport tensorflow_datasets as tfds\nmnist_data = tfds.load(\u0026quot;mnist\u0026quot;)\nmnist_train, mnist_test = mnist_data[\u0026quot;train\u0026quot;], mnist_data[\u0026quot;test\u0026quot;]\nassert isinstance(mnist_train, tf.data.Dataset)\n
\n

在Colab notebook 上试试 tfds

\n

tfds.loadDatasetBuilder

\n

每个数据集都作为DatasetBuilder公开,它会告诉你:

\n \n

你可以直接对所有DatasetBuilders进行实例化或使用tfds.builder字符串获取

\n
import tensorflow_datasets as tfds\n\n# Fetch the dataset directly\nmnist = tfds.image.MNIST()\n# or by string name\nmnist = tfds.builder('mnist')\n\n# Describe the dataset with DatasetInfo\nassert mnist.info.features['image'].shape == (28, 28, 1)\nassert mnist.info.features['label'].num_classes == 10\nassert mnist.info.splits['train'].num_examples == 60000\n\n# Download the data, prepare it, and write it to disk\nmnist.download_and_prepare()\n\n# Load data from disk as tf.data.Datasets\ndatasets = mnist.as_dataset()\ntrain_dataset, test_dataset = datasets['train'], datasets['test']\nassert isinstance(train_dataset, tf.data.Dataset)\n\n# And convert the Dataset to NumPy arrays if you'd like\nfor example in tfds.as_numpy(train_dataset):\n  image, label = example['image'], example['label']\n  assert isinstance(image, np.array)\n
\n

as_dataset()接受一个batch_size参数,它将提供批量示例,而不是一次一个示例。对于适合内存的小型数据集,你可以用batch_size = -1立即获取整个数据集作为tf.Tensor。使用tfds.as_numpy()可以轻松地将所有tf.data.Datasets转换为NumPy数组的参数。

\n

为方便起见,你可以使用tfds.load执行以上所有操作,tfds.load按名称获取DatasetBuilder,调用download_and_prepare()以及as_dataset()。

\n
import tensorflow_datasets as tfds\n\ndatasets = tfds.load(\u0026quot;mnist\u0026quot;)\ntrain_dataset, test_dataset = datasets[\u0026quot;train\u0026quot;], datasets[\u0026quot;test\u0026quot;]\nassert isinstance(train_dataset, tf.data.Dataset)\n
\n

你也可以通过传递with_info = True轻松地从tfds.load获取DatasetInfo对象。有关所有选项,请参阅API文档

\n

数据集版本管理

\n

每个数据集都是版本化的(builder.info.version),你大可放心,数据不会随意发生变化,且结果是可重现的。目前,我们保证如果数据发生变化,将增加版本。

\n

请注意,尽管目前我们保证给定同一版本下的数据值和拆分是相同的,但不保证对同一版本的记录进行排序。

\n

数据集配置

\n

具有不同变体的数据集使用命名的BuilderConfigs进行配置。例如,大型电影评论数据集(tfds.text.IMDBReviews )不同的输入可能有不同的编码(例如,纯文本、字符编码或子词编码)。内置配置与数据集文档一起列出,可以通过字符串进行寻址,也可以传入你自己的配置。

\n
# See the built-in configs\nconfigs = tfds.text.IMDBReviews.builder_configs\nassert \u0026quot;bytes\u0026quot; in configs\n\n# Address a built-in config with tfds.builder\nimdb = tfds.builder(\u0026quot;imdb_reviews/bytes\u0026quot;)\n# or when constructing the builder directly\nimdb = tfds.text.IMDBReviews(config=\u0026quot;bytes\u0026quot;)\n# or use your own custom configuration\nmy_encoder = tfds.features.text.ByteTextEncoder(additional_tokens=['hello'])\nmy_config = tfds.text.IMDBReviewsConfig(\n    name=\u0026quot;my_config\u0026quot;,\n    version=\u0026quot;1.0.0\u0026quot;,\n    text_encoder_config=tfds.features.text.TextEncoderConfig(encoder=my_encoder),\n)\nimdb = tfds.text.IMDBReviews(config=my_config)\n
\n

请参阅有关添加数据集的文档中有关数据集配置的部分。

\n

文本数据集和词汇表

\n

由于编码和词汇文件不同,文本数据集通常很难处理。tensorflow-datasets让这一过程变得更简单。它包含许多文本任务,包括三种TextEncoders,且都支持Unicode:

\n
  • \n
  • ByteTextEncoder用于字节/字符级编码\n
  • TokenTextEncoder用于基于词汇表文件的单词级编码\n
  • SubwordTextEncoder用于子词级编码(以及针对特定文本语料库创建子词词汇的能力),可以字节级回退,因此它是完全可逆的。例如,“hello world”可以拆分为[“he”,“llo”,“”,“wor”,“ld”],然后进行整数编码。子词是词级和字节级编码之间的媒介,在一些自然语言研究项目中很受欢迎。\n
\n

可以通过DatasetInfo访问编码器及其词汇表大小:

\n
imdb = tfds.builder(\u0026quot;imdb_reviews/subwords8k\u0026quot;)\n\n# Get the TextEncoder from DatasetInfo\nencoder = imdb.info.features[\u0026quot;text\u0026quot;].encoder\nassert isinstance(encoder, tfds.features.text.SubwordTextEncoder)\n\n# Encode, decode\nids = encoder.encode(\u0026quot;Hello world\u0026quot;)\nassert encoder.decode(ids) == \u0026quot;Hello world\u0026quot;\n\n# Get the vocabulary size\nvocab_size = encoder.vocab_size\n
\n

TensorFlow和TensorFlow数据集都将在未来进一步改进文本支持。

\n

入门

\n

我们的文档站点是开始使用tensorflow数据集的最佳位置。以下是一些入门指南:

\n \n

我们将在未来几个月内添加更多数据集,并希望社区能够加入。如果你需要什么数据集,请在GitHub 创建话题,我们将对下一步应添加的数据集进行投票,讨论实施细节或寻求帮助。非常欢迎Pull Requests!人人献出一点数据集,让社区变得更美好,把你的数据集贡献给TFDS声名大噪吧!

\n

当获取数据变得简单,我们就能快乐地建模!

\n

原文链接:
\nhttps://medium.com/tensorflow/introducing-tensorflow-datasets-c7f01f7e19f3

\n
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

flybirding10011

谢谢支持啊999

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

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

打赏作者

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

抵扣说明:

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

余额充值