什么是tensorflow.python.data.ops.dataset_ops._OptionsDataset?

时间:2019-06-29 20:35:34

标签: python tensorflow

我正在使用来自tensorflow的Transformer代码-https://www.tensorflow.org/beta/tutorials/text/transformer

在此代码中,使用的数据集将按以下方式加载-

examples, metadata = tfds.load('ted_hrlr_translate/pt_to_en', with_info=True,
                               as_supervised=True)
train_examples, val_examples = examples['train'], examples['validation']

当我使用以下命令检查train_examples的类型时:

type(train_examples)

我得到以下输出-

tensorflow.python.data.ops.dataset_ops._OptionsDataset

现在,我只想更改数据集的某些条目(即句子),但是由于不了解类型而无法更改。

我可以使用以下命令对其进行迭代:

for data in train_examples:
    print(data,type(data))

数据类型为-

<class 'tuple'>

最后,我想要用我自己的数据替换其中一些元组。 有人可以告诉我该怎么做或给我一些有关这种类型的细节吗 tensorflow.python.data.ops.dataset_ops._OptionsDataset

1 个答案:

答案 0 :(得分:2)

tensorflow.python.data.ops.dataset_ops._OptionsDataset只是扩展基类tf.compat.v2.data.Dataset(DatasetV2)的另一个类,该基类包含tf.data.Options和原始tf.compat.v2.data.Dataset数据集(本例中的葡萄牙语-英语元组)。

({tf.data.Options在数据集tf.data.Dataset.maptf.data.Dataset.interleave上使用流功能时起作用

如何查看各个元素?

我肯定有很多方法,但是一种直接的方法是在基类中使用迭代器:

由于examples['train']_OptionsDataset的一种类型,因此这里通过从 tf.compat.v2.data.Dataset

iterator = examples['train'].__iter__()
next_element = iterator.get_next()
pt = next_element[0]
en = next_element[1]
print(pt.numpy())
print(en.numpy())

以下是输出:

b'o problema \xc3\xa9 que nunca vivi l\xc3\xa1 um \xc3\xbanico dia .'
b"except , i 've never lived one day of my life there ."

替换为您自己的数据:

由于您没有提到要用什么替换原始数据集,因此我假设您有自己特定翻译的CSV / TSV文件。然后,通过调用CSV API将您的CSV文件读入数据集来自己创建一个单独的tf.compat.v2.data.Dataset对象应该很有用:

tf.data.experimental.make_csv_dataset

https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/r2/tutorials/load_data/csv.ipynb