为编码器和解码器模型生成可变长度的数据

时间:2019-10-10 10:57:15

标签: python-3.x tensorflow deep-learning tensorflow-datasets encoder-decoder

我有一个要素X和标签y的数据集,都具有形状3000,4003000,1

我需要在X中输入特征encoder,每个数据输入的形状都是(batch_size,sequence_length_x,num_feat)

我必须通过将y馈入decoder来做同样的事情,每次数据馈送都是(batch_size,sequence_length_y,num_feat)形状。

确保encoder-decoder可以接受不同长度的序列。现在,我有以下代码段可以生成这种数据,但是我无法为Xy生成不同的序列长度。

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)

一种方法是,iteratorsX可以有两个不同的y,并且sequence_lengthX的参数可以保持不同y。这里的问题是,如果我继续遍历这些批次,那么batch_sizeX的最后一个批次具有不同的y,例如:最终,我有35个批次用于{{1 }}和X的64个批次。

我应该只丢弃y的其余批次吗?同样通过这种方式,我无法理解生成的yy批次中的样本是否仍像原始数据集中一样关联?编码器和解码器的不同序列长度有点令人困惑,因为我无法理解从原始数据集生成的数据中是否仍存在特征样本和标签样本。

0 个答案:

没有答案