我有一个图像数据集作为Numpy数组。 (图像数量,长度,宽度,颜色范围)我想将其拆分为批次并进给张量流。做这件事的好方法是什么?
答案 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()
的更多详情