генерирование данных переменной длины для модели кодера и декодера - PullRequest
0 голосов
/ 10 октября 2019

У меня есть набор данных объектов X и меток y, имеющих обе формы 3000,400 и 3000,1.

Мне нужно указать элементы X в encoder,каждый поток данных имеет форму (batch_size,sequence_length_x,num_feat).

Я должен сделать то же самое для y, подав его в decoder, каждый поток данных имеет форму (batch_size,sequence_length_y,num_feat).

Конечно, encoder-decoder может принимать последовательности различной длины. Прямо сейчас у меня есть следующий фрагмент кода, который генерирует данные такого типа, но я не могу сгенерировать разную длину последовательности для X и y.

iterator = (tf.data.Dataset.from_tensor_slices((feats,labels))
            .apply(sliding.sliding_window_batch(sequence_length+1, stride))
            .batch(batch_size)
            .make_initializable_iterator()
            )

x_it, y_it = iterator.get_next(name="batch")
#print(x_it.shape,y_it.shape)
#(64,100,400),(64,100,1)

Один подход заключается в том, что у меня может быть дваотличается iterators для X и y, и я могу оставить параметр sequence_length разным для X и y. Проблема здесь в том, что, если я продолжу перебирать партии, последняя партия будет иметь различное значение batch_size для X и y, например: В итоге у меня будет 35 партий для X и 64 партии для y.

Должен ли я просто выбросить остальные партии для y? Также, таким образом, я не понимаю, связаны ли сэмплы в партиях из y и X, как в исходном наборе данных? Различные длины последовательностей для кодера и декодера немного сбивают с толку, потому что я не могу понять, связаны ли образцы элементов и меток в данных, которые я генерирую из исходного набора данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...