我的序列数据的长度范围很广。现在,我的数据集获取随机无序的序列,并将批处理填充到最长的序列。(参见下面的代码)
我想要的是:
1.)随机抽取20倍批量大小的序列
2.)按长度进行排序(长度可用“utt_length”表示)
3.)将“排序数据”分为20批
我的管道没有排序:dataset = tf.data.TFRecordDataset(self.state['train_data_TFR'])
dataset = dataset.map(self.parse,num_parallel_calls=5)
dataset = dataset.shuffle(buffer_size=10000, seed=seed)
dataset = dataset.map(Pipeline.__expand)
shape = {
"length": 1,
"num_of_turns": 1,
"utt_lengths": tf.TensorShape([None])
}
for turn in range(self.state['max_turns'] + 1):
shape["utt_" + str(turn)] = tf.TensorShape([None])
dataset = dataset.apply(tf.contrib.data.padded_batch_and_drop_remainder(self.state['batch_size'],
padded_shapes=shape))
dataset = dataset.map(Pipeline.__deflate)
示例:
^{pr2}$
我实现的内容显示在上面的代码中。这是我的管道没有这个分类。我不知道如何先获取“n倍于批大小”的数据,然后在该批数据之后将这些数据排序为“批大小”示例:/