如何从tf.data.Dataset的填充批次中获得序列长度?

阿尔伯特

例如,假设我通过TFDS使用Librispeech数据集(或任何数据集,包括数据长度不同的序列),然后用于padded_batch创建批处理,例如:

import tensorflow_datasets as tfds

dataset = tfds.load(name="librispeech", split="train_clean100")
dataset = dataset.shuffle(1024)
dataset = dataset.padded_batch(32)

现在,当遍历结果数据集时,即遍历(填充的)批次,我如何知道填充的批次中的原始序列长度?还是此时此信息丢失了?我将如何扩展管道以将其包括在内?是否有类似的特殊数据集AddSeqLengthInfoDataset这将需要运行之前padded_batch,对不对?(这基本上等同于我对TF的问题,PaddingFIFOQueue但对于tf.data.Dataset。)

有什么例子吗?(我想知道我对此没有发现任何东西。我会假设当您处理序列时这是一个相当标准的要求,是否需要有关原始序列长度的信息?)

Jdehesa

您可以将新字段添加到保存序列大小的数据集中,例如:

import tensorflow as tf

# Make a dataset with variable-size data
def generate_data():
    for i in range(10):
        yield {'id': i, 'data': range(i % 5)}
ds = tf.data.Dataset.from_generator(generate_data,
                                    {'id': tf.int32, 'data': tf.int32},
                                    {'id': [], 'data': [None]})
# Add field with size of data
ds = ds.map(lambda item: {**item, 'size': tf.shape(item['data'])[0]})
# Padded batch
ds = ds.padded_batch(3)
# Show dataset
for batch in ds:
    tf.print(batch)

输出:

{'data': [[0 0]
 [0 0]
 [0 1]], 'id': [0 1 2], 'size': [0 1 2]}
{'data': [[0 1 2 0]
 [0 1 2 3]
 [0 0 0 0]], 'id': [3 4 5], 'size': [3 4 0]}
{'data': [[0 0 0]
 [0 1 0]
 [0 1 2]], 'id': [6 7 8], 'size': [1 2 3]}
{'data': [[0 1 2 3]], 'id': [9], 'size': [4]}

然后,您可以使用tf.sequence_mask该字段的值作为掩盖填充值。

另一种选择是简单的一些特殊传递padding_valuespadded_batch不能出现在实际的数据,例如-1或者nan,而是取决于这些是否实际上是为你的问题无效值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何获取tf.data.Dataset的长度(data_size / batch_size)?

来自分类Dev

如何只通过 tf.data.dataset 一次?

来自分类Dev

如何为接受各种形状的多个输入的`tf.keras`模型创建`tf.data.Dataset`?

来自分类Dev

如何在tf.data.Dataset生成器中使用tf.keras模型?

来自分类Dev

如何在TF 2中使用带有自定义函数的tf.data.Dataset.interleave()?

来自分类Dev

如何在使用@ tf.function装饰的函数中的tf.data.Dataset上使用for循环来操纵和返回tf.Variable?

来自分类Dev

如何使用 Tensorflow 中的其他示例转换扩展 tf.data.Dataset

来自分类Dev

已解决:如何将 tf.gradients 与 tf.data.dataset 和 keras 模型结合起来

来自分类Dev

如何在tf.data.Dataset对象上使用序列/生成器以将部分数据放入内存中?

来自分类Dev

如何在Tensorflow tf.data.Dataset中使用cv2图像增强功能?

来自分类Dev

Tensorflow:如何从CPU tf.data.Dataset(from_generator)预取GPU上的数据

来自分类Dev

如何在tf.data.Dataset.map()中使用Keras的predict_on_batch?

来自分类Dev

如何在tf.data.Dataset.from_generator中保留字典键?

来自分类Dev

tf.data.dataset:如何为保证输出某些形状的数据集(形状未定义)分配形状?

来自分类Dev

tf model.fit()中的batch_size与tf.data.Dataset中的batch_size

来自分类Dev

在TF 2.0中将tf.Tensor转换为tf.data.Dataset.map中的numpy数组(图形模式)

来自分类Dev

如何仅使用TfidfVectorizer获得TF?

来自分类Dev

tf.dataset 不追加批次

来自分类Dev

如何将两个tf.data.Dataset合并为一个具有已知比率的交替元素

来自分类Dev

如何在TF 2.2 Eager中获得渐变?

来自分类Dev

tf.data.Dataset.take()返回随机样本吗?

来自分类Dev

tf.data.Dataset在除PrefetchDataset之外的CPU上运行。

来自分类Dev

使用tf.data.Dataset训练DL模型

来自分类Dev

Numpy 4D数组到tf.data.dataset

来自分类Dev

使用 tf.data.Dataset 评估每 N 步

来自分类Dev

ValueError:使用tf.data.Dataset.from_tensor_slices时无法将非矩形Python序列转换为Tensor

来自分类Dev

Tensorflow 2.0:在多输入场景中构造tf.data.Dataset输出的最佳方法

来自分类Dev

形状在tf.data.Dataset.from_tensor_slices的最后记录中不兼容

来自分类Dev

在时序分析中在tf.data.dataset中进行批处理

Related 相关文章

  1. 1

    如何获取tf.data.Dataset的长度(data_size / batch_size)?

  2. 2

    如何只通过 tf.data.dataset 一次?

  3. 3

    如何为接受各种形状的多个输入的`tf.keras`模型创建`tf.data.Dataset`?

  4. 4

    如何在tf.data.Dataset生成器中使用tf.keras模型?

  5. 5

    如何在TF 2中使用带有自定义函数的tf.data.Dataset.interleave()?

  6. 6

    如何在使用@ tf.function装饰的函数中的tf.data.Dataset上使用for循环来操纵和返回tf.Variable?

  7. 7

    如何使用 Tensorflow 中的其他示例转换扩展 tf.data.Dataset

  8. 8

    已解决:如何将 tf.gradients 与 tf.data.dataset 和 keras 模型结合起来

  9. 9

    如何在tf.data.Dataset对象上使用序列/生成器以将部分数据放入内存中?

  10. 10

    如何在Tensorflow tf.data.Dataset中使用cv2图像增强功能?

  11. 11

    Tensorflow:如何从CPU tf.data.Dataset(from_generator)预取GPU上的数据

  12. 12

    如何在tf.data.Dataset.map()中使用Keras的predict_on_batch?

  13. 13

    如何在tf.data.Dataset.from_generator中保留字典键?

  14. 14

    tf.data.dataset:如何为保证输出某些形状的数据集(形状未定义)分配形状?

  15. 15

    tf model.fit()中的batch_size与tf.data.Dataset中的batch_size

  16. 16

    在TF 2.0中将tf.Tensor转换为tf.data.Dataset.map中的numpy数组(图形模式)

  17. 17

    如何仅使用TfidfVectorizer获得TF?

  18. 18

    tf.dataset 不追加批次

  19. 19

    如何将两个tf.data.Dataset合并为一个具有已知比率的交替元素

  20. 20

    如何在TF 2.2 Eager中获得渐变?

  21. 21

    tf.data.Dataset.take()返回随机样本吗?

  22. 22

    tf.data.Dataset在除PrefetchDataset之外的CPU上运行。

  23. 23

    使用tf.data.Dataset训练DL模型

  24. 24

    Numpy 4D数组到tf.data.dataset

  25. 25

    使用 tf.data.Dataset 评估每 N 步

  26. 26

    ValueError:使用tf.data.Dataset.from_tensor_slices时无法将非矩形Python序列转换为Tensor

  27. 27

    Tensorflow 2.0:在多输入场景中构造tf.data.Dataset输出的最佳方法

  28. 28

    形状在tf.data.Dataset.from_tensor_slices的最后记录中不兼容

  29. 29

    在时序分析中在tf.data.dataset中进行批处理

热门标签

归档