
362
第 13 章
使用 TensorFlow 加载和预处理数据
到目前为止,我们仅使用了适合放入内存的数据集,但是深度学习系统经常在非常大
的数据集上训练,而这些数据集不能完全放入 RAM。读取大型数据集并对其进行有
效预处理可能对其他深度学习库来说很难实现,但是 TensorFlow 借助
Data API
很容
易实现:只需创建一个数据集对象,并告诉它从何处获取数据以及如何对其进行转换。
TensorFlow 负责所有细节的实现,例如多线程、队列、批处理和预取。此外,Data API
与 tf.keras 无缝协同工作!
现成的 Data API 可以读取文本文件(例如 CSV 文件)、具有固定大小记录的二进制
文件以及使用 TensorFlow 的 TFRecord 格式(支持各种大小的记录)的二进制文件。
TFRecord 是一种包含协议缓冲区的灵活高效的二进制格式(一种开源二进制格式)。
Data API 还支持从 SQL 数据库中读取。而且许多开源扩展都可以从各种数据源中读取,
例如 Google 的 BigQuery 服务。
有效读取大数据集并不是唯一的难点:数据也需要进行预处理,通常是归一化的。而且,
它并不总是严格地由数字字段组成,可能存在文本特征、分类特征等。这些需要进行编
码、例如使用独热编码、词袋编码或嵌入(如我们将要看到的,嵌入是一种可训练的密
集向量,表示类别或令牌)。处理所有这些预处理的一种方法是编写自己的自定义预处
理层,也可以使用 Keras 提供的标准预处理层。
在本章中,我们将介绍 ...