Как создавать данные обучения и тестирования и подавать их в модель keras? - PullRequest
0 голосов
/ 24 февраля 2020

Это может быть очень простой вопрос, но как новичок ie в керасе и машинном обучении я не могу решить эту проблему. Это проблема классификации двух классов. Мой код написан (Источник: Kaggle) в керасе с бэкэндом Tensorflow.

У меня есть каталог, который содержит две папки с именами "cat" и "dog". Каждая папка имеет несколько изображений размером 224 x 224 pixels. Общий размер изображения составляет более 32 ГБ. Метка будет основана на именах папок, т. Е. Если имя папки содержит «cat», метка будет «0» или «1».

Фрагмент кода (Источник: Kaggle):

def get_images(directory):
    Images = []
    Labels = []  
    label = 0
    for labels in os.listdir(directory): #Main Directory where each class label is present as folder name.
        if labels == 'cat': #Folder contain 'cat' Images get the '0' class label.
            label = 0
        elif labels == 'dog':
            label = 1

        for image_file in os.listdir(directory+labels): #Extracting the file name of the image from Class Label folder
            image = cv2.imread(directory+labels+r'/'+image_file) #Reading the image (OpenCV)        
            image = cv2.resize(image,(224,224)) #Resize the image, Some images are different sizes. (Resizing is very Important)
            Images.append(image)
            Labels.append(label)

    return shuffle(Images,Labels,random_state=817328462) #Shuffle the dataset you just prepared. 817328462 

def get_classlabel(class_code):    
    labels = {0:'cat', 1:'dog'}
    return labels[class_code]

Images, Labels = get_images('./path_of_data_set') #Extract the training images from the folders.
Images = np.array(Images)
Labels = np.array(Labels)

def sequence():
    model = Models.Sequential()
    ...
model=sequence();
model.summary()

# Train the model with the new callback
model.fit(Images, Labels, batch_size=32, epochs=100, validation_split=0.10, verbose=1)

Если количество изображений .png невелико, мой код работает отлично. Проблема возникает, когда я использую данные изображения 32 ГБ. Тогда я получаю проблемы с памятью. Я проверил много сообщений на этот счет и нашел много решений, но я не могу реализовать их в этом коде.

Подскажите, пожалуйста, как я могу подать данные в модель, чтобы они не отображали проблемы с памятью?

1 Ответ

1 голос
/ 27 февраля 2020

Проверьте здесь. Подробности доступны. Возможно, вам придется добавить еще несколько строк. https://www.tensorflow.org/api_docs/python/tf/keras/preprocessing/image/ImageDataGenerator

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...