Запуск нескольких тренировок с несколькими конфигурациями приводит к Out Of Memory (Keras) - PullRequest
0 голосов
/ 18 марта 2019

Я хочу обучить модель с несколькими конфигурациями (около 100 различных случаев). Мой основной алгоритм находится на основном .py файле, который я хочу запустить 100 раз. Этот файл .py работает хорошо, и все идет хорошо, если я выполню его один раз.

Я создал еще один .py файл, который вызывает первый и присваивает ему все параметры. Проблема в том, что в случайное время во время второй тренировки у меня возникает ResourceExhaustedError.

ResourceExhaustedError: OOM when allocating tensor with shape[4096,1] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc
 [[node predictions_16/random_uniform/RandomUniform (defined at /home/acarlier/venv/local/lib/python2.7/site-packages/keras/backend/tensorflow_backend.py:4139)  = RandomUniform[T=DT_INT32, dtype=DT_FLOAT, seed=87654321, seed2=7886430, _device="/job:localhost/replica:0/task:0/device:GPU:0"](predictions_16/random_uniform/shape)]]
Hint: If you want to see a list of allocated tensors when OOM happens, add report_tensor_allocations_upon_oom to RunOptions for current allocation info.

У меня GTX 1060 6 ГБ. Поэтому я думаю, что основной .py файл не очень хорошо закрыт между двумя итерациями. Можно ли закрыть его (чистым способом) и запустить для обучения других?

Спасибо тебе

EDIT:

Я пытался:

from my_main_keras_file import train_function

train_function(all my parameters)

del train_function

Но у меня все еще есть та же проблема, del не удаляет все вещи, которые были созданы во время выполнения функции.

1 Ответ

0 голосов
/ 18 марта 2019

Я добавил keras.backend.clear_session () в конце моего обучающего файла .py.Это очистит сессию, как и ожидалось, и теперь я могу рассчитать несколько тренировок один за другим!

Спасибо вам @ sebrockm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...