Распределенная память тензометра: распределение 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' разрешило его.