学习深度学习一年多了,一个感觉是实验结果的好坏在很大程度上取决于数据;数据对于深度学习算法十分关键,数据集的大小影响着模型的精度和泛化能力,好的数据处理技巧锦上添花,而合适的数据输入输出方法使Tensor
“流动”得更加顺畅更好的发挥机器的性能,为模型的训练节约时间。许多情况下,对于数据的处理花的时间往往比模型的修改花的时间多,因此本文专门针对数据处理(图像类)进行一次梳理归纳,利人利己。
TensorFlow有三种数据读取方式:
1. 预先加载数据
2. 使用python将数据feed
到Tensor
中
3. 从文件读取数据
预先加载数据
第一种方式直接把数据写在代码里进行运算,这种方式在一些简单的演示算法中很常见
import tensorflow as tf
a = tf.constant(3.0)
b = tf.constant(4.0)
c = a + b
with tf.Session() as sess:
print(sess.run(c))
feed
第二种方法是利用tf.placeholder
提供一个数据输入的接口,在启动计算图时将数据通过这个接口输入计算图
import tensorfow as tf
train_images = ...
train_labels = ...
X = tf.placeholder([], dtypes=tf.float32)
Y = tf.placeholder([], dtypes=tf.uint8)
train_op = ...
with tf.Session() as sess:
sess.run(train_op, feed_dict={X: train_images, Y: train_labels})
从文件读取
第三种方法从文件中读取,涉及到数据的转换和读取两个方面,数据的转换又有各种格式可以选择,这里简单列举几个常用的数据存储与读取方法,最后介绍TensorFlow
标准存储格式TFRecord
的转换和读取方法。
1、 .pkl
.pkl
文件是一种特殊的串行化存储的二进制格式文件,可以存储大部分常见的Python对象,使用起来十分方便