【问题标题】:Reading images from sub hard drive for tensorflow从子硬盘驱动器读取图像以进行张量流
【发布时间】:2019-04-07 15:12:45
【问题描述】:

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

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

【问题讨论】:

    标签: python tensorflow memory storage


    【解决方案1】:

    老实说,不建议一次加载所有图像。您的 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
    

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

    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)
    

    这段代码不是最有效的,但它应该可以工作,我目前无法测试它。

    希望能帮到你,有问题可以问

    【讨论】:

      猜你喜欢
      • 2017-01-27
      • 2021-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多