在数组中导入数据集时,谷歌 Colab 中的 ram 用完了

时间:2021-05-08 09:27:23

标签: python conv-neural-network google-colaboratory

我想在一个数组中存储大约 2400 张大小为 2000**2000*3 的图像以馈送卷积神经网络。但是,由于内存不足,Google Colab 会话不断崩溃。

我导入图像数据集的代码:

Train_data = []
for img in sorted(glob.glob("path/*.jpg")):
    image= mpimg.imread(img)
    image=np.array(image , dtype='float32') 
    image /= 255.
    Train_data.append(image) 
Train_data = np.array(Train_data)

2 个答案:

答案 0 :(得分:2)

有两种可能的方法可以避免 RAM 错误:

第一个选项:将图像调整为较小的尺寸

import cv2

Train_data = []
for img in sorted(glob.glob("path/*.jpg")):
    image= mpimg.imread(img)
    image=np.array(image , dtype='float32') 
    image = cv2.resize(image, (150,150))
    image /= 255.
    Train_data.append(image) 
Train_data = np.array(Train_data)

第二个选项:您可以使用比迭代器消耗更少内存的生成器,因为它不存储整个列表。

Train_data = []

def gen_images():
    for img in sorted(glob.glob("path/*.jpg")):
        image= mpimg.imread(img)
        image=np.array(image , dtype='float32') 
        image /= 255.
        yield image

for image in gen_images():
    Train_data.append(image)

答案 1 :(得分:0)

非常感谢您的精彩回答。我试试发电机,没问题。但是,当我尝试下面的代码时,我不会遇到崩溃:

Train_data =np.empty(shape=(num,m,n,c), dtype=np.float32)
i=0
for img in sorted(glob.glob("path/*.jpg")):
 image= mpimg.imread(img)
 image=np.array(image , dtype='float32') 
 image /= 255.
 Train_data[i,:,:,:] = image  
 i+=1

谁能将这段代码与我在空间复杂度方面使用 append 的第一个代码进行比较?