- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个数据集,它是来自新 tf.Datasets
模块的 tf.data.Dataset
。当然,tf.data.Dataset 是示例的迭代器,但我实际上需要将此迭代器转换为包含加载到内存中的所有数据的完整张量。我正在处理文本数据,为了提取语料库的词汇进行标记化,我实际上需要立即使用整个文本语料库。
我当然可以编写一个循环来执行此操作,但我想知道是否有更矢量化或更快速的方法来实现相同的任务。谢谢。
我至少可以提供代码的开头。请注意,我正在使用 Tensorflow 2.0a 来尝试为转换做好准备:
import tensorflow_datasets as tfds
# Download the data
imdb_builder = tfds.builder('imdb_reviews')
imdb_builder.download_and_prepare()
# Setup training test split
imdb_train = imdb_builder.as_dataset(split=tfds.Split.TRAIN)
imdb_test = imdb_builder.as_dataset(split=tfds.Split.TEST)
# Look at the specs on the dataset if you wish
# print(imdb_builder.info)
看一个例子。观察数据未标记化。
a, = imdb_train.take(1)
print(a['text'])
tf.Tensor(b"As a lifelong fan of Dickens, I have ...", shape=(), dtype=string)
这就是我陷入困境的地方。请注意,当尝试在此数据集上创建迭代器时,我收到了错误:
iter = imdb_train.batch(10).repeat(1).make_one_shot_iterator()
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-35-1bf70c474a05> in <module>()
----> 1 imdb_train = imdb_train.batch(10).repeat(1).make_one_shot_iterator()
AttributeError: 'RepeatDataset' object has no attribute 'make_one_shot_iterator'
最佳答案
使用tfds.load
更简单、更紧凑:
import tensorflow_datasets as tfds
train = tfds.load("imdb_reviews", as_supervised=True, split=tfds.Split.TRAIN)
非常简单,您可能想从零开始索引。
class Tokenizer:
def __init__(self):
self.vocab = {}
self._counter: int = 1
self.tokenizer = tfds.features.text.Tokenizer()
def __call__(self, text):
# Haven't found anything working with tf.tensor, oh sweet irony
tokens = self.tokenizer.tokenize(text.numpy())
for token in tokens:
if not token in self.vocab:
self.vocab[token] = self._counter
self._counter += 1
TBH 很遗憾,没有类似用于普通张量的tokenizer
实用程序,我需要像这样转换它们,但是哦,好吧,它仍处于 alpha 阶段。
自 TF2.0
及其 eager
模式起,您可以使用循环轻松地使用 one_shot_iterator
和其他奇怪的想法进行迭代:
tokenizer = Tokenizer()
for text, _ in train:
tokenizer(text)
重要提示:您不必将所有内容加载到内存中,因为它是一个迭代器。尽管对于非常大的语料库,您可能会在 vocab
中遇到内存问题。
打印项目及其索引:
print(list(tokenizer.vocab.keys())[:10])
print(list(tokenizer.vocab.values())[:10])
给我们:
['This', 'was', 'soul', 'provoking', 'I', 'am', 'an', 'Iranian', 'and', 'living']
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
关于python - Tensorflow:将 `tf.data.Dataset` 迭代器转换为张量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55858099/
如果我用 dataset.batch(n).prefetch(m), 将预提取m个批次或m个 sample ? 最佳答案 Dataset.prefetch(m) 转换预取其直接输入的m元素。在这种情况
根据 TensorFlow documentation 、tf.contrib.data.Dataset 类的 prefetch 和 map 方法,都有一个名为 buffer_size 的参数. 对于
我正在使用 Flink 0.10.1 的 DataSet API 编写应用程序。我可以在 Flink 中使用单个运算符获取多个收集器吗? 我想做的是如下所示: val lines = env.read
为了使用 Google Colabs TPU,我需要一个 tf.dataset.Dataset .那么如何在这样的数据集上使用数据增强? 更具体地说,到目前为止我的代码是: def get_datas
我有一个包含 2 个相关数据表(主数据表和详细信息)的数据集。我想将与我的过滤器匹配的数据(例如主数据列 A =“XXX”)复制到另一个数据集。 现在我发现这个过程需要很长时间(1k 条记录大约需要一
我正在使用 .pvd文件同时加载多个文件到 Paraviw。对于具有单个数据集的时间序列,该文件看起来像这样: 我想指定要与 a.*.vtu 一起加载的其他文件(
我听说 Google 主办(或将举办)一场网络分类竞赛,他们提供了一个大型(170k+ 文档)网站数据集,这些网站被分为多个类别(体育、计算机、科学等),我尝试环顾四周在他们的 2009 年到 201
谁能给我解释一下 DataSet.Copy() vs Dataset.Clone()也让我知道一些我们可以使用这些的场景 最佳答案 Clone 将创建一个新的空数据集,其架构(表和列)与旧数据集相同。
dataset = dataset.batch(50) dataset = dataset.prefetch(buffer_size=1) 是预取 1 个批次还是 1 个元素? 根据 tensorfl
在 Delphi 中,与 Dataset.Next 相比,使用 Dataset.Prior 是否会降低性能? 背景: 我有一个在数据集中搜索特定记录的例程。我从数据集中的最后一条记录开始,然后使用 D
我正在使用 Spark(2.0) 开发 Spark SQL,并使用 Java API 读取 CSV。 CSV 文件中有一个双引号、逗号分隔的列。例如:“Express Air,Delivery Tru
为什么要使用DataSet.BeginInit 和DataSet.EndInit? 我已经经历了official msdn documentation ,它说 Begins the initializ
我正在尝试向新的数据集 X 添加一个位于不同数据集 Y 中的数据表。如果我直接添加它,我会得到以下错误: DataTable already belongs to another DataSet. 我
我有一个表示为形状为 (num_features, num_examples) 的 NumPy 矩阵的数据集,我希望将其转换为 TensorFlow 类型 tf.Dataset。 我正在努力理解这两种
这是 question 的转发在 ai.stackexchange 中询问。由于该论坛没有太多吸引力,我想我可以在这里尝试一下机会。 我有一个特定对象的不同尺寸的图像数据集。该物体的一些图像也处于不同
我有两个数据集: main_ds = tf.data.Dataset.from_tensor_slices(list(range(1000, 1100))) backgroud_ds = tf.dat
拥有Dataset单列 json 字符串: +--------------------+ | value| +--------------------+ |{"Contex
我正在尝试解决 Azure 数据工厂中的以下场景: 我在 Azure Blob 存储中有大量文件夹。每个文件夹包含不同数量的 parquet 格式的文件。文件夹名称包含生成该文件夹中包含的数据的日期,
我正在尝试解决 Azure 数据工厂中的以下场景: 我在 Azure Blob 存储中有大量文件夹。每个文件夹包含不同数量的 parquet 格式的文件。文件夹名称包含生成该文件夹中包含的数据的日期,
我有一个顺序数据集,我可以从中创建窗口来训练 RNN。在某些情况下,我想扔掉某些 window 。但是,当我使用 dataset.window 和 dataset.filter 时,管道内部会出现一些
我是一名优秀的程序员,十分优秀!