#tensorflow #image-processing #keras #tensorflow2.0
Вопрос:
Я пытаюсь выполнить прогнозы для модели классификации изображений для большого(800000) количества файлов изображений. Ниже приведен фрагмент кода, описывающий, как выглядит мой конвейер данных:
import tensorflow as tf BATCH_SIZE = 128 def configure_for_performance(ds): ds = ds.batch(BATCH_SIZE) ds = ds.prefetch(buffer_size=AUTOTUNE) tf.keras.backend.clear_session() return ds def decode_img(img): img = tf.io.decode_jpeg(img, channels=3) img = tf.image.resize(img, [IMG_HEIGHT, IMG_WIDTH]) return img def process_path(file_path): img = tf.io.read_file(file_path) img = decode_img(img) return img list_ds = tf.data.Dataset.list_files([filepath1,filepath2,...,filepathN], shuffle=False) files_list = list() for files in list_ds.as_numpy_iterator(): files_list.append(files.decode("utf-8")) test_ds = list_ds.map(process_path, num_parallel_calls=AUTOTUNE) test_size = test_ds.cardinality().numpy() test_ds = configure_for_performance(test_ds) test_ds = test_ds.map( lambda images: normalization_sequential_layer(images)) test_steps = test_size // BATCH_SIZE 1 score = tf.nn.softmax(model.predict(test_ds, steps=test_steps))
Я запускаю его на машине с 32 ядрами и 64 ГБ оперативной памяти(без графического процессора), но процесс выполняется довольно долго, а затем завершается сообщением Killed
, которое в ходе исследования я мог бы связать с проблемой нехватки оперативной памяти(утечка памяти происходит со временем, и через один момент она выходит из оперативной памяти). В ходе дальнейших исследований я вижу, что люди сталкиваются с проблемами ООМ , когда у них есть цикл for вокруг модели.предсказать, не уверен, что здесь может быть причиной.