从次硬盘读取图像以进行Tensorflow

时间:2018-11-03 18:46:46

标签: python tensorflow memory storage

我想运行一个tensorflow脚本,该脚本将读取大量图像。但是,这些图像无法放在我的本地磁盘驱动器上,因此我将它们存储在远程USB驱动器上。

我想知道如果图像不适合本地硬盘驱动器,如何能够从USB驱动器读取图像并使用它们来训练我的模型?我是否需要一次从USB驱动器“ batch_size”读取图像?还是我可以一次从USB驱动器中读取所有图像并将它们分成几批,就像将它们存储在本地硬盘中一样,将它们分为几批?

1 个答案:

答案 0 :(得分:1)

老实说,不建议一次加载所有图像。您的usb-stick只是可以读入的另一个路径,在Linux中,它将存储在根目录下的/ media文件夹下。然后,我建议像这样获取内存中的所有图像路径:

import os

folder_to_image_map = ""
image_paths = [os.path.join(folder_to_image_map, p) for p in os.listdir(folder_to_image_map)]

图像路径将从提供的文件夹中的所有图像路径中加载。 然后,使生成器如下所示:

from PIL import Image

def generator(BATCH_SIZE)
    batch = []
    for file_name in image_paths:
        img = Image.open(file_name)
        """ implement your preprocessing """
        batch.append(img)
        if len(batch) >= BATCH_SIZE:
            g_batch = batch
            batch = []
            yield g_batch

每次调用后,生成器将在for循环中继续。看看这个例子,看看它是如何运行的,并尝试一下。

def generator():
    ll = [1,2,3,4,5,6,7,8,9,10]
    for l in ll:
        yield l

run_gen = generator()
print(next(run_gen)) 
print(next(run_gen))

# or:
for j in run_gen:
    print(j)

此代码不是最高效的代码,但它应该可以工作,目前我无法对其进行测试。

我希望能有所帮助,问问您是否有疑问