Оценка моего CNN остановилась с сообщением «ООМ при выделении тензора с формой [3,3,256,512]»

#python #deep-learning #conv-neural-network #evaluation

#python #глубокое обучение #conv-нейронная сеть #оценка

Вопрос:

Я создаю CNN с 5 слоями, 100 эпохами, размером партии 32 и обучил его с помощью tensorflow-gpu на устройстве с 16 ГБ оперативной памяти, 4 ГБ видеокарты nvidia GTX с вычислительной способностью 5 cuda. процесс обучения был выполнен успешно и быстро с 80% обучающих данных. Моя проблема возникает, когда я хочу оценить оставшиеся 20% невидимых данных изображений в той же сети. Процесс оценки идет очень медленно и останавливается с сообщением:

     ResourceExhaustedError (see above for traceback): OOM when allocating tensor with shape[3,3,256,512] and type float on /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc
 [[Node: conv2d_5_122/kernel/Assign = Assign[T=DT_FLOAT, use_locking=true, validate_shape=true, _device="/job:localhost/replica:0/task:0/device:GPU:0"](conv2d_5_122/kernel, conv2d_5_122/random_uniform)]]
    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.
 

Может кто-нибудь, пожалуйста, пожалуйста, помогите мне, я сбиваю с толку. Спасибо.

Комментарии:

1. Похоже, у вашего графического процессора недостаточно памяти для выполнения этого задания

2. @DroidX86 Спасибо за ваш ответ. У моего графического процессора 4 ГБ, он хорошо работал с обучающими данными, которые составляют 80% набора данных, в то время как оценочные данные составляют 20% набора данных.

Ответ №1:

Я столкнулся с той же проблемой при оценке Open L3 CNN для создания вложений аудиоданных.

Я обнаружил, что при вызове функции я неоднократно загружал модель в цикле model.test() . В моем случае тестовая функция была: openl3.get_audio_embedding(audio, sampling_rate)

Когда я снова и снова перезагружал модель с диска, она исчерпала память.

Итак, решение состоит в том, чтобы загрузить модель один раз, как в моем случае я загрузил модель openl3:

model = openl3.models.load_audio_embedding_model(input_repr="mel256", content_type="music",embedding_size=615)

а затем обработал тестовые данные с помощью модели, как в моем случае я сделал:

loop starts:

openl3.get_audio_embedding(audio, sampling_rate, **model**)

loop ends

Итак, проверьте, перезагружаете ли вы модель при обработке каждого тестового образца.