【问题标题】:How to change/insert the shape of/into BatchDataset?如何更改/插入/插入 BatchDataset 的形状?
【发布时间】:2019-06-27 16:54:12
【问题描述】:

我正在使用 TF 2.0 从 github 存储库中复制 deep voice 3 论文。 [https://github.com/Kyubyong/deepvoice3] 我已经完成了所有的预处理。 我还创建了从张量(形状为(13066,))到 TensorSliceDataset(形状为(None,)),映射了一些函数并已经对其进行了批处理。 现在,我有形状为(无,无)的 BatchDataset。 我不知道如何将那个 (None, None) 形状变成想要的形状 (16, 180)?

repo 使用 TF 1.3 实现。 我正在使用 TF 2.0。 当旧代码是 tf.train.batch 时,我前往 tensorflow 网站,发现在 TF 2.0 中使用 tf.data.Dataset。 但是,它没有塑造数据集的选项。 下面是 TF 1.3 代码。

# TF old version
texts = tf.train.batch([text], shapes=[(hp.Tx,)],
                               num_threads=32,
                               batch_size=hp.batch_size,
                               capacity=hp.batch_size*32,   
                               dynamic_pad=False) # (16, 180)
# TF 2.0
texts = texts.batch(hp.batch_size) # (None, None)

应用形状之前的 BatchDataset 形状是 (None, None)。 应用 shape 后 BatchDataset 的形状应该是 (16, 180)。

谢谢!

【问题讨论】:

    标签: python tensorflow nlp tensorflow2.0


    【解决方案1】:

    如果您已经知道texts 包含形状为180 的元素,那么您只需使用tf.data.Dataset.map 来设置张量的静态形状:

    def set_shape(value):
        value.set_shape((180,))
        return value
    
    texts = texts.map(set_shape).batch(hp.batch_size)
    

    【讨论】:

      猜你喜欢
      • 2019-01-07
      • 2012-08-15
      • 2018-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多