首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >TensorFlow:从大文件中高效地读取(和洗牌)示例

TensorFlow:从大文件中高效地读取(和洗牌)示例
EN

Stack Overflow用户
提问于 2020-05-13 10:31:37
回答 1查看 588关注 0票数 0

设置

我有几十个中等大小的文件(~1G),每个文件包含给定类的每一行一个样本。在每个文件中,样本都是非随机的,即A文件的I‘样本与B文件的I’样本有一定的相关性,因为数据是每个类的某个轴上的样本(细节并不重要)。

问题

读取和处理内存中的所有样本不是一种选择,因为(1)可能多达数百个文件;(2)每个样本的内存占用在预处理后显着增加(例如,由于较大的一热编码向量)。

我的目标是有效地从磁盘读取示例(或批),并将其输入到我的tf.keras模型中。此外,我希望在每个时代之后,将样本(或批)输入到网络中的顺序进行洗牌。

我如何以合理的效率存档这个文件,也就是说,我的GPU在训练期间不会空闲?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-13 13:45:13

这里有一个建议,假设您正在读取TFRecord文件。具体参数取决于每个示例的大小和可用资源:

代码语言:javascript
运行
复制
import tensorflow as tf
ds = (tf.data.Dataset.list_files('data_dir/*.tfrecord')
      .cache()
      .repeat()
      .shuffle(1_000)
      .interleave(tf.data.TFRecordDataset, block_length=100,
                  # Optional
                  num_parallel_calls=tf.data.experimental.AUTOTUNE)
      .shuffle(10_000)
      .map(record_parse_function)
      .batch(32)
      .prefetch(1))

无论如何,阅读tf.data输入流水线性能是值得推荐的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61772307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档