Tensorflow 如何使tf.data.Dataset只洗牌数据列的子集?

Tensorflow 如何使tf.data.Dataset只洗牌数据列的子集?,tensorflow,tensorflow-datasets,Tensorflow,Tensorflow Datasets,让我们看看我们有一个数据集: ds = tf.data.Dataset.from_tensor_slices((x_train,y_train )) 如果我应用ds=ds.shuffle(),那么x\u列和y\u列都将被洗牌。如果我只想洗牌x\U列,而保持y\U列不变,该怎么办?不确定为什么要这样做,因为错误的标签将映射到功能。 但是,如果您仍然想这样做,您可以先将x\u train洗牌,然后再将其从\u tensor\u slices()馈送到。您可以使用只返回1个输出的映射函数来实现

让我们看看我们有一个数据集:

   ds = tf.data.Dataset.from_tensor_slices((x_train,y_train ))

如果我应用ds=ds.shuffle(),那么x\u列和y\u列都将被洗牌。如果我只想洗牌x\U列,而保持y\U列不变,该怎么办?

不确定为什么要这样做,因为错误的标签将映射到功能。
但是,如果您仍然想这样做,您可以先将
x\u train
洗牌,然后再将其从\u tensor\u slices()馈送到

您可以使用只返回1个输出的映射函数来实现所需的功能。然后你可以拉上拉链

ds = tf.data.Dataset.from_tensor_slices((x_train, y_train))
ds_x = ds.map(lambda x, y: x)
ds_y = ds.map(lambda x, y: y)
ds_x = ds_x.shuffle(buffer_size=50) #change buffer_size as u like
ds = tf.data.Dataset.zip((ds_x, ds_y))

只是想知道这样做的原因,因为如果你这样做,特征向量将被映射到错误的标签。谢谢,首先洗牌一个数据集,然后压缩与其他数据集的工作。