gpt4 book ai didi

python - Tensorflow:仅在需要时将图像加载到内存中

转载 作者:行者123 更新时间:2023-12-01 01:57:06 24 4
gpt4 key购买 nike

我正在使用 TensorFlow V1.7 和新的高级 Estimator 界面。我能够使用自己的数据集创建和训练自己的网络。

但是,我用来加载图像的策略对我来说似乎并不正确。到目前为止我使用的方法(很大程度上受到 MNIST 教程的启发)是从一开始就将所有图像加载到内存中(这里有一个小代码片段可以给您一个想法):

    for filename in os.listdir(folder):
filepath = os.path.join(folder, filename)
# using OpenCV to read image
images.append(cv2.imread(filepath, cv2.IMREAD_GRAYSCALE))
labels.append(<corresponding label>)

# shuffle samples and labels in the same way
temp = list(zip(images, labels))
random.shuffle(temp)
images, labels = zip(*temp)

return images, labels

这意味着在训练网络之前,我必须将所有训练集(包含 32k 图像)加载到内存中。然而,由于我的批量大小为 100,因此网络一次不需要超过 100 个图像。

这种方法对我来说似乎很奇怪。据我了解,这种方式辅助内存仅被访问一次,从而最大限度地提高了性能;但是,如果我的数据集非常大,这可能会使我的 RAM 过载,不是吗?

因此,我想使用一种惰性方法,仅在需要时加载图像(即当它们碰巧在一批中时)。我怎样才能做到这一点?我已经搜索了 TF 文档,但到目前为止我还没有找到任何内容。

我有什么遗漏吗?

最佳答案

建议使用Dataset模块,它为您提供了使用队列、将少量示例预取到内存、线程数量等等的能力(除其他外)。

关于python - Tensorflow:仅在需要时将图像加载到内存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50037654/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com