Tfrecord是怎么实现大数据集在小内存平台上训练的?

听说tfrecord可用来做大规模数据集的训练。
我看了一下用法,似乎是先读数据集,存成tfrecord的格式。后面训练的时候读取这个tfrecord的文件。
我假设这个文件很大,比如有100G。而我的内存是32G。那么训练的时候tf是每次从这个大文件里读一部分出来训练吗?它会自动去prefetch(预读)吗?还是其他的工作方式?

我目前就遇到这种内存不足的困扰。另外我也希望能尽量避免不断读零碎的小文件损耗我的硬盘(之前就是这样读坏了一个)。

1 Like

会顺序读取这个大的数据文件,每次读取一部分,不会全部读到内存里。也有prefetch机制,可以参考 https://tf.wiki/zh_hans/basic/tools.html#zh-hans-prefetch

1 Like

谢谢,回头我去试试。