У меня есть набор данных объектов 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
, как в исходном наборе данных? Различные длины последовательностей для кодера и декодера немного сбивают с толку, потому что я не могу понять, связаны ли образцы элементов и меток в данных, которые я генерирую из исходного набора данных.