我正在使用来自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
。
答案 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.map
或tf.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