#python #keras #deep-learning #computer-vision #google-colaboratory
Вопрос:
Я новичок в ML, и у меня есть проблема. У меня есть 10000 изображений (300 300)пикселей. Я хочу включить их в модель DL для классификации. но моя проблема в том, что когда я нормализую изображения (преобразую каждое изображение из uint8 в плавающее и делю на 255), моя оперативная память отказала! Я имею в виду, что моя оперативная память Google Colab заполняется.
- Есть ли решение или методика для этой проблемы ?
- Есть ли способ, чтобы (например) Я могу разделить свои данные на 3 части (3300 изображений в каждой части), затем нормализовать и передать эту часть модели для обучения отдельно? (и после части 1 очистите оперативную память, а часть 2 Нормализуйте тренируйтесь)
Спасибо.
это мой код:
data_train = np.asarray(data_train)
data_train = data_train.astype('float16') #data_train.shape: (10000, 300, 300, 3)
data_valid = np.asarray(data_valid)
data_valid = data_valid.astype('float16')
data_train/=255.0 #This part fills my memory !!
data_valid/=255.0 #This part fills my memory !!
model = #confing the model ...
model.compile(loss=... ,optimizer=...,metrics=...)
datagen = ImageDataGenerator(...)
datagen.fit(data_train)
history = model.fit(datagen.flow(data_train,labels_train,batch_size=...),
steps_per_epoch=...,
epochs=...,
validation_data=(data_valid,labels_valid))
Ответ №1:
Как правило, мы загружаем не все данные один раз (в вашем случае 10 000 изображений). Минимальное количество изображений, которое вам нужно загрузить в память сразу, — это размер вашей партии.
Что касается вашего второго вопроса — да, это общепринятый способ работы с большими наборами данных. Во-первых, вы должны загрузить только batch_size
нормализованное количество изображений и передать их в классификатор. Посмотрите, поможет ли это вашей реализации.