#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)
Комментарии:
1. Попробуйте использовать генератор.
Ответ №1:
Есть два возможных способа избежать ошибки оперативной памяти:
Первый вариант: Измените размер изображений на меньший размер
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)
Ответ №2:
Большое спасибо за ваш замечательный ответ. Я пробую генератор, и все в порядке. Однако, когда я пытаюсь выполнить код ниже, я не сталкиваюсь с сбоем:
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
может ли кто-нибудь сравнить этот код с моим первым кодом, в котором используется добавление, с точки зрения сложности пространства?