Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tensorflow 洗牌TFRecordDataset文件,但不洗牌文件中的样本_Tensorflow_Tensorflow Datasets_Tfrecord - Fatal编程技术网

Tensorflow 洗牌TFRecordDataset文件,但不洗牌文件中的样本

Tensorflow 洗牌TFRecordDataset文件,但不洗牌文件中的样本,tensorflow,tensorflow-datasets,tfrecord,Tensorflow,Tensorflow Datasets,Tfrecord,我已生成数据并将其保存到多个tfrecord文件中,然后将这些文件加载到TFRecordDataset中如何按文件洗牌此数据集?也就是说,我希望保持文件中样本的顺序,但在创建批处理数据集时,仅随机化文件的加载顺序。考虑下面的例子: 数据 file_1 file_1_s1 file_1_s2 file_1_s3 file_2 file_2_s1 file_2_s2 file_2_s3 file_3 file_3_s1 file_3_s2 file_3_s

我已生成数据并将其保存到多个tfrecord文件中,然后将这些文件加载到TFRecordDataset中如何按文件洗牌此数据集?也就是说,我希望保持文件中样本的顺序,但在创建批处理数据集时,仅随机化文件的加载顺序。考虑下面的例子:

数据

file_1
  file_1_s1
  file_1_s2
  file_1_s3


file_2
  file_2_s1
  file_2_s2
  file_2_s3


file_3
  file_3_s1
  file_3_s2
  file_3_s3
法定样品订单

file_1_s2, file_1_s2, file_1_s3, file_3_s1, file_3_s2, file_3_s3, file_2_s1, file_2_s2, file_2_s3
file_3_s1, file_3_s2, file_3_s3, file_2_s1, file_2_s2, file_2_s3, file_1_s2, file_1_s2, file_1_s3
file_1_s2, file_1_s3, file_3_s3, file_2_s1, file_2_s2, file_1_s2, file_3_s2, file_3_s1, file_2_s3
file_3_s1, file_2_s1, file_3_s3, file_2_s2, file_2_s3, file_1_s2, file_1_s2, file_1_s3, file_3_s2
非法样品订购

file_1_s2, file_1_s2, file_1_s3, file_3_s1, file_3_s2, file_3_s3, file_2_s1, file_2_s2, file_2_s3
file_3_s1, file_3_s2, file_3_s3, file_2_s1, file_2_s2, file_2_s3, file_1_s2, file_1_s2, file_1_s3
file_1_s2, file_1_s3, file_3_s3, file_2_s1, file_2_s2, file_1_s2, file_3_s2, file_3_s1, file_2_s3
file_3_s1, file_2_s1, file_3_s3, file_2_s2, file_2_s3, file_1_s2, file_1_s2, file_1_s3, file_3_s2

在非法示例中,一个文件的样本不再同时出现或按顺序出现。

您可以使用
tf.data.Dataset.list\u文件来洗牌
TFRecord
文件,如下所示

filepaths = ["data.tfrecords","data1.tfrecords","data2.tfrecords","data3.tfrecords"]

filepath_dataset = tf.data.Dataset.list_files(filepaths, seed=42)

print(filepath_dataset)

无序数据集:

tf.Tensor(b'./data1.tfrecords', shape=(), dtype=string)
tf.Tensor(b'./data3.tfrecords', shape=(), dtype=string)
tf.Tensor(b'./data2.tfrecords', shape=(), dtype=string)
tf.Tensor(b'./data.tfrecords', shape=(), dtype=string)
list\u文件
接受3个参数。
文件:字符串、字符串列表或字符串类型(标量或向量)的tf.Tensor,表示将匹配的文件名glob(即shell通配符)模式。
洗牌:默认设置为True,随机洗牌文件。
种子:(可选)一个tf.int64标量tf.Tensor,表示将用于创建分布的随机种子

返回与文件名对应的字符串数据集


希望这能回答你的问题,学习愉快

您可以使用
tf.data.Dataset.list\u文件
TFRecord
文件进行如下洗牌

filepaths = ["data.tfrecords","data1.tfrecords","data2.tfrecords","data3.tfrecords"]

filepath_dataset = tf.data.Dataset.list_files(filepaths, seed=42)

print(filepath_dataset)

无序数据集:

tf.Tensor(b'./data1.tfrecords', shape=(), dtype=string)
tf.Tensor(b'./data3.tfrecords', shape=(), dtype=string)
tf.Tensor(b'./data2.tfrecords', shape=(), dtype=string)
tf.Tensor(b'./data.tfrecords', shape=(), dtype=string)
list\u文件
接受3个参数。
文件:字符串、字符串列表或字符串类型(标量或向量)的tf.Tensor,表示将匹配的文件名glob(即shell通配符)模式。
洗牌:默认设置为True,随机洗牌文件。
种子:(可选)一个tf.int64标量tf.Tensor,表示将用于创建分布的随机种子

返回与文件名对应的字符串数据集


希望这能回答你的问题,学习愉快

为什么不在将tfrecord文件名的python列表发送到tf.data.Dataset之前对其进行随机排序呢?因为我想洗牌每个历元。所以每次我都需要重新创建数据集@Gobrewers14为什么不在发送到tf.data.Dataset之前对tfrecord文件名的python列表进行随机排序呢?因为我想洗牌每个历元。所以每次我都需要重新创建数据集@酒鬼14