Как изменить / вставить форму / в BatchDataset? - PullRequest
0 голосов
/ 27 июня 2019

Я копирую документ Deep Voice 3 из репозитория Github с TF 2.0. [https://github.com/Kyubyong/deepvoice3] Я сделал всю предварительную обработку. Я также создал из тензорного (shape is (13066,)) в TensorSliceDataset (shape is (None,)), сопоставил некоторые функции и уже пакетировал его. Теперь у меня есть набор данных BatchDataset (Нет, Нет). Понятия не имею, как изменить эту (Нет, Нет) форму на форму желания (16, 180)?

Репо реализовано с TF 1.3. Я использую TF 2.0. Когда старый код tf.train.batch, я направляюсь на веб-сайт tenorflow и обнаружил, что в 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 до применения формы (Нет, Нет). Форма BatchDataset после применения формы должна быть (16, 180).

Спасибо!

1 Ответ

0 голосов
/ 02 июля 2019

Если вы уже знаете, что 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)
...