我想运行一个tensorflow脚本,该脚本将读取大量图像。但是,这些图像无法放在我的本地磁盘驱动器上,因此我将它们存储在远程USB驱动器上。
我想知道如果图像不适合本地硬盘驱动器,如何能够从USB驱动器读取图像并使用它们来训练我的模型?我是否需要一次从USB驱动器“ batch_size”读取图像?还是我可以一次从USB驱动器中读取所有图像并将它们分成几批,就像将它们存储在本地硬盘中一样,将它们分为几批?
答案 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)
此代码不是最高效的代码,但它应该可以工作,目前我无法对其进行测试。
我希望能有所帮助,问问您是否有疑问