将Numpy数组转换为TFrecord。

11

我正在尝试通过TensorFlow对象检测API训练自定义数据集。数据集包含40,000个训练图像和标签,它们以numpy ndarray格式 (uint8) 存储。训练数据集形状为2 ([40000,23456]),标签形状为1 ([0..., 3])。我想为这个数据集生成tfrecord文件。我该如何做呢?


在这里回答:https://dev59.com/wVcO5IYBdhLWcg3wrTYs#45428167 - Vijay Mariappan
1个回答

6

阅读链接,很明显TensorFlow希望您首先将所有数据加载到内存中(作为数据集)。该链接没有描述任何其他加载数据的方式。其他文档只是说,“随便,去创建一个TFRecordDataset”。 - Monica Heddneck
我建议您跟随第二个链接,使用数据集管道。您肯定不会将整个数据集加载到内存中。一次加载的数据量将由诸如batched_dataset = dataset.batch(4)之类的命令控制,请参阅有关简单批处理的部分。如果您提供了一个加载器函数,那么您将从一组ID开始(也许加载所有ID),并使用Dataset.map来获取ID并返回它所引用的实际数据样本。如果您的数据已经以TF记录格式存在,则TF将为您提供读取器,按需加载数据。 - David Parks
顶部链接已经失效。 - Zuoanqh
那么我需要手动添加每一列吗(超过400个)? - Maaaaa
@Maaaaa,我不太清楚你的问题是什么,最好能提供一些简短的代码示例来澄清你的问题,并将其作为新问题单独提出。在新帖子中可以引用这个问题。 - David Parks
1
@David Parks 经过一些尝试,结果发现如果你的数据不是csv或图像,TFRecords仍然是唯一的选择。如果你通过py_function构建数据集,很可能仍会遇到内存问题。此外,py_function还受到GIL的影响。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接