gpt4 book ai didi

python - 从路径加载大量图像并将其转换为大小为 (n,224,224,3) 的数组

转载 作者:太空宇宙 更新时间:2023-11-03 21:07:19 25 4
gpt4 key购买 nike

我当前正在加载图像,从中创建一个数组并将其附加到列表中。遗憾的是,这似乎耗尽了我尝试加载的图像量 (20k) 的所有 RAM。

代码:

def convert_image_to_array(files,relpath):
images_as_array=[]
len_files = len(files)
i = 0
print("---ConvImg2Arr---")
print("---STARTING---")
for file in files:
images_as_array.append(img_to_array(load_img(relpath+file, target_size=(soll_img_shape, soll_img_shape)))/255)
if i == int(len_files*0.2):
print("20% done")
if i == int(len_files*0.5):
print("50% done")
if i == int(len_files*0.8):
print("80% done")

i +=1
print("---DONE---")
return images_as_array

使用来自train_test_split的X_train来调用它:

x_train =  convert_image_to_array_opt(X_train,rel_path)

加载所有这些图像的更有效方法是什么?

编辑:

使用 Keras 中的 .flow_from_directory() 解决了我的问题,但我仍然想知道如何按照我尝试的方式完成它。

最佳答案

假设方法 load_img 不是瓶颈,convert_image_to_array_opt 将所有图像 (20k) 加载到内存中。但是,flow_from_directory 方法一次仅加载一组图像(典型的批量大小为 32、64、... 1024)

重新设计convert_image_to_array_opt的一种可能方法是将批量大小作为参数并加载并yield一个加载了bath_size图像的numpy数组仅(连同标签)。在训练时枚举 convert_image_to_array_opt 方法,该方法返回您可以训练的batch_size X 和 y。

关于python - 从路径加载大量图像并将其转换为大小为 (n,224,224,3) 的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55317175/

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