如何change/insert形状of/into BatchDataset?

How to change/insert the shape of/into BatchDataset?

我正在使用 TF 2.0 从 github 存储库中复制 Deep Voice 3 论文。 [https://github.com/Kyubyong/deepvoice3] 我已经完成了所有预处理。 我还创建了从张量(形状为 (13066,))到 TensorSliceDataset(形状为 (None,)),映射了一些函数并对其进行了批处理。 现在,我有了形状为 (None、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)。 应用形状后 BatchDataset 的形状应该是 (16, 180).

谢谢!

如果您已经知道 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)