TFRecord 应该包含多个观察值还是一个?

Should a TFRecord contain multiple observations or one?

我在 explanation 中看到一个 TFRecord 包含多个 类 和多个图像(一只猫和一座桥)。写入时,两个图像都写入一个 TFRecord。在回读过程中,验证此 TFRecord 包含两个图像。

我在其他地方看到有人为每个图像生成一个 TFRecord,我知道你可以像这样加载多个 TFRecord 文件:

train_dataset = tf.data.TFRecordDataset("<Path>/*.tfrecord")

但是推荐哪种方式呢?我应该为每个图像构建一个 tfrecord,还是为多个图像构建一个 tfrecord?如果将多个图像放入一个 tfrecord,那么最大数量是多少?

正如您所说,可以在单个 TFRecord 文件中保存任意数量的条目,并且可以根据需要创建任意数量的 TFRecord 文件。

我建议使用实际考虑因素来决定如何进行:

  • 一方面,尝试使用更少的 TFRecord 文件以便更轻松地处理文件系统中的移动文件
  • 另一方面,避免将 TFRecord 文件增长到可能成为文件系统问题的大小
  • 请记住,为训练/验证/测试拆分保留单独的 TFRecord 文件很有用
  • 有时数据集的性质使得如何拆分成单独的文件变得显而易见(例如,我有一个视频数据集,每个参与者会话使用一个 TFRecord 文件)