Распределенная память тензометра: распределение 38535168 превышает 10% системной памяти
Используя предварительные тренировки ResNet50, я пытаюсь создать классификатор. База кодов полностью реализована в Kens на высоком уровне Tensorflow API. Полный код размещен в приведенной ниже ссылке GitHub.
Исходный код: классификация с использованием архитектуры RestNet50
Размер файла предварительно подготовленной модели составляет 94,7 МБ.
Я загрузил предварительно подготовленный файл
new_model = Sequential()
new_model.add(ResNet50(include_top=False,
pooling='avg',
weights=resnet_weight_paths))
и соответствовать модели
train_generator = data_generator.flow_from_directory(
'path_to_the_training_set',
target_size = (IMG_SIZE,IMG_SIZE),
batch_size = 12,
class_mode = 'categorical'
)
validation_generator = data_generator.flow_from_directory(
'path_to_the_validation_set',
target_size = (IMG_SIZE,IMG_SIZE),
class_mode = 'categorical'
)
#compile the model
new_model.fit_generator(
train_generator,
steps_per_epoch = 3,
validation_data = validation_generator,
validation_steps = 1
)
и в наборе учебных материалов у меня есть две папки для собак и кошек, каждая из которых содержит почти 10 000 изображений. Когда я скомпилировал скрипт, я получаю следующую ошибку
Epoch 1/1 2018-05-12 13: 04: 45.847298: W tensorflow/core/framework/allocator.cc: 101] Распределение 38535168 превышает 10% системной памяти. 2018-05-12 13: 04: 46.845021: W tensorflow/core/framework/allocator.cc: 101] Распределение 37171200 превышает 10% системной памяти. 2018-05-12 13: 04: 47.552176: W tensorflow/core/framework/allocator.cc: 101] Распределение 37171200 превышает 10% системной памяти. 2018-05-12 13: 04: 48.199240: W tensorflow/core/framework/allocator.cc: 101] Распределение 37171200 превышает 10% системной памяти. 2018-05-12 13: 04: 48.918930: W tensorflow/core/framework/allocator.cc: 101] Распределение 37171200 превышает 10% системной памяти. 2018-05-12 13: 04: 49.274137: W tensorflow/core/framework/allocator.cc: 101] Распределение 19267584 превышает 10% системной памяти. 2018-05-12 13: 04: 49.647061: W tensorflow/core/framework/allocator.cc: 101] Распределение 19267584 превышает 10% от системной памяти. 2018-05-12 13: 04: 50.028839: W tensorflow/core/framework/allocator.cc: 101] Распределение 19267584 превышает 10% от системной памяти. 2018-05-12 13: 04: 50.413735: W tensorflow/core/framework/allocator.cc: 101] Распределение 19267584 превышает 10% от системной памяти.
Любые идеи по оптимизации способа загрузки предварительно подготовленной модели (или) избавиться от этого предупреждения?
Спасибо!
Ответы
Ответ 1
Попробуйте уменьшить атрибут batch_size до небольшого числа (например, 1,2 или 3). Пример: train_generator = data_generator.flow_from_directory ('path_to_the_training_set', target_size = (IMG_SIZE, IMG_SIZE), batch_size = 2, class_mode = 'категориальный')
Ответ 2
В качестве альтернативы вы можете установить переменную среды TF_CPP_MIN_LOG_LEVEL=2
чтобы отфильтровывать информационные и предупреждающие сообщения. Я обнаружил, что в этом выпуске github они жалуются на один и тот же вывод. Для этого в Python вы можете использовать решение здесь:
import os
import tensorflow as tf
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
Вы даже можете включить и выключить его по желанию с этим. Я проверяю максимально возможный размер пакета перед запуском своего кода, и при этом могу отключить предупреждения и ошибки.
Ответ 3
У меня была небольшая модель на процессоре, и у меня была та же проблема. Добавление: os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
разрешило его.