#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
Итак, проверьте, перезагружаете ли вы модель при обработке каждого тестового образца.