Tensorflow将训练数据分组到批次

时间:2017-03-05 20:44:15

标签: python machine-learning tensorflow deep-learning

我有一个图像数据集作为Numpy数组。 (图像数量,长度,宽度,颜色范围)我想将其拆分为批次并进给张量流。做这件事的好方法是什么?

4 个答案:

答案 0 :(得分:3)

Thomas Pinetz回答中有一个小错误,我还无法发表评论,所以这是一个额外的答案。

int(len(array)/batch_size)会将除法向下舍入到最接近的整数,因此不会处理最后一批。要对该部门进行整理,您可以使用

ceil_int = -(-a//b)

此外,与其他批次相比,最后一批可能会非常微小。您可以稍微修改批量大小,以减少发生这种情况的可能性。完整的代码如下所示:

def ceil(a,b):
    return -(-a//b)

n_samples = len(array)
better_batch_size = ceil(n_samples, ceil(n_samples, batch_size))

for i in range(ceil(n_samples, better_batch_size)):
    batch = array[i * better_batch_size: (i+1) * better_batch_size]

答案 1 :(得分:2)

首先,您可以使用numpy.split将图像分成批次(子数组)。然后,您可以使用带有tf.Session参数的run函数将其提供给feed_dict

我也强烈建议您查看TF MNIST tutorial

答案 2 :(得分:1)

我使用这样的东西:

for bid in range(int(len(array)/batch_size)):
    batch = array[bid*batch_size:(bid+1)*batch_size]

答案 3 :(得分:-1)

如果您已经创建了数据集,则可以使用 batch() 来创建数据批次。

>>>dataset = tf.data.Dataset.range(8)
>>>dataset = dataset.batch(3)
>>>list(dataset.as_numpy_iterator())

[array([0, 1, 2]), array([3, 4, 5]), array([6, 7])]

您可以在tensorflow documentation中查看有关batch()的更多详情