我有一个要素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个批次用于{{1 }}和X
的64个批次。
我应该只丢弃y
的其余批次吗?同样通过这种方式,我无法理解生成的y
和y
批次中的样本是否仍像原始数据集中一样关联?编码器和解码器的不同序列长度有点令人困惑,因为我无法理解从原始数据集生成的数据中是否仍存在特征样本和标签样本。