运行 在 google colab 中导入数组中的数据集时内存不足
running out of ram in google colab while importing dataset in array
我想将大约 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)
有两种方法可以避免 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)
非常感谢您的精彩回答。我尝试生成器,没问题。但是,当我尝试以下代码时,我不会遇到崩溃:
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 的代码 space 复杂度吗?
我想将大约 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)
有两种方法可以避免 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)
非常感谢您的精彩回答。我尝试生成器,没问题。但是,当我尝试以下代码时,我不会遇到崩溃:
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 的代码 space 复杂度吗?