Сеанс прекращен так как объем озу полностью исчерпан
Перейти к содержимому

Сеанс прекращен так как объем озу полностью исчерпан

  • автор:

Как решить проблему с нехваткой оперативной памяти при обучении модели keras?

Не хватает оперативной памяти, снизил размер изображений до 36 х 36. Этот же размер передаю в input_shape . Появляется ошибка, где сказано, что памяти не хватает, а в скобках (256 х 256). От чего так?

import numpy as np from PIL import Image from matplotlib import pyplot as plt import os import keras import joblib from keras.preprocessing.image import ImageDataGenerator train_images = 'C:\\Users\\Администратор\\AppData\\Local\\Programs\\Python\\Python36-32\\train_images' model = keras.Sequential([ keras.layers.Flatten(input_shape=(36, 36, 3)), keras.layers.Dense(128, activation='relu'), keras.layers.Dropout(0.5), keras.layers.Dense(1, activation='sigmoid') ]) model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) datagen = ImageDataGenerator(rescale = 1. /255) train_generator = datagen.flow_from_directory( train_images, batch_size = 4, class_mode = 'binary') model.fit(np.array(train_generator), epochs=10, validation_split = 0.1) 

Ошибка (cmd).

Found 336 images belonging to 2 classes. Traceback (most recent call last): File "C:\Users\Администратор\AppData\Local\Programs\Python\Python36-32\image_g uess.py", line 31, in model.fit(np.array(train_generator), epochs=10, validation_split = 0.1) File "C:\Users\Администратор\AppData\Local\Programs\Python\Python36-32\lib\sit e-packages\keras_preprocessing\image\iterator.py", line 104, in __next__ return self.next(*args, **kwargs) File "C:\Users\Администратор\AppData\Local\Programs\Python\Python36-32\lib\sit e-packages\keras_preprocessing\image\iterator.py", line 116, in next return self._get_batches_of_transformed_samples(index_array) File "C:\Users\Администратор\AppData\Local\Programs\Python\Python36-32\lib\sit e-packages\keras_preprocessing\image\iterator.py", line 222, in _get_batches_of_ transformed_samples batch_x = np.zeros((len(index_array),) + self.image_shape, dtype=self.dtype) MemoryError: Unable to allocate 3.00 MiB for an array with shape (4, 256, 256, 3 ) and data type float32 

Крашится Google Colab, быстро расходуется ОЗУ

Пробую обучить разные модели с готовой архитектурой (ResNet, Inception),
набор изображений небольшой, всего около 1,5 Гига
Однако ОЗУ быстро тратится и на 10-15 эпохе Колаб крашится.
Что делать? Среда выполнения выбрана GPU.

Лучший ответ

Докупить ресурсы

Остальные ответы

Похожие вопросы

Ваш браузер устарел

Мы постоянно добавляем новый функционал в основной интерфейс проекта. К сожалению, старые браузеры не в состоянии качественно работать с современными программными продуктами. Для корректной работы используйте последние версии браузеров Chrome, Mozilla Firefox, Opera, Microsoft Edge или установите браузер Atom.

Выбор видеокарты для обучения сверточных сетей [закрыт]

Закрыт. На этот вопрос невозможно дать объективный ответ. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы на него можно было дать ответ, основанный на фактах и цитатах.

Закрыт 7 месяцев назад .

Есть длительная задача на работу с изображениями 500х500х3. Финансы сильно ограничены, хочу определиться с видеокартой, т.к. на процессоре процесс обучения исчисляется часами. Просьба такая, могли бы вы прогнать сверточную нейронку в 500 сгенерированных изображений через CNN на своей видеокарте и сказать сколько длится одна эпоха обучения и модель вашей карты. Код полностью рабочий, данные ниоткуда тянуть не нужно! Заранее спасибо!

import numpy as np from numpy.random import default_rng from keras.layers import Activation, MaxPooling2D, Dense, Flatten, Conv2D from keras.models import Sequential import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' x = default_rng(42).random((500,500,500,3)) y = [[np.random.randint(25,50) for i in range(500)],[np.random.randint(40,200) for i in range(500)]] y = np.array(y) y = np.reshape(y,(500, 2)) model = Sequential() model.add(Conv2D(32, (2, 2), input_shape=(500,500,3))) model.add(Conv2D(32, (2, 2))) model.add(Activation('relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Conv2D(64, (2, 2))) model.add(Conv2D(64, (2, 2))) model.add(Activation('relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Conv2D(128, (2, 2))) model.add(Conv2D(128, (2, 2))) model.add(Activation('relu')) model.add(MaxPooling2D(pool_size=(5, 5))) model.add(Conv2D(256, (2, 2))) model.add(Conv2D(256, (2, 2))) model.add(Activation('relu')) model.add(MaxPooling2D(pool_size=(5, 5))) model.add(Flatten()) model.add(Dense(256)) model.add(Activation('relu')) model.add(Dense(128)) model.add(Activation('relu')) model.add(Dense(64)) model.add(Activation('relu')) model.add(Dense(16)) model.add(Activation('relu')) model.add(Dense(2)) model.add(Activation('linear')) model.compile(optimizer='adam', loss='mean_absolute_percentage_error', metrics=['mean_absolute_percentage_error','mse']) model.fit(x,y, batch_size=50, epochs=5) 
  • python
  • машинное-обучение
  • нейронные-сети
  • машинное-зрение

Быстрая загрузка большого количества данных в Google Colab

Доброго времени суток, Хабр. Решил поделиться своим знанием, как можно быстро загрузить большое количество файлов в Google Colab с Google Drive.

Всем известно, что Google Colab отличная бесплатная платформа для обучения и экспериментов над Нейронными Сетями.

На платформе Google Colab Вам бесплатно предоставят мощную видеокарту на которой вы сможете поэкспериментировать с обучением своей нейросети на протяжении примерно 12 часов.
Затем сеанс прервется, но на следующий день от Google можно опять будет получить видеокарту и продолжить свои эксперименты.

Нейронным сетям требуется очень много данных для обучения, особенно если речь идет о нейросетях работающих с изображениями.

Для обучения таких нейросетей необходимо загрузить в обучающую и валидационную выборки тысячи и сотни изображений. К сожалению, если эти изображения загружать непосредственно из вашего Google Drive, это занимает неприлично долгое время — десятки минут или даже часы. Ведь каждое обращение за файлом в Google Drive и получение от него ответа с содержимым файла происходит последовательно и не быстро.

Обидно тратить время доступа к бесплатной видеокарте на загрузку данных, да и не разумно это.

А мы люди разумные, поэтому мы один раз обратимся к Google Drive считаем наши данные запакованные заранее в zip архив, распакуем полученный zip архив в память Google Colab и считаем свои данные со скоростью в сотни раз большей чем с Google Drive последовательно по одному файлу.

Для эксперимента со скорость загрузки данных в Colab я взял имеющуюся у меня базу «Airplanes» для сегментационной нейросети.

В этой базе есть папка с изображениями «самолеты» и папка «сегментация», где хранятся маски изображений самолетов из вышеназванной папки.
В каждой папке по 1005 изображений 1920*1080.
В общей сложности нам предстоит загрузить 2010 файлов.
Я заранее загрузил к себе на Google Drive как саму базу с изображениями, так и ее zip архив.

Структура Обучающей Базы:

Итак, приступим к скоростной загрузке данных с Google Drive:

    Запускаем Google Colab и импортируем необходимые нам для этого библиотеки и модули

Выполняем команду на подключение к Google Drive

Переходим по ссылке для выбора свое аккаунта Google

Выбираем свой аккаунт в Google

Подтверждаем доступ Colab к Google Drive

Копируем авторизационный код для доступа к Google Drive

Вставляем авторизационный код в строку и получаем доступ к своему Google Drive

Прописываем путь к архиву с обучающей базой данных и разархивируем ее память Colab

Для тестирования скорости чтения файлов я написал функцию, которая пройдется по всем подкаталогам обучающей базы и в каждом подкаталоге прочитает все файлы которые в нем хранятся.

Тестируем скорость чтения всех файлов

Как видно, время за которое мы загрузили 2010 файлов c размером изображения 1920*1080 составило всего 0,96 сек.

То есть, менее чем за секунду, мы загрузили весь наш объем информации.

Как мы видим для загрузки из каталога 2010 файлов хранящихся на Google Drive нам потребовалось уже 1500 секунд, а ведь это 25 минут.

Это 25 минут простоя вашего экспериментов с нейросетью.

Надеюсь, статья была для вас полезной и теперь загрузка большого количества файлов с Google Drive в Colab больше уже не проблема.

Загружайте свои обучающие данные в сотни раз быстрее чем делали до этого ранее.

Всего четыре простых шага.

  1. Запаковать Обучающую Базу в zip архив.
  2. Загрузить zip файл с Обучающей Базой к себе на Google Drive
  3. Распаковать zip файл с Обучающей базой в память Colab
  4. Прочитать все файлы памяти Colab в вашу программу

Для тех, кому нужен код, описанный в статье, добро пожаловать ко мне на GitHub.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *