为什么要设计tf.data库?
- 机器学习模型需要一个强大高效的管道式数据读取工具,把数据从硬盘读取到模型。直接用Python API载入数据,比如,使用cv2.imread 或 PIL.Image.open 效率很低。参考Pillow与OpenCV性能
- input pipeline的速度要足够快,快到能赶上GPU消耗数据的速度,这包括:从数据源头处读取数据(Extract)(比如内存,磁盘,远程服务器,云端)、对数据做一系列的变换(Transform)、载入CPU或者GPU(Load)。
- 灵活性要足够好,能从各种数据源中读取数据
- 必须容易使用(easy-to-use),这就是所谓的:“Democratize AI”--人人都能用AI
- tf.data就是这样一个容易使用,快速高效,能从各种数据源中读取数据,完整所有数据预处理工作的库
- tf.data会预取数据(prefetch data),并行执行数据解码(extraction)和转换(transformation)
ImageNet-Resnet50 input data processing time with tf.data vs. NVIDIA DALI and PyTorch DataLoader
网友评论