【发布时间】:2021-06-06 18:36:57
【问题描述】:
我有一个包含 110k 图像的文件夹,每个图像的形状为 (256, 256, 3)。我正在一一阅读,转换为一个 numpy 数组并存储在一个列表中。之后,我将列表转换为 numpy 数组。 numpy 数组的形状为 (110000, 256, 256, 3)。然后,当我尝试使用 images = images / float(255) 标准化图像时,会显示此错误:
File "loading_images.py", line 25, in <module>
images = images / float(255)
MemoryError: Unable to allocate 161. GiB for an array with shape (110000, 256, 256, 3) and data type float64
还有其他方法吗?
我当前的代码是这样的:
files = glob.glob(dir + "*.png")
images = []
for f in files
im = cv2.imread(f)
img_arr = np.asarray(im)
images.append(img_arr)
images = np.asarray(images)
images = images / float(255)
【问题讨论】:
-
你可以使用 dask: stackoverflow.com/questions/56620786/… 。 Dask 的有趣之处在于您可以加载大量数据,并且仅在需要时才实际读取这些值!
-
谢谢!我从 keras 搜索并找到了 ImageDataGenerator。它可以加载大量数据并对其进行规范化。
标签: python image numpy dataset normalize