Является ли keras глубоким копированием данных при подгонке модели?

#python #tensorflow #memory #keras #deep-learning

#python #тензорный поток #память #keras #глубокое обучение

Вопрос:

Когда я запускаю свою модель (Unet для сегментации изображений), у меня появляются ошибки оперативной памяти:

 2020-11-19 11:25:18.027748: W tensorflow/core/framework/cpu_allocator_impl.cc:81] Allocation of 11998593024 exceeds 10% of free system memory.
2020-11-19 11:25:32.991088: W tensorflow/core/framework/cpu_allocator_impl.cc:81] Allocation of 11998593024 exceeds 10% of free system memory.
2020-11-19 11:25:46.109554: W tensorflow/core/framework/cpu_allocator_impl.cc:81] Allocation of 11998593024 exceeds 10% of free system memory.
 

График выделенной памяти:

введите описание изображения здесь

Я хотел знать, выполняет ли tensorflow глубокое копирование данных, и, если это так, есть ли способ избежать этого (без использования DataGenerator).

Основной сценарий:

 from data_preprocessing import data_utils,DataGenerator
from model import model_utils,loss_utils
from keras.callbacks import ModelCheckpoint, LearningRateScheduler
from sklearn.model_selection import train_test_split
import tensorflow as tf

if __name__ == "__main__":
    X,Y = data_utils.load_all()
    print("Checkpoint 1")
    strategy = tf.distribute.MirroredStrategy()
    with strategy.scope():
        Xtrain,Xtest,Ytrain,Ytest = train_test_split(X,Y, test_size = 1/5, shuffle = True)
        print("Checkpoint 2")
        unet = model_utils.unet(input_size=(256,256,1))
        print("Checkpoint 3")
        checkpointer = ModelCheckpoint('image_segm.hdf5',monitor='loss',verbose=1,save_best_only=True)
        historic = unet.fit(Xtrain,Ytrain,epochs=1,callbacks=[checkpointer],batch_size= 5)
        print("End")
 

Редактировать: использование tensorflow-gpu 2.20.0 в среде conda

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

1. Единственная копия данных, которая может быть сделана, — это на графический процессор, но это происходит пакетно. В любом случае эти сообщения не являются ошибками, просто предупреждениями.

Ответ №1:

Проверьте эту статью, она поможет вам решить проблему с датагеном https://stanford.edu /~shervine/блог/keras-как генерировать данные на лету

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

1. Я бы хотел не использовать генераторы данных (я бы хотел избежать вычисления данных между эпохами), как указано в моем вопросе ваша ссылка показывает устаревшее использование генераторов данных с помощью fit_generator.