Как обработать исключение в пользовательской последовательности Keras для fit_generator? - PullRequest
0 голосов
/ 07 июля 2019

Я реализую свою собственную последовательность (from tensorflow.python.keras.utils import Sequence). Тем не менее, некоторые плохие файлы, которые приводят к исключению на __getitem__. Если я использую model.fit_generator, тогда процесс обучения остановится, когда возникнет исключение.

Я хотел бы обработать исключение, так же просто, как пропустить этот пакет, когда есть исключение.

class DatasetSequence(Sequence):

    def __init__(self, image_path_list, density_path_list, random_crop_size=None):
        self.image_path_list = image_path_list
        self.density_path_list = density_path_list
        self.random_crop_size = random_crop_size
        self.batch_size = 1

    def __len__(self):
        return len(self.image_path_list)

    def __getitem__(self, idx):
        image_path = self.image_path_list[idx]
        density_path = self.density_path_list[idx]

        density = load_density(density_path)
        image = np.array(Image.open(image_path, "r").convert("RGB"))
        density = np.expand_dims(density, axis=3)  # add channel dim

        if self.random_crop_size is not None:
            # print("crop ", self.random_crop_size)
            image, density = random_crop(image, density, self.random_crop_size)        

        # preprocess vgg16 input
        im = image
        im = im/255.0
        im[:,:,0]=(im[:,:,0]-0.485)/0.229
        im[:,:,1]=(im[:,:,1]-0.456)/0.224
        im[:,:,2]=(im[:,:,2]-0.406)/0.225
        image = im

        # density = np.expand_dims(density, axis=3)  # add channel dim
        image = np.expand_dims(image, axis=0) # add batch dim
        density = np.expand_dims(density, axis=0) # add batch dim

        return image, density
...