gpt4 book ai didi

python - 当我尝试将我的 numpy 数组保存到 .npy 文件时,出现内存错误。如何从内存有限的图像文件创建一个大的 .npy 文件?

转载 作者:太空宇宙 更新时间:2023-11-04 04:10:04 40 4
gpt4 key购买 nike

我是处理大型数据集的新手。我想用我的训练数据生成一个 .npy 文件。我有大约 1.7GB 的 PNG 图像要加载,但是由于内存错误,我将这个设置分成了 block ,我现在试图将大约 389.5 MB 的 PNG 文件加载到一个 numpy 数组中,然后保存它。我能够将文件加载到数组中,但是当我尝试保存它时出现内存错误。我已经尝试了 .pickle 和 .npy 文件类型。我很困惑为什么这是一个问题,因为我的笔记本电脑有 8GB RAM。我可以看到我的代码中存在一些内存效率低下的问题,但我还没有找到解决这些问题的方法。我怎样才能将这些数据加载到 .npy 文件中?对我来说,将其余训练数据也包括在内的最佳方法是什么?

def create_training_data():
training_data = []
IMAGE_SIZE = 640
DATADIR = os.path.join(os.path.dirname(__file__), 'training_data') # directory where training data is held
CATEGORIES = ["0", "1"]
count = 0
fail = 0
for category in CATEGORIES:

path = os.path.join(DATADIR, category)
class_num = CATEGORIES.index(category)
for img in os.listdir(path):#
count += 1
print(str(count))
try:

img_array = cv2.imread(os.path.join(path, img))
if not (img_array.shape[0] == IMAGE_SIZE and img_array.shape[1] == IMAGE_SIZE):
img_array = cv2.resize(img_array, (IMAGE_SIZE, IMAGE_SIZE))

training_data.append([img_array, class_num])

except Exception:

fail += 1
print("failed "+str(fail)+"/"+str(count))

random.shuffle(training_data)
X = []
y = []

for features, label in training_data:

X.append(features)
print(str(features))
y.append(label)
# X = np.array(X).reshape(-1, IMAGE_SIZE, IMAGE_SIZE, 3)
np.save('training_data/X.npy', X)
np.save('training_data/y.npy', y)
# pickle_out = open("training_data/X.pickle", "wb")
# pickle.dump(X, pickle_out)
# pickle_out.close()pytho
# pickle_out = open("training_data/y.pickle", "wb")
# pickle.dump(y, pickle_out)
# pickle_out.close()

如有任何帮助,我们将不胜感激!

最佳答案

Pickle 和 numpy.save 内存效率太低,无法保存大型数据集,我建议您使用 h5py将数据保存为 HDF5,这是非常有效的,应该在这些约束下工作。

我已经用它保存了数百 GB 的图像数据集,而且 RAM 使用率很低。

关于python - 当我尝试将我的 numpy 数组保存到 .npy 文件时,出现内存错误。如何从内存有限的图像文件创建一个大的 .npy 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56457370/

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