TensorFlow Mini-batching
要使用 mini-batching,你首先要把你的数据集分成 batches。
不幸的是,有时候不可能把数据完全分割成相同数量的 batch。例如有 1000 个数据点,你想每个 batch 有 128 个数据。但是1000 无法被 128 整除。你得到的结果是 7 batch,每个128个数据点,一个 batch 有 104个数据点。(7*128 + 1*104 = 1000)
batch里面的数据点数量会不同的情况下,你需要利用 TensorFlow 的tf.placeholder()
函数来接收这些不同的 batch。
继续上述例子,如果每个样本有n_input = 784
特征,n_classes = 10
个可能的标签,features
的维度应该是[None, n_input]
,labels
的维度是 [None, n_classes]
。
# Features and Labels
features = tf.placeholder(tf.float32, [None, n_input])
labels = tf.placeholder(tf.float32, [None, n_classes])
None
在这里做什么用呢?
None
维度在这里是一个 batch size 的占位符。在运行时,TensorFlow 会接收任何大于 0 的 batch size。
回到之前的例子,这个设置可以让你把features
和 labels
给到模型。无论 batch 中包含128,还是104个数据点。
问题二
下列参数,会有多少batch,最后一个batch有多少数据点?
features is (50000, 400)
labels is (50000, 10)
batch_size is 128