从 tensorflow 的子硬盘驱动器读取图像

Reading images from sub hard drive for tensorflow

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

我想知道如果图像不适合我的本地硬盘驱动器,我将如何能够从 USB 驱动器读取图像并使用它们来训练我的模型?我需要一次从 USB 驱动器 "batch_size" 读取图像吗?或者我是否可以一次从 USB 驱动器读取所有图像并将它们分成批次,如果它们存储在我的本地硬盘驱动器上,我通常会这样做?

老实说,不建议一次加载所有图像。您的 USB 记忆棒只是另一个可以读入的路径,在 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)

这段代码不是最高效的,但应该可以,我现在无法测试。

希望能帮到你,有问题尽管问