第 2 章 · 数据管道:tf.data 上料车间 章节摘要:GPU 每秒能算的运算量逐年翻倍,而数据读取与预处理往往还卡在磁盘与单线程 Python 上——训练慢,瓶颈多半不在计算而在上料。本章用 tf.data 把数据供给改造成一条可声明、可并行、可预取的流水线:从内存列表到生成器,从 TFRecord 文件到图片目录,再到 map、cache、prefetch 的调度三件套。读完你将能亲手把一条慢管道提速数倍,并说清每一环在什么时刻、被哪个线程执行。 学习目标 阅读完本章,你应当能够: 用 fromtensorslices、fromgenerator、TFRecord 三种方式构造 Dataset,并说出各自的适用边界;
章节摘要:GPU 每秒能算的运算量逐年翻倍,而数据读取与预处理往往还卡在磁盘与单线程 Python 上——训练慢,瓶颈多半不在计算而在上料。本章用 tf.data 把数据供给改造成一条可声明、可并行、可预取的流水线:从内存列表到生成器,从 TFRecord 文件到图片目录,再到 map、cache、prefetch 的调度三件套。读完你将能亲手把一条慢管道提速数倍,并说清每一环在什么时刻、被哪个线程执行。
阅读完本章,你应当能够:

一句金句:Dataset 对象只是一张声明式的取货计划——你写的每一环变换都不立即执行,迭代那一刻管道才开机。
Dataset 对象的本质是惰性声明,变换链不立即执行;本章导航案例——加州房价——先跑通一条最短管道。
from_tensor_slices、from_tensors、from_generator 的区别,切片语义与状态保存,小数据与流式数据各自怎么上料。
二进制记录格式的写入与解析,特征描述协议,图片目录流的端到端读取案例。
map 里做数值标准化、图片翻转裁剪,one-hot 与类型整理,把预处理从训练循环搬进管道的收益。
num_parallel_calls 的并行模型,cache 的两段式取舍,prefetch 与 GPU 计算重叠的时序原理,含实测对比。
本章五节是一条传送带的五段:2.1 先建立"惰性声明"的执行观,2.2 与 2.3 解决"元素从哪来",2.4 解决"元素怎么加工",2.5 解决"各段怎么并行重叠"。前三节决定管道能不能跑,2.5 决定管道喂不喂得饱 GPU——如果你只精读一节,选 2.5,它是 GPU 利用率问题的几乎全部答案。
2.1 惰性声明 ──> 2.2 内存上料 ──┐ ├──> 2.4 管内加工 ──> 2.5 并行三件套 ──> 第 3 章 fit 2.3 文件上料 ─┘