【问题标题】:Out of memory error while storing multiple arrays together将多个数组存储在一起时出现内存不足错误
【发布时间】:2020-05-07 08:55:43
【问题描述】:

我正在尝试将 30227(1024 x 1024) 图像的像素数据存储在一起,方法是将它们连接到一个列表中以形成我的训练数据。但是我在 Jupyter 笔记本中这样做时收到内存不足错误。以下是我使用的代码行。

 train_data = []
 mm_scaler  = MinMaxScaler()
 for file_id in data['patientId']:
     file_name = train_images_path+"\\"+file_id.strip()+".dcm"
     if os.path.exists(file_name):
          image_data = mm_scaler.fit_transform(pydicom.dcmread(file_name).pixel_array)
          train_data.append(image_data)

有没有其他方法可以将这些数据存储在一起,以便以后用于训练我的模型?请在这方面帮助我

【问题讨论】:

    标签: python pandas image-processing jupyter-notebook numpy-ndarray


    【解决方案1】:

    当系统有限制时会出现内存不足错误 你可以看看这个here

    对于存储数据,您可以从 linkthis 获得帮助

    我没有任何 .dcm 文件来复制错误,但我建议在将图像导入数组后执行 minmax 缩放,您可以将其作为矩阵运算而不是数组运算来执行,而且花费的时间也更少。

    【讨论】:

    • 您好,感谢您的回答。实际上,问题是将像素数组一起存储在 30227 个文件的列表中,该列表在运行时内存中的大小会增长并爆炸。所以我最后的选择是只使用分块数据
    • 不,它没有像预期的那样锻炼,我尝试以 .h5 格式存储所有数据,它需要 35 小时来存储 30227 张图像,并且在收回它们时需要 60 GB RAM,我调整了它的大小到 320 x 320,它仍然需要 12 GB 的 RAM 才能加载它。因此,实现数据生成器是一种比将数据分块更好的方法,它花了一些时间进行研究,但最终对我们有很大帮助。
    • 很酷,您可以发布问题的正确答案,以便对其他人有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-10
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多